Datawhale Task5-模型融合

写在前面

本次笔记为DataWhale提供的数据挖掘入门-二手车交易价格预测。
Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结。

“如果你没有什么好的思路的话,那么就模型融合吧!”

把个体学习器结合在一起的时候使用的方法叫结合策略
Datawhale Task5-模型融合

Stacking

Stacking模型的本质是一种分层的结构,用了大量的基分类器,将其预测的结果作为下一层输入的特征,这样的结构使得它比相互独立训练模型能够获得更多的特征。

Stacking的主要思想是训练模型来学习使用底层学习器的预测结果,下图是一个5折stacking中基模型在所有数据集上生成预测结果的过程,次学习器会基于模型的预测结果进行再训练,单个基模型生成预测结果的过程是:

  • 首先将所有数据集生成测试集和训练集(假如训练集为10000,测试集为2500行),那么上层会进行5折交叉检验,使用训练集中的8000条作为喂养集,剩余2000行作为验证集(橙色)。
  • 每次验证相当于使用了蓝色的8000条数据训练出一个模型,使用模型对验证集进行验证得到2000条数据,并对测试集进行预测,得到2500条数据,这样经过5次交叉检验,可以得到中间的橙色的52000条验证集的结果(相当于每条数据的预测结果),52500条测试集的预测结果。
  • 接下来会将验证集的52000条预测结果拼接成10000行长的矩阵,标记为A1,而对于52500行的测试集的预测结果进行加权平均,得到一个2500一列的矩阵,标记为B1。
  • 上面得到一个基模型在数据集上的预测结果A1、B1,这样当我们对3个基模型进行集成的话,相于得到了A1、A2、A3、B1、B2、B3六个矩阵。
  • 之后我们会将A1、A2、A3并列在一起成10000行3列的矩阵作为training data,B1、B2、B3合并在一起成2500行3列的矩阵作为testing data,让下层学习器基于这样的数据进行再训练。
  • 再训练是基于每个基础模型的预测结果作为特征(三个特征),次学习器会学习训练如果往这样的基学习的预测结果上赋予权重w,来使得最后的预测最为准确。

Datawhale Task5-模型融合
使用stacking,组合1000多个模型,有时甚至要计算几十个小时。但是,这些怪物般的集成方法同样有着它的用处:

  1. 它可以帮你打败当前学术界性能最好的算法
  2. 我们有可能将集成的知识迁移到到简单的分类器上
  3. 自动化的大型集成策略可以通过添加正则项有效的对抗过拟合,而且并不需要太多的调参和特征选择。所以从原则上讲,stacking非常适合于那些“懒人”
  4. 这是目前提升机器学习效果最好的方法,或者说是最效率的方法human ensemble learning

Blending

Blending是一种和Stacking很相像的模型融合方式,它与Stacking的区别在于训练集不是通过K-Fold的CV策略来获得预测值从而生成第二阶段模型的特征,而是建立一个Holdout集,例如10%的训练数据,第二阶段的stacker模型就基于第一阶段模型对这10%训练数据的预测值进行拟合。

说白了,就是把Stacking流程中的K-Fold CV 改成 HoldOut CV。

以第一层为例,其5折HoldOut交叉验证将如下图所示:
  Datawhale Task5-模型融合
  
Stacking与Blending相比,Blending的优势在于:

  1. Blending比较简单,而Stacking相对比较复杂;
  2. 能够防止信息泄露:generalizers和stackers使用不同的数据;
  3. 不需要和你的队友分享你的随机种子;

而缺点在于:

  1. 只用了整体数据的一部分;

  2. 最终模型可能对留出集(holdout set)过拟合;

  3. Stacking多次交叉验证要更加稳健。

回归\分类的概率-融合:

  • 简单加权平均,结果直接融合
  • mean平均
  • median平均
  • 回归的Stacking

Voting投票机制

分为软投票和硬投票两种,其原理采用少数服从多数的思想。

  • 硬投票:对多个模型直接进行投票,不区分模型结果的相对重要度,最终投票数最多的类为最终被预测的类。
  • 软投票:和硬投票原理相同,增加了设置权重的功能,可以为不同模型设置不同权重,进而区别模型不同的重要度。