机器学习模型融合方法概述

Kaggle比赛中提高成绩主要有3个地方

  • 特征工程
  • 调参
  • 模型融合

0. 简单的融合方法:Voting and Averaging

一般来讲,对于分类问题最简单的融合方法是投票;对于回归问题则是加权平均。bagging and boosting揭示基于此原理。

1. bagging

降低方差,减少过拟合,有放回抽样;

2. boosting

Boosting的思想是一种迭代的方法,每一次训练的时候都更加关心分类错误的样例,给这些分类错误的样例增加更大的权重,下一次迭代的目标就是能够更容易辨别出上一轮分类错误的样例。最终将这些弱分类器进行加权相加。

机器学习模型融合方法概述

3. stacking

该方法原理是通过训练一批(层)基分类器,然后将其分别预测训练集和测试集,对应地作为第二批(层)模型的训练集和测试集。举例:

Stacking模型本质上是一种分层的结构,这里简单起见,只分析二级Stacking.假设我们有3个基模型M1、M2、M3。

1. 基模型M1,对训练集train训练,然后用于预测train和test的标签列,分别是P1,T1
机器学习模型融合方法概述
对于M2和M3,重复相同的工作,这样也得到P2,T2,P3,T3。

2. 分别把P1,P2,P3以及T1,T2,T3合并,得到一个新的训练集和测试集train2,test2.

机器学习模型融合方法概述
3. 再用第二层的模型M4训练train2,预测test2,得到最终的标签列。

机器学习模型融合方法概述

其中要注意的是,用训练集训练后的模型预测训练集存在着严重的过拟合现象,所以在训练时多个基分类器进行交叉验证。 

我们以2折交叉验证得到P1为例,假设训练集为4行3列

机器学习模型融合方法概述
将其划分为2部分

机器学习模型融合方法概述


用traina训练模型M1,然后在trainb上进行预测得到preb3和pred4
机器学习模型融合方法概述
在trainb上训练模型M1,然后在traina上进行预测得到pred1和pred2
机器学习模型融合方法概述
然后把两个预测集进行拼接

机器学习模型融合方法概述

对于测试集T1的得到,有两种方法。注意到刚刚是2折交叉验证,M1相当于训练了2次,所以一种方法是每一次训练M1,可以直接对整个test进行预测,这样2折交叉验证后测试集相当于预测了2次,然后对这两列求平均得到T1。
或者直接对测试集只用M1预测一次直接得到T1。

完整流程如下图所示,Model1-5为第一层,Model6为第二层。

机器学习模型融合方法概述