- 分析背景及目的
 
本次分析的数据源来自: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。










