集成学习算法_Boosting算法

什么是boosting

  • 随着学习的积累从弱到强
  • 简⽽⾔之:每新加⼊⼀个弱学习器,整体能⼒就会得到提升
  • 代表算法:Adaboost,GBDT,XGBoost,LightGBM

实现过程

1.训练第⼀个学习器
在这里插入图片描述

2.调整数据分布
在这里插入图片描述

3.训练第⼆个学习器
在这里插入图片描述

4.再次调整数据分布
在这里插入图片描述

5.依次训练学习器,调整数据分布
在这里插入图片描述

6.整体过程实现
在这里插入图片描述

bagging集成与boosting集成的区别

  • Bagging主要⽤于提⾼泛化性能(解决过拟合,也可以说降低⽅差)
  • Boosting主要⽤于提⾼训练精度 (解决⽋拟合,也可以说降低偏差)

在这里插入图片描述

AdaBoost介绍

构造过程细节

  • 步骤⼀:初始化训练数据权重相等,训练第⼀个学习器。
    • 该假设每个训练样本在基分类器的学习中作⽤相同,这⼀假设可以保证第⼀步能够在原始数据上学习基 本分类器H1(x)
  • 步骤⼆:AdaBoost反复学习基本分类器,在每⼀轮m = 1, 2, …, M顺次的执⾏下列操作:
    • (a) 在权值分布为Dt的训练数据上,确定基分类器;

    • (b) 计算该学习器在训练数据中的错误率: εt = P(ht (xt ) ≠ yt )

    • (c) 计算该学习器的投票权重:
      在这里插入图片描述

    • (d) 根据投票权重,对训练数据重新赋权

在这里插入图片描述

将下⼀轮学习器的注意⼒集中在错误数据上 重复执⾏a到d步,m次;

  • 步骤三:对m个学习器进⾏加权投票
    在这里插入图片描述

案例

给定下⾯这张训练数据表所示的数据,假设弱分类器由xv产⽣,其阈值v使该分类器在训练数据集上的分类误差率最 低,试⽤Adaboost算法学习⼀个强分类器。
在这里插入图片描述

问题解答:

  • 步骤⼀:初始化训练数据权重相等,训练第⼀个学习器:
    • D1 = (w11, w12, …, w110,)
    • w1i = 0.1, i = 1, 2, …, 10
  • 步骤⼆:AdaBoost反复学习基本分类器,在每⼀轮m = 1, 2, …, M顺次的执⾏下列操作:
    • 当m=1的时候:
      • (a)在权值分布为D1的训练数据上,阈值v取2.5时分类误差率最低,故基本分类器为: 6, 7 , 8被分错
        在这里插入图片描述

      • (b)计算该学习器在训练数据中的错误率:ε1 = P(h (x1 ) ≠ y1 ) = 0.3

      • (c)计算该学习器的投票权重:

在这里插入图片描述

      • (d)根据投票权重,对训练数据重新赋权:
        • D2 = (w21 , w22 , …, w210 ,)

        • 根据下公式,计算各个权重值
          在这里插入图片描述

        • 经计算得,D2 的值为: D2 = (0.07143, 0.07143, 0.07143, 0.07143, 0.07143, 0.07143, 0.16667, 0.16667, 0.16667, 0.07143)
          在这里插入图片描述

      计算过程: H1(x) = sign[0.4236 * h1(x)]
      - 分类器H (x)在训练数据集上有3个误分类点。
      -

    • 当m=2的时候:
      • (a)在权值分布为D2 的训练数据上,阈值v取8.5时分类误差率最低,故基本分类器为: 3,4,5被分错
        在这里插入图片描述

      • (b)计算该学习器在训练数据中的错误率:ε2 = P(h2 (x2 ) ≠ y2 ) = 0.2143

      • (c)计算该学习器的投票权重:

