Ensemble Strategy详解(附Stacking集成算法详解)

Ensemble Strategy详解

第四次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇的内容来自于《机器学习》和网上查阅到的资料,以及自己的一些见解。


  这篇文章旨在综述集成策略,内容并不涉及到公式推导,因此,这里就不再分开进行相关数学推导的阐述了,下面直接进入主题。

学习器结合的优点

  1.统计的原因
  由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则会减小这一风险。
  2.计算的原因
  学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险。
  3.表示的原因
  某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器则肯定无效,而通过结合多个学习器,由于假设空间有所扩大,有可能学的更好的近似。

平均法

  对数值型输出 h i ( x ) R ,最常见的结合策略是平均法。
  1.简单平均法

  2.加权平均法

  其中 ω i 是个体学习器 h i 的权值,通常要求 ω i > 0 , i = 1 T ω i = 1 ,权重一般是从训练数据中学习而得的(e.g. 估计出个体学习器的误差,然后令权重大小与误差大小成反比),但是现实任务中的训练样本通常不充分或存在噪声,这将使得学出的权重不完全可靠。尤其是对规模比较大的集成来说,要学习的权重比较多,较容易导致过拟合。因此,在个体学习器性能差异较大时使用加权平均法,而在个体学习器性能相近时使用简单平均法。

投票法

  对分类任务来说,学习器 h i 将从类别标记集合 { c 1 , c 2 , . . . , c N } 中预测出一个标记,最常见的结合策略是使用投票法。假设,将学习器 h i 在样本 x 上的预测输出表示为一个N维向量 ( h i 1 ( x ) ; h i 2 ( x ) ; . . . ; h i N ( x ) ) ,其中 h i j ( x ) 表示学习器 h i 将样本标记为 c j 的可能性。
  1.绝对多数投票法

  即若某标记得票过半数,则预测为该标记;否则拒绝预测。
  2.相对多数投票法

  即预测为得票最多的标记,若同时有多个标记获得最高票,则从中随机选取一个。
  3.加权投票法


  与加权平均法类似, ω i 是个体学习器 h i 的权值,通常要求 ω i > 0 , i = 1 T ω i = 1
  值得注意的是,不同类型的基学习器会产生不同类型的 h i j ( x ) 值,大体上可分为以下两种:
   类标记: h i j ( x ) { 0 , 1 } ,若 h i 将样本 x 预测为 c j 则取值为1,否则为0,这也称为“硬投票”。
   类概率: h i j ( x ) [ 0 , 1 ] ,相当于对后验概率 P ( c j | x ) 的一个估计。这也称为“软投票”。
  不同类型的 h i j ( x ) 值不可以混用,在这种情况下,类概率不可以直接进行比较,可以将其转换为类标记(例如将类概率最大的 h i j ( x ) 设为1,其他设为0),然后进行投票。

学习法

  当训练数据足够多时,可以使用另一个学习器来进行结合,这种策略称为“学习法”。其中,Stacking作为学习法的代表,本身也是一种集成学习算法,其中,个体基学习器称为“初级学习器”,用于结合的学习器称为“次级学习器”或“元学习器”。需要注意的是Stacking是“异构”的,即各个次级学习器是由不同算法训练而成的。Stacking先从初始训练集中基于各种不同的算法学习出初级学习器,然后生成一个新的数据集用于训练次级学习器。在这个新数据集中,每个初级学习器对原始样本的预测标记被作为新样本的输入特征,而原始样本的原始标记被作为新样本的输出特征,伪代码如下图所示。

  由于,次级学习器的训练集是由初级学习器的输出产生的,因此,如果像上图这样,直接使用初级学习器的训练集来产生次级训练集的话,可能会产生严重的过拟合。因此,一般通过使用留一法或交叉验证等方法,用初级学习器未使用的样本来产生次级学习器的训练样本,如下图所示(k折交叉验证)。

  如上图所示,原始数据集被划分为训练集和数据集,其中训练集用来产生次级学习器(这里未提及测试集,测试集是指不在任何训练过程中出现的数据)。假设,训练集(Training Data)的大小为10000,在5折交叉验证中,每一折的大小为2000。将其中4折数据(Learn)作为训练集,并基于算法1(Model 1)来产生一个学习器,之后将这个学习器用于预测剩下的那一折(Predict)的标记值向量(Predictions,大小为2000X1)。重复这一步骤,直至得到整个训练集的预测标记值,作为次级训练集的输入特征向量(New Feature,大小为10000X1)。
之后,采用其他算法(Model)重复上一步骤,产生不同的输入特征,例如,之后采用了SVM和GBDT,则会产生两个新的输入特征向量(大小均为10000X1),这三个输入特征向量组合起来(大小为10000X3)作为次级训练集的输入特征集,而输出特征集为每个原始样本的原始标记(大小为10000X1)。之后,由这个新的训练集训练得到次学习器,这样就得到了每个算法(Model)的权重。
最后,将上述过程涉及到的三个算法(Model)运用到整个原始训练集上,得到三个“异质”的初级学习器,再和次级学习器中的每个权值相结合,就得到了最终的集成学习器。注意到,在之前的描述中并没有使用到一开始的测试集(Test Data)。

猜你喜欢

转载自blog.csdn.net/qq_40793975/article/details/81022531