天天看点

集成学习(ensemble learning)(一)一、集成学习概述二、个体学习器三、Boosting四、Bagging五、结合策略

文章目录

  • 一、集成学习概述
  • 二、个体学习器
  • 三、Boosting
  • 四、Bagging
  • 五、结合策略
    • 1、平均法
    • 2、投票法
    • 3、学习法
      • (1)核心图解
        • a、构建新的训练集
        • b、构建新的测试集
        • c、最终的训练与预测
      • (2)示例
        • a、构建新的训练集
        • b、构建新的测试集
        • c、多模型的处理
        • d、最终的训练与预测

集成学习(ensemble learning) 不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。

一、集成学习概述

基本思想:对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器。

集成学习(ensemble learning)(一)一、集成学习概述二、个体学习器三、Boosting四、Bagging五、结合策略

集成学习的两个主要问题:

  • 如何得到若干个体学习器;
  • 如何选择一种结合策略,将若干个体学习器集成一个强学习器。

二、个体学习器

  • 个体学习器是异质的,即所有个体学习器都是不全是同一个种类的。eg:有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。
  • 个体学习器是同质的(使用最广泛),即所有个体学习器都是同一个种类的。eg:决策树、神经网络。

同质个体学习器

  • 最常用的个体学习器:CART决策树和神经网络
  • 按个体学习器之间的依赖关系分类:
    • 强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是 boosting 系列算法;
    • 不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是 bagging 系列算法。

三、Boosting

基本思想:个体学习器之间存在强依赖关系,必须串行序列化生成的集成学习方法。对训练样本分布调整,主要是通过增加误分类样本的权重,降低正确分类样本的权重。

工作机制如下:

  • 先从初始训练集中学习一个基学习器;
  • 根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续收到更多关注;
  • 基于调整后的样本分布来训练下一个基学习器;
  • 如此反复,直到基学习器数目达到 T,最终将这 T 个基学习器进行加权结合。
    集成学习(ensemble learning)(一)一、集成学习概述二、个体学习器三、Boosting四、Bagging五、结合策略

Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。

四、Bagging

Bagging 的弱学习器之间没有依赖关系,可以并行生成。

集成学习(ensemble learning)(一)一、集成学习概述二、个体学习器三、Boosting四、Bagging五、结合策略

bagging的个体弱学习器的训练集是通过随机采样得到的。

通过

T

次的随机采样,我们就可以得到

T

个采样集,对于这

T

个采样集,我们可以分别独立的训练出

T

个弱学习器,再对这

T

个弱学习器通过集合策略来得到最终的强学习器。

随机采样

这里一般采用的是自助采样法(Bootstrap sampling),即有放回的采样

m

次,可以得到

m

个样本的采样集。由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。

随机森林

bagging的典型算法,个体分类器为决策树。随机森林的随机体现在两方面:

  • 样本随机采样;
  • 特征随机选择。

五、结合策略

不妨假设得到T个弱分类器为 { h 1 , h 2 , . . . , h T } \{h_1, h_2,...,h_T\} {h1​,h2​,...,hT​}

1、平均法

常用于回归预测问题,即对于若干个弱学习器的输出进行平均得到最终的预测输出。

算术平均:最简单的平均,其最终预测为

H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^Th_i(x) H(x)=T1​i=1∑T​hi​(x)

加权平均:对于每个弱分类器有一个权重 w w w,则最终预测为

H ( x ) = ∑ i = 1 T w i h i ( x ) H(x)=\sum_{i=1}^Tw_ih_i(x) H(x)=i=1∑T​wi​hi​(x)

其中, w i w_i wi​是弱分类器 h i h_i hi​ 的权重,通常有

w i ≥ 0 ,     ∑ i = 1 T w i = 1 w_i\geq0,\ \ \ \sum_{i=1}^Tw_i=1 wi​≥0,   i=1∑T​wi​=1

2、投票法

常用于分类问题。假设我们的预测类别是 { c 1 , c 2 , . . . , c k } \{c_1,c_2,...,c_k\} {c1​,c2​,...,ck​},对于任意一个样本 x x x,则T个弱分类器的预测结果分别是 ( h 1 ( x ) , h 2 ( x ) , . . . , h T ( x ) ) (h_1(x),h_2(x),...,h_T(x)) (h1​(x),h2​(x),...,hT​(x))。

