模型融合
2022-12-28

 

Voting

针对分类问题,多个模型投票,少数服从多数,得到最终的预测结果。

选择模型时,要求模型是弱相关性的。

 

Averaging

针对回归问题,多个模型求(加权)均值,模型系数可以通过网格搜索获取。

 

Stacking与Blending

二者本质相同,混叫。

整体架构如下:

stacking整体架构

Stacking

其本质是使用模型对数据特征进行编码,从而得到新的特征,基于新特征,再训练模型进行最终预测。

  1. 生成新特征

    对训练数据,使用交叉验证训练模型,每一折都将得到预测结果,将所有预测结果合并起来,即为整个训练数据集的预测结果。对该预测结果,换一个角度,可以看成是新的特征数据。假设有n条训练数据,则经过一次模型训练,可以得到n×1的新特征数据(预测结果)。如果经过m个模型,则可以得到n×m的新特征数据。

    对测试数据,每一折都会对全量数据进行预测,可以采用取平均的方式得到对应的全量测试数据的预测结果。

    下图为1个模型得到的新特征数据:

    stacking1

  2. 预测

基于新的特征,训练新的模型,然后对新测试数据特征进行预测,得到最终的预测结果。

下图展示的是整体Stacking过程:经过LR、RF、GBDT共3个模型生成新特征数据,然后再训练XGB模型并进行预测。

stacking2

 

Blending

非交叉堆叠。整体做法和Stacking类似,不同之处是Blending不做交叉验证,在第一层模型训练时,将训练数据按照一定比例切分,比如7:3,70%的数据用作训练,30%的数据用作验证,然后将验证结果作为第二层模型的训练特征。

 

AdaBoost

由 Yoav Freund 和 Robert Schapire 提出,两人因此获得了哥德尔奖。

基本原理

模型集成的一种宏方法,目的是将若干个弱学习器组合为一个强学习器,核心是如何计算样本权重和学习器权重:

  1. 串行训练弱学习器;

  2. 权重调整

    • 调整弱学习器权重:根据弱学习的分类误差率调整该学习器的权重;
    • 调整样本权重:每一轮训练完成后,根据当前弱学习器的分类结果调整样本的权重,即训练正确的样本降低权重,训练错误的样本提高权重;
  3. 将若学习器组合为强学习器。

 

实现步骤

首先,定义如下符号:

  1. ht:第t轮的弱学习器,其中,1tT

  2. αt:第t轮弱学习器的权重

  3. wit:第t轮时,第i个样本的权重,其中,1iN

  4. yi:第i个样本的真实值

  5. εt:第t轮的分类误差率

  6. I(yy^):指示函数,表示当y不等于y^时为1,否则为0

  7. sign(x):指示函数

    (1)sign(x)={1x>00x=01x<0

下图为AdaBoost的过程图例(分类问题):

AdaBoost

接下来,以二分类问题(y(1,1))为例,开始AdaBoost的训练过程:

  1. 初始化训练数据的权值分布

    Wt=(w1t,w2t,,wNt),其中,t=1

  2. t=1,2,,T

    • 基于当前的权值分布Wt,训练基分类器:ht

    • 计算ht(x)在训练数据上的分类误差率

      (2)εt=i=1NP(ht(x)yi)=i=1NwitI(ht(xi)yi)=ierrwit

      由上式可知,分类误差率等于预测错误样本的权重

    • 计算若学习器ht的权重

      (3)αt=12ln1εtεt
    • 更新训练数据的权值分布

      (4)wit+1=witZteαtyiht(xi)Zt=i=1Nwiteαtyiht(xi)
  3. 构建弱分类器的线性组合

    (5)f(x)=t=1Tαtht(x)

    得到最终的分类器:

    (6)H(x)=sign(f(x))

公式简化

  1. 简化归一化因子Zt

    (7)Zt=i=1Nwiteαtyiht(xi)=icorrwiteαt+ierrwiteαt=(1εt)eαt+εteαt=(1εt)εt1εt2+εt1εtεt2=2εt(1εt)2
  2. 简化样本权重

    (8)wit+1=witZteαtyiht(xi)={witZteαtyi=ht(xi)witZteαtyiht(xi)={witZtεt1εt2yi=ht(xi)witZt1εtεt2yiht(xi)={wit2(1εt)yi=ht(xi)wit2εtyiht(xi)
  3. 有意思的事情

    对于预测正确的样本,其更新后的样本权重之和为0.5:

    (9)icorrwit2(1εt)=12(1εt)icorrwit=12(1εt)(1εt)=12

    对于预测错误的样本,结论一样。