数据分析,数据清洗,特征工程,模型训练和验证等四个大的模块
数据分析
- 特征变量的分布
- 目标变量的分布
- 连续
- 值域范围大,考虑对数变换(结果需要逆变换)
- ,变换为正态分布
- 离散值
- 变量之间的分布和相关度,发现高相关和共线性的特征
数据清洗
预处理
- 特征缺失值的处理
- 连续值:
- 偏正态分布用均值代替,保持数据均值
- 长尾分布用中值代替,避免受outlier影响
- 离散
- 众数代替
- 文本数据
。。。
特征工程
特征决定了效果的上限。case by case
特征变换
主要针对一些长尾分布的特征,进行幂变换或对数变换,使得模型(LR or DNN)更好的优化。
树模型(RF, GBDT) 对单调的函数变换不敏感。原因在于树模型求解点的时候只考虑排序分位点。
特征编码
离散的类别特征。常用LabelEncoder, OneHotEncoder
对于取值较多的类别特征,OneHotEncoder会导致特征矩阵巨大,影响效果:
- 统计取值在样本中的频率,取Top N的取值做编码,剩下的类别分到‘其他类’,N作为超参数需要调优。
- 统计每个ID特征的一些统计量代替为特征
- 参考word2vec,将每个类别特征的取值映射到一个连续的向量,对这个向量进行初始化,跟模型一起训练。训练结束后,可以同时得到每个ID的Embedding。具体的使用方式,可以参考 Rossmann 销量预估竞赛第三名的获奖方案,。
对于 Random Forest 和 GBDT 等模型,如果类别特征存在较多的取值,可以直接使用 LabelEncoder 后的结果作为特征。