集成学习(ensemble learning)(一)


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

一、集成学习概述

基本思想:对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器。
在这里插入图片描述
集成学习的两个主要问题

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

二、个体学习器

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

同质个体学习器

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

三、Boosting

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

工作机制如下:

  • 先从初始训练集中学习一个基学习器;
  • 根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续收到更多关注;
  • 基于调整后的样本分布来训练下一个基学习器;
  • 如此反复,直到基学习器数目达到 T,最终将这 T 个基学习器进行加权结合。
    在这里插入图片描述

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

四、Bagging

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)=T1i=1Thi(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=1Twihi(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 wi0,   i=1Twi=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)核心图解

在这里插入图片描述
对于每一轮的 5-fold,Model 1都要做满5次的训练和预测。

a、构建新的训练集
  1. 先将训练集 D ( T r a i n i n g D a t a ) D(Training Data) DTrainingData 拆成 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=DDj,在 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,用训练好的模型来预测他们吧。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值