文章原地址
原作者:Linghao Zhang
1. 直观感受
- pandas 导入数据
- matplotlib 绘图
2. 数据预处理
- 缺失数据
- 异常数据
- 分类变量转换为独热编码(one-hot)
3. 特征工程
- 特征选取
筛选特征,可以组合几个特征为一个新特征
Random Forest - 特征编码
对分类变量进行独热编码,对于琐碎的值可以归为“其他”类
4. 模型选择
常用:
- Gradient Boosting
- Random Forest
- Extra Randomized Trees
较弱的模型 - SVM
- Linear Regression
- Logistic Regression
- Neural Networks
4.1 模型训练
通过Grid Search暴力搜索,选取候选参数
Random Forest 一般在 max_features 设为 Feature 数量的平方根附近得到最佳结果。
- 划分出训练集,测试集(数据划分方式自选)
- 通过Grid Search遍历参数 训练模型 根据测试集预测的准确度确定合适参数范围
- 多次重复步骤2 直到找到合适范围
- 找到合适参数,观测验证集随模型训练迭代的预测误差,找到早停点
4.2 交叉验证
5折或者10折即可
5. 模型集合
将多个基础模型集合成一个模型 可同时降低方差与偏差。
- Bagging:使用训练数据的不同随机子集来训练每个 Base Model,最后进行每个 Base Model 权重相同的 Vote。也即 Random Forest 的原理。
- Boosting:迭代地训练 Base Model,每次根据上一个迭代中预测错误的情况修改训练样本的权重。也即 Gradient Boosting 的原理。比 Bagging 效果好,但更容易 Overfit。
- Blending:用不相交的数据训练不同的 Base Model,将它们的输出取(加权)平均。实现简单,但对训练数据利用少了。
- Stacking
Base Model 之间的相关性要尽可能的小
Ensemble 的 Diversity 越大,最终 Model 的 Bias 就越低
Base Model 之间的性能表现不能差距太大

6. Pipeline
- 自动特征转换
- 模型参数自动选取
- 自动集合模型