https://www.datafountain.cn/competitions/287/details
feature_engineering.py提取特征,xgboost_predict.py使用单模型xgboost进行预测,
stacking.py使用stacking的方法进行预测
利用招商银行客户的个人属性、信用卡消费数据,以及部分客户在掌上生活APP上的一个月的操作行为日志,设计合理的特征工程与模型算法方案,
预测客户在未来一周内(4月1日-7日),是否会购买掌上生活APP上的优惠券(包括饭票、影票等)。评测指标:AUC。
- 2018.6.5-2018.6.25
数据可视化探索,划分验证集,特征工程 - 2018.6.26-2018.7.5
使用单模型进行预测,包括树模型:GBDT,RF,CatBoost,LightGBM,XGBoost以及线性模型 lasso。其中XGBoost效果最好,LightGBM次之,GBDT,RF和CatBoost 效果一般,lasso最差。A榜阶段使用的是单模型XGBoost, 成绩0.87049,连续两周排名前十,最后排名21,B榜成绩0.85975。 - 2018.7.5-2018.7.15
模型融合。尝试了两种方案。一种是直接将概率值进行加权融合,例如: 0.65 * XGBoost + 0.35 * LightGBM,结果提升不大。另一种是较复杂的stacking,效果提升显著。B榜成绩0.86314,最终排名第二。
本赛题提供了招商银行客户的个人属性、信用卡消费数据以及部分客户在掌上生活APP上的一个月的操作行为日志两个表。分析数据发现,其中个人属性、信用卡消费
数据有100000个用户的记录,操作行为日志有48875个用户的记录。训练集中的正负样本比例为:0.04134,正负样本不均衡。在脱敏的个人属性、信用卡消费数据上,
我们尝试了特征组合,分段统计,使用树模型构造新特征与原有特征合并后,一起训练等方法,结果发现,效果提升不明显,且容易造成线下得分提升,线上得分下降
的过拟合现象。最后,我们直接将个人属性、信用卡消费数据作为训练集的一部分,并没有构造新的特征。在APP操作行为日志上,我们提取了包括事件类型特征,
用户点击模块特征,用户触发时间特征以及点击模块-时间交叉特征共四种特征。
关于特征筛选,我们基于xgboost来做特征选择,xgboost模型训练完成后可以输出特征的重要性,据此可以保留Top N个特征,从而达到特征筛选的目的。
经过筛选最后保留的特征如下所示:
- 用户在APP上的操作次数
- 用户在微信小程序H5上的操作次数
- 用户触发时刻的均值
- 用户触发时刻的方差
- 用户触发时刻的最小值
- 用户触发时刻的最大值
- 用户触发时刻的最小最大值之差
- 用户触发日期的均值
- 用户触发日期的方差
- 用户触发日期的最小值
- 用户触发日期的最大值
- 用户触发日期的最小最大值之差
1)将点击模块看作整体。
例如,饭票-代金券-门店看作是一种点击模块。
1.1)用户点击的模块次数
1.2)用户点击的模块种类数
2)将点击模块切分。
例如,将饭票-代金券-门店切分成三个级别,饭票
看作是第一个级别里的一种,代金券看作是第二个级别里的一种。构造此特征的步骤如下:
1.将用户的点击模块切分成三个级别
2.对同一个级别内的不同模块进行编码
3.分别统计用户对各个级别各个模块的点击次数
4.最后形成除USRID外共815列的特征表
例如:特征EVT_1_num_12表示用户对第一个级别的第12个模块的点击次数,特征EVT_2_num_21表示用户对第二个级别的第21个模块的点击次数,依此类推。
这里将点击模块看作整体。
1)将一天划分成多个时间段:
- 用户在0:00-6:00的模块点击次数。
- 用户在7:00-9:00的模块点击次数。
- 用户在10:00-12:00的模块点击次数。
- 用户在13:00-14:00的模块点击次数。
- 用户在15:00-17:00的模块点击次数。
- 用户在18:00-20:00的模块点击次数。
- 用户在21:00-23:00的模块点击次数。
2)按周划分:
- 用户在周一的模块点击次数。
- 用户在周二的模块点击次数。
- 用户在周三的模块点击次数。
- 用户在周四的模块点击次数。
- 用户在周五的模块点击次数。
- 用户在周六的模块点击次数。
- 用户在周日的模块点击次数。
A榜阶段,我们使用的是单模型XGBoost。在B榜阶段,我们采用了stacking的模型融合方案。从树模型中挑选了结果较好的XGBoost, LightGBM以及GBDT作为
第一层的基模型(base models),同时为了多样性,选择线性模型lasso作为第二层的元模型(meta model)。结果表明,相比单模型,
使用多个具有差异性的强学习算法进行融合,可以给性能带来较大的提升。B榜成绩提升了0.339个百分点。