- 分析背景及目的
本次分析的数据源来自:hotel_bookings-数据集-kaggle官网,是一份酒店预订的信息数据,共119391行,数据集各个待分析字段的含义如下:
数据类型 | 字段名 | 字段含义 |
房间信息 | hotel | 酒店类型 |
reserved_room_type | 预订房型 | |
assigned_room_type | 实际房型 | |
adr | 客房日均价 | |
客户信息 | adults | 入住成人数 |
children | 入住儿童数 | |
babies | 入住婴儿数 | |
meal | 餐食类型 | |
country | 数据来源国家 | |
is_repeated_guest | 是否回头客 | |
previous_cancellations | 之前的取消预订次数 | |
previous_bookings_not_canceled | 之前的未取消预订次数 | |
agent | 旅行社id | |
company | 公司/实体id | |
customer_type | 客户类型 | |
required_car_parking_spaces | 车位需求数 | |
total_of_special_requests | 特殊需求数 | |
订单信息 | is_canceled | 是否取消预订 |
lead_time | 提前预订时长 | |
arrival_date_year | 预订到店年份 | |
arrival_date_month | 预订到店月份 | |
arrival_date_week_number | 预订到店周数 | |
arrival_date_day_of_month | 预订到店日期 | |
stays_in_weekend_nights | 预订住宿晚数(周末) | |
stays_in_week_nights | 预订住宿晚数(周中) | |
market_segment | 市场细分类型 | |
distribution_channel | 订单渠道 | |
booking_changes | 预订更改次数 | |
deposit_type | 押金类型 | |
days_in_waiting_list | 确认预订前的等待天数 | |
reservation_status | 预订最终状态 | |
reservation_status_date | 预订最终状态更新日期 |
- 分析思路
建立随机森林、XGBoost、逻辑回归模型分别预测旅客是否会取消预订,并从查准率、查全率、F1值及AUC面积等指标对模型进行对比。
- 分析过程
- 数据预处理
1. 数据删除
[1].删除掉与取消订单无关的“预订最终状态更新日期”数据列。
2. 数据增删及格式处理
[1].将“旅行社id”和“公司id”数据列中的缺失值赋值为0,并相应地创建两个新的数据列分别将不为0的数据替换为“Yes”,为0的数据替换为“No”;将数据列“是否为回头客”中为1的数据替换为“Yes”,为0的数据替换为“No”;创建新的数据列“房型是否一致”,若预订房型与实际房型一致则为“Yes”,否则为“No”。
[2].删除目前已经无用的数据列:“预订房型”、“实际房型”、“旅行社id”、“公司id”。
[3].将“城市”和“儿童”数据列中的缺失值赋值为非空值的众数。
[4].对用于分类的特征进行处理:将字符串型分类特征转化为数值型;将连续型分类特征进行标准化处理。
[5].计算分类特征与“是否取消”数据列的相关系数,删除相关性过高的数据列,防止后续模型过拟合。
2. 建模预测
- 随机森林模型
具体步骤如下:
[1].建立随机森林模型,通过10折交叉验证法更好地利用训练数据。
[2].通过对模型进行训练和测试,输出测试集的两种结果(是否取消预订)的预测概率并最终得到预测结果。
[3]. 画出模型的ROC曲线并计算AUC面积。ROC曲线图像如下图所示:
2. XGBoost模型
具体步骤如下:
[1].建立XGBoost模型,通过10折交叉验证法更好地利用训练数据。
[2].通过对模型进行训练和测试,输出测试集的两种结果(是否取消预订)的预测概率并最终得到预测结果。
[3]. 画出模型的ROC曲线并计算AUC面积。ROC曲线图像如下图所示:
3. 逻辑回归模型
具体步骤如下:
[1].建立逻辑回归模型,通过10折交叉验证法更好地利用训练数据。
[2].通过对模型进行训练和测试,输出测试集的两种结果(是否取消预订)的预测概率并最终得到预测结果。
[3]. 画出模型的ROC曲线并计算AUC面积。ROC曲线图像如下图所示:
3.模型比较
分别计算三类模型的查准率、查全率、F1值及AUC面积等指标,具体数值如下表所示。
指标 | 查准率 | 查全率 | F1值 | AUC面积 |
随机森林 | 0.89 | 0.89 | 0.89 | 0.96 |
XGBoost | 0.87 | 0.88 | 0.87 | 0.95 |
逻辑回归 | 0.80 | 0.80 | 0.79 | 0.87 |
通过图表对比发现,随机森林模型的预测效果最佳,F1值达到0.89,AUC面积达到0.96。