二分类问题比赛:泰坦尼克号生存预测——Kaggle
回归问题比赛:二手车交易价格预测——天池
一、赛题理解
二、EDA探索性数据分析
1)载入数据科学和可视化库
2)载入数据,数据总览
data.head()、data.shape、data.describe()数组型相关统计量、data.info()数据类型、data.columns列名
3)数据缺失和异常
data.isnull().sum()查看每列存在nan情况、data['列名'].value_counts()计算每列有多少不同值,和每个不同值出现的频数
4)了解预测值的分布
总体分布概况、偏度和峰度、查看预测值的具体频数
5)特征分为类别特征、数字特征
类比特征:unique分布、箱型图、小提琴图、柱形图可视化、每个类别频数可视化
数字特征:相关性分析、偏度峰度、每个数字特征的分布可视化、数字特征相互之间的关系可视化、多变量相互回归关系可视化
三、特征工程
1)异常处理
通过箱线图或者3-sigma分析删除异常值
Box-Cox转换,处理有偏分布
长尾截断
2)缺失值处理
不处理,针对类似XGBoost等树模型
删除,缺失数据太多
插值不全,包括均值、中位数、众数、建模预测、多重插补、压缩感知补全、矩阵补全,缺失个数不是特别多
分箱,缺失值一个箱,缺失值样本适中。非连续值特征属性(例如类别属性)把NAN作为一个新类别,加入类别特征中;连续值特征属性,考虑给定一个step,离散化,把NAN作为一个类型加入属性类别中。
3)特征处理
3.1)特征归一化/标准化
标准化,转换为标准正态分布
归一化,转换到 [0,1] 区间
针对幂律分布,可以采用公式: log((1+x)/(1+median))
3.2)数据分桶
等频分桶
等距分桶
Best-KS 分桶(类似利用基尼指数进行二分类)
卡方分桶
注:不能直接处理字符串值,先映射成整数。参考:定性和定量
4)特征构造
构造统计量特征,报告计数、求和、比例、标准差等
时间特征,包括相对时间和绝对时间,节假日,双休日等
地理信息,包括分箱,分布编码等方法
非线性变换,包括 log/ 平方/ 根号等
特征组合,特征交叉
5)特征选则
过滤式(filter):先对数据进行特征选择,然后在训练学习器,常见的方法有 Relief/方差选择法/相关系数法/卡方检验法/互信息法
包裹式(wrapper):直接把最终将要使用的学习器的性能作为特征子集的评价准则,常见方法有 LVM(Las Vegas Wrapper)
嵌入式(embedding):结合过滤式和包裹式,学习器训练过程中自动进行了特征选择,常见的有 lasso 回归
(正则化选择特征。正则化项越大,模型越简单,系数越小。正则化项增大到一定程度时所有特征系数都会趋于0,这个过程会有一部分特征的系数先变为0,实现了特征选择的过程。线性回归、逻辑回归、决策树都可以当作正则化选择特征的基学习器。)
6)特征提取(降维)
PCA、LDA等
参考:机器学习特征工程
四、建模调参
模型性能验证
评价函数与目标函数
交叉验证方法
留一验证方法
针对时间序列问题的验证
绘制学习率曲线
绘制验证曲线
模型调参
贪心调参
网格调参
贝叶斯调参
五、模型融合
简单加权融合
回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean)
分类:投票(Voting)
综合:排序融合(Rank averaging),log融合
stacking/blending
构建多层模型,并利用预测结果再拟合预测。
bagging(随机森林)
有放回抽样
boosting(GBDT、XGBoost、AdaBoost)
迭代,每一次训练都更加关心分类错误的样例,增加更大的权重
参考:模型融合、Stacking模型融合