相对多数投票法,即少数服从多数,预测结果中最多的类别为最终的分类类别。若不止一个类别获得最高票,则随机选择一个作为最终类别。

绝对多数投票法,也就是常说的票数过半,否则拒绝预测。

加权投票法,在每个弱分类器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。

3、学习法

平均法和投票法简单,但是可以学习误差大,则有了学习法,典型方法为 stacking。

概述:将个体机器学习器的结果结合在一起,即对学习器的结果再加上一层学习器。将训练集学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。(也就是常说的两层)

术语:

  • 弱学习器称为初级学习器,将用于结合的学习器称为次级学习器;
  • 对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。

(1)核心图解

集成学习(ensemble learning)(一)一、集成学习概述二、个体学习器三、Boosting四、Bagging五、结合策略

对于每一轮的 5-fold,Model 1都要做满5次的训练和预测。

a、构建新的训练集

  1. 先将训练集 D ( T r a i n i n g D a t a ) D(Training Data) D(TrainingData) 拆成 k k k 个大小相似但互不相交的子集 D 1 , D 2 , … , D k D_1,D_2,…,D_k D1​,D2​,…,Dk​;
  2. 令 D j ′ = D − D j D_j'= D - D_j Dj′​=D−Dj​,在 D j ′ D_j' Dj′​ 上训练一个弱学习器 L j L_j Lj​ 。将 D j D_j Dj​ 作为测试集,获得 L j L_j Lj​ 在 D j D_j Dj​ 上的输出 D j ′ ′ D_j'' Dj′′​ ;
  3. 步骤2可以得到 k k k 个弱学习器以及 k k k 个相应的输出 D j ′ ′ D_j'' Dj′′​ ,这个 k k k 个输出加上原本的类标构成新的训练集 D n D_n Dn​ ;
  4. 在 D n D_n Dn​ 训练次学习器 L L L , L L L 即为最后的学习器。

b、构建新的测试集

  1. 对于每个训练好的一个弱学习器 L j L_j Lj​,在测试集(Test Data,图中所示绿色部分,不要与上面的“测试集”混淆。注意:此处是测试集的全部)进行预测,将 k k k 次的预测结果取平均作为新的预测集。

c、最终的训练与预测

  1. 训练集为构建新的训练集步骤得到的训练集,测试集为构建新的测试集得到的测试集
  2. 训练分类器并预测。

(2)示例

a、构建新的训练集

Train Data有890行。(请对应图中的上层部分)

每1次的fold,都会生成 713行 小train, 178行 小test。我们用Model 1来训练 713行的小train,然后预测 178行 小test。预测的结果是长度为 178 的预测值。

这样的动作走5次! 长度为178 的预测值 X 5 = 890 预测值,刚好和Train data长度吻合。这个890预测值是Model 1产生的,我们先存着,因为,一会让它将是第二层模型的训练来源。

重点:这一步产生的预测值我们可以转成 890 X 1 (890 行,1列),记作 P1 (大写P)

b、构建新的测试集

Test Data 有 418 行。(请对应图中的下层部分,对对对,绿绿的那些框框)

每1次的fold,713行 小train训练出来的Model 1要去预测我们全部的Test Data(全部!因为Test Data没有加入5-fold,所以每次都是全部!)。此时,Model 1的预测结果是长度为418的预测值。

这样的动作走5次!我们可以得到一个 5 X 418 的预测值矩阵。然后我们根据行来就平均值,最后得到一个 1 X 418 的平均预测值。

重点:这一步产生的预测值我们可以转成 418 X 1 (418行,1列),记作 p1 (小写p)

c、多模型的处理

走到这里,你的第一层的Model 1完成了它的使命。

第一层还会有其他Model的,比如Model 2,同样的走一遍, 我们有可以得到 890 X 1 (P2) 和 418 X 1 (p2) 列预测值。

这样吧,假设你第一层有3个模型,这样你就会得到:

来自5-fold的预测值矩阵 890 X 3,(P1,P2, P3) 和 来自Test Data预测值矩阵 418 X 3, (p1, p2, p3)。

d、最终的训练与预测

来自5-fold的预测值矩阵 890 X 3 作为你的Train Data,训练第二层的模型

来自Test Data预测值矩阵 418 X 3 就是你的Test Data,用训练好的模型来预测他们吧。

继续阅读