在这里插入图片描述

      • (d)根据投票权重,对训练数据重新赋权:
        • 经计算得,D3 的值为:
          • D3 = (0.0455, 0.0455, 0.0455, 0.1667, 0.1667, 0.1667, 0.1060, 0.1060, 0.1060, 0.0455)
        • H2(x) = sign[0.4236 * h1 (x) + 0.6496 * h2(x)]
        • 分类器H2(x)在训练数据集上有3个误分类点。
    • 当m=3的时候:
      • (a)在权值分布为D 的训练数据上,阈值v取5.5时分类误差率最低,故基本分类器为:
        在这里插入图片描述

      • (b)计算该学习器在训练数据中的错误率:ε3 = 0.1820

      • (c)计算该学习器的投票权重:α3 = 0.7514

      • (d)根据投票权重,对训练数据重新赋权:

        • 经计算得,D4的值为: D4 = (0.125, 0.125, 0.125, 0.102, 0.102, 0.102, 0.065, 0.065, 0.065, 0.125)
        • H3(x) = sign[0.4236 * h1(x) + 0.6496 * h2(x) + 0.7514 * h3(x)]
        • 分类器H3(x)在训练数据集上的误分类点个数为0。
  • 步骤三:对m个学习器进⾏加权投票,获取最终分类器

    • H3(x) = sign[0.4236 * h1(x) + 0.6496 * h2(x) + 0.7514 * h3(x)]

GBDT介绍

Decision Tree:CART回归树

  • GBDT使⽤的决策树是CART回归树,⽆论是处理回归问题还是⼆分类以及多分类,GBDT使⽤的决策树通通都 是都是CART回归树。

回归树⽣成算法(复习)

  • 输⼊:训练数据集D:

  • 输出:回归树f(x).

  • 在训练数据集所在的输⼊空间中,递归的将每个区域划分为两个⼦区域并决定每个⼦区域上的输出值,构建⼆叉决 策树:

    • (1)选择最优切分特征 j 与切分点 s,求解
      在这里插入图片描述

    遍历特征 j,对固定的切分特征j扫描切分点s,选择使得上式达到最⼩值的对(j, s).

    • (2)⽤选定的对(j, s)划分区域并决定相应的输出值:
      在这里插入图片描述
    • (3)继续对两个⼦区域调⽤步骤(1)和(2),直⾄满⾜停⽌条件。
    • (4)将输⼊空间划分为M个区域R , R , , , , , , , , R , ⽣成决策树:
      在这里插入图片描述

Gradient Boosting: 拟合负梯度

先来个通俗理解:

  • 假如有个⼈30岁,我们⾸先⽤20岁去拟合,发现损失有10岁,
  • 这时我们⽤6岁去拟合剩下的损失,发 现差距还有4岁,
  • 第三轮我们⽤3岁拟合剩下的差距,差距就只有⼀岁了。
  • 如果我们的迭代轮数还没有完,可以继续迭代 下⾯,每⼀轮迭代,拟合的岁数误差都会减⼩。
  • 最后将每次拟合的岁数加起来便是模型输出的结果。

提升树算法:

  • (1)初始化f0(x) = 0
  • (2)对m = 1,2,…,M
    • (a)计算残差rmi = yi − f(m-1) (x), i = 1, 2, , , , , , , N
    • (b)拟合残差rmi 学习⼀个回归树,得到hm(x)
    • (c)更新fm(x) = f(m-1) (x) + hm(x)
    • (3)得到回归问题提升树
      在这里插入图片描述

上⾯伪代码中的残差是什么?

  • 在提升树算法中,

    • 假设我们前⼀轮迭代得到的强学习器是:f(t-1) (x)
    • 损失函数是:L(y, f(t-1) (x))
    • 我们本轮迭代的⽬标是找到⼀个弱学习器:ht(x)
    • 最⼩化让本轮的损失:L(y, ft(x)) = L(y, f(t-1) (x) + ht(x))
    • 当采⽤平⽅损失函数时:
      在这里插入图片描述

    这⾥,r = y − f(t-1) (x)是当前模型拟合数据的残差(residual)。

负梯度为:
在这里插入图片描述

此时我们发现GBDT的负梯度就是残差,所以说对于回归问题,我们要拟合的就是残差。

GBDT算法原理

  • 上⾯两节分别将Decision Tree和Gradient Boosting介绍完了,下⾯将这两部分组合在⼀起就是我们的GBDT了。

  • (1)初始化弱学习器
    在这里插入图片描述

  • (2)对m=1,2,…,M有:

    • (a)对每个样本i=1,2,…,N,计算负梯度,即残差
      在这里插入图片描述

    • (b)将上步得到的残差作为样本新的真实值,并将数据(xi, rim),i = 1, 2, …N作为下棵树的训练数据,得到⼀ 颗新的回归树fm(x)其对应的叶⼦节点区域为Rjm, j = 1, 2, …, J。其中J为回归树t的叶⼦节点的个数。

    • (c)对叶⼦区域j=1,2,…J计算最佳拟合值
      在这里插入图片描述

    • (d)更新强学习器
      在这里插入图片描述

  • (3)得到最终学习器
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

¥骁勇善战¥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值