一.模型融合简介
1.1模型融合和集成模型的区别
西瓜书中提出,集成学习的基学习器可以是同质的,也可以是异质的。
就工业界来说,一般默认的RF、xgboost、catboost、lightGBM都是同质学习器。其中RF为stacking,基学习器为决策树,理论上可以异质;后三种为boosting,基学习器可改变,但依然是同质。根据子模型之间有没有关系,可以分为相关(boosting第i个子模型依赖于第i-1个子模型)和独立(stacking每个子模型是相互独立的)。相关的话,只能实现串行算法。独立的话,可以并行实现。同时,从bias(偏差)和virance(方差)的角度讲。相关的模型主要是在降低bias,独立的模型主要是在降低variance。
模型融合的主要目的就是把不同质的学习器,例如基学习器分别为RF、lightGBM、SVM、RNN等进行融合,意义如下。
1.2模型融合的意义
个体学习器存在差异,主要表现在以下三个方面:
- 不同训练数据:数据集使用比例、预处理方法 (缺失值填补、特征工程等)
- 不同模型结构:RF、XGBoost、LightGBM、CatBoost、CNN、LSTM等,线性、非线性、时序、非时序
- 不同超参:随机种子数、权重初始化、收敛相关参数 (例如学习率、batch size、epoch、早停步数)、损失函数、子采样比例等
以上差异导致模型在不同情况下拟合的效果不同,通过模型融合,找出不同情况下效果最佳的结果。
二.融合方法
2.1投票法
适用于分类任务,对多个学习器的预测结果进行投票,即少数服从多数,投票的模型要在3个及以上。
**硬投票:**对多个模型直接进行投票,不区分模型结果的相对重要度,最终投票数最多的类为最终被预测的类。
**软投票:**增加了设置权重的功能,可以为不同模型设置不同权重,进而区别模型不同的重要度。
加权投票法:加权的权重可以人工主观设置或者根据模型评估分数来设置权重。
**相对多数投票法:**最终结果在投票中票数最多。
**绝对多数投票法:**最终结果必须在投票中占一半以上。
案例:
2014年KDD Cup上,Marios Michailid对所有结果文件计算Pearson系数,最后选取其中相关性小的模型结果进行投票,分数获得提升。
2.2平均分
适用于回归、分类 (针对概率) 任务,对多个学习器的预测结果进行平均,可以平滑结果,从而减少过拟合。
有n个模型,预测结果分别是:
y
^
1
,
y
^
2
,
y
^
3
,
.
.
.
,
y
^
n
\hat{y}_{1}, \hat{y}_{2},\hat{y}_{3},...,\hat{y}_{n}
y^1,y^2,y^3,...,y^n
**简单算术平均法:**就多个模型预测的结果进行平均。
y
ˉ
=
1
n
(
y
^
1
,
y
^
2
,
y
^
3
,
.
.
.
,
y
^
n
)
\bar{y} =\frac{1}{n} (\hat{y}_{1}, \hat{y}_{2},\hat{y}_{3},...,\hat{y}_{n})
yˉ=n1(y^1,y^2,y^3,...,y^n)
**几何平均法:**受极端值的影响较算术平均法小。
y
ˉ
=
y
^
1
×
y
^
2
×
y
^
3
×
.
.
.
×
y
^
n
n
\bar{y} =\sqrt[n]{\hat{y}_{1}\times \hat{y}_{2}\times\hat{y}_{3}\times...\times\hat{y}_{n}}
yˉ=ny^1×y^2×y^3×...×y^n
**加权算术平均法:**权重可以人工主观或根据模型分数来设置。考虑不同模型的能力不同,对最终结果的贡献也有差异,需要用权重来表征不同模型的重要性。
y
ˉ
=
w
1
y
^
1
+
w
2
y
^
2
+
w
3
y
^
3
+
.
.
.
+
w
n
y
^
n
w
1
+
w
2
+
w
3
+
.
.
.
+
w
n
\bar{y} =\frac{w_{1}\hat{y}_{1} +w_{2}\hat{y}_{2}+w_{3}\hat{y}_{3}+...+w_{n}\hat{y}_{n}}{w_{1}+w_{2}+w_{3}+...+w_{n} }
yˉ=w1+w2+w3+...+wnw1y^1+w2y^2+w3y^3+...+wny^n
案例
加权平均:A,B,C三个模型,预测效果的排名分别是1,2,3,那么给这三个模型的权重分别设置3/6,2/6,1/6。
2.3排序法
对于平均法来说,如果两个模型预测的结果范围不在一个量级或者相差太大,预测值范围较小的模型对最终结果造成的影响不大。一般使用AUC作为评价指标时,常用排序平均法。
排序法的具体步骤如下:
- 对预测结果进化排序;
- 对排序序号进行平均;
- 对平均序号进行归一化;
案例
招商银行的 “消费金融场景下的用户购买预测” 的冠军方案中,对赛题方的AUC评分标准,采用了基于排序的模型融合方法。
2.4.堆叠法Stacking
Stacking的思路是基于原始数据,训练出多个基学习器,然后将基学习器的预测结果组合成新的训练集,去训练一个新的学习器。Stacking分为以下三类:
- 单层Stacking
- 多层Stacking
- 其它技术与Stacking的结合
(1) 单层Stacking
在基学习器上只堆叠一层次级学习器,这也是最常见的Stacking结构。
基学习器可以是同质或异质的模型,次级模型尽量选择简单的线性模型,在传统做法中是选用逻辑回归模型,也能使用非线性模型。
案例
”天池零基础入门金融风控-贷款违约预测“ 一赛中,TOP6的方案使用了LightGBM,CatBoost和XGBoost作为基学习器,然后利用Pearson相关系数分析模型结果差异性,选取差异较大的结果文件,再输入第二层元学习器RF进一步融合结果。
单层Stacking+K折交叉验证:
将数据进行交叉验证,每个基学习器针对数据学习多个结果,然后将结果进行平均、stacking。
案例
3个基学习器,数据进行5折交叉验证,每个基学习器有5个预测结果,将预测结果取平均,然后再经过次级学习器。
(2)多层Stacking
多个基学习器+多个次级学习器+终极学习器
(3)其他技术与Stacking的结合
无监督+Stacking
案例
Kaggle的“Otto Group Product Classification Challenge”中,Mike Kim提出使用t-SNE将数据降维到2或3维,然后用非线性元学习器来融合。
2.5混合法Blending
在Stacking中,基学习器和元学习器本质上都是用同一训练集训练的 (虽然输入的x不一样,但标签y一样),这就会造成信息泄露,从而导致元学习器过拟合我们的数据集。blending对原始数据集先划分出一个较小的留出集,比如10%训练集被当做留出集,那么Blending用90%的数据做基学习器的训练,而10%留出集用作训练元学习器,这样基学习器和元学习是用不同数据集来训练的。
2.6Bagging
bagging的基本思想是有放回的采样。具体做法为:
- 采用有放回的方法,基于原始数据集产生大量的子集。
- 基于这些子集训练基模型base model
- 模型是并行训练并且相互独立的
- 最终的预测结果取决于多个模型的预测结果
案例
对于包含m个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集,这样训练集中有接近36.8%的样本没有被采到。按照相同的方式重复进行,我们就可以采集到T个包含m个样本的数据集,从而训练出T个基学习器,最终对这T个基学习器的输出进行结合。
2.7Boosting
增加前一个基学习器在训练过程中预测错误样本的权重,使得后续基学习器更加关注这些打标错误的训练样本,尽可能纠正这些错误,一直向下串行直至产生需要的T个基学习器,Boosting最终对这T个学习器进行加权结合,产生学习器委员会。
- 基于原始数据集构造子集
- 初始的时候,所有的数据点都给相同的权重
- 基于这个子集创建一个基模型
- 使用这个模型在整个数据集上进行预测
- 基于真实值和预测值计算误差
- 被预测错的观测值会赋予更大的权重
- 再构造一个模型基于之前预测的误差进行预测,这个模型会尝试矫正之前的模型
- 类似地,构造多个模型,每一个都会矫正之前的误差
- 最终的模型(strong learner)是所有弱学习器的加权融合