生活大实惠:O2O优惠券使用预测

原文链接: https://tianchi.aliyun.com/notebook-ai/detail?postId=58107

转载的博主blog链接在此
wepon第一名代码

workflow

数据探索 EDA

  • 熟悉数据的分布、特点等等,为数据预处理和特征工程做基础。

数据预处理

  • 不属于同一量纲
  • 信息冗余
  • 定性特征不能直接使用
  • 将定性特征转换为定量特征
  • 存在缺失值
  • 信息利用率低

特征工程: 主要是来自wepe的特征
特征主要分为这几类:

  • 用户线下相关的特征
  • 用户线上相关的特征
  • 商家相关的特征
  • 用户-商家交互特征
  • 优惠券相关的特征
  • 其它特征

这里对于特征的选择,我大量参考了别人的代码和第一届比赛后的开源代码。首先搜集到尽可能足够多的特征,然后再去判断特征是否有用,考虑是否删除还是其他操作。

  • 特征选择时候可以考虑使用过拟合训练的方法,使用100%数据集训练,使用100%数据集测试,观察auc
  1. 当auc距离1越远的时候,说明你的特征不足够多,再去探索寻找更多的特征,直到这里的auc接近1
  2. 然后,过拟合训练完成后,输出特征重要性。删除一些特征重要性低的特征,不断过拟合训练,保持auc基本不变。
  3. 最后你得到的是尽可能少的特征数量,但又能足够表示这批数据的特性。

模型选择: 尝试尽可能多的回归和分类模型

  • wepe当时只使用了三个模型,这里你可以尝试更多的模型,比他做的更好。
  • 尝试所有分类回归的模型,只要这些模型的表现还可以,就尽可能的单模型调到最优。
    (使用CV本地验证即可,一般来说本地CV和线上LB是基本一致的)
  • 我当时只是使用了8个模型,然后直接blending,加权融合(我首先单个模型依次提交,给auc高的模型打高的权重,但这其实是很容易过拟合的)
  • 训练多个基模型完成后,使用stacking或者bagging进行模型融合

建议 or 上分指南

  • 特征一定要保证合适
  • 训练足够多的基模型,使用stacking
    第一层使用基模型训练出多个预测的auc
    第二层使用逻辑回归(或者其他模型)来拟合第一层的输出作为这一层的输入,然后输出最终的auc

tips:集成学习
常见的 Ensemble 方法:
Bagging
Boosting
Blending
Stacking
从理论上讲,Ensemble 要成功,有两个要素:
Base Model 之间的相关性要尽可能的小
Base Model 之间的性能表现不能差距太大

你可能感兴趣的:(天池比赛)