TASK6-Boosting

视频要点

P28 Boosting集成的概述

  • Boosting方法是使用同一组数据集进行反复学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的机器学习模型
  • Boosting思想提高最终的预测效果是通过不断减少偏差的形式,与Bagging有着本质的不同
  • 在概率近似正确PAC(probably approximately correct)学习的框架下:
    • 弱学习:识别错误率小于1/2(即准确率仅比随机猜测略高的学习算法)
    • 强学习:识别准确率很高并能在多项式时间内完成的学习算法
  • 在PAC 学习的框架下,强可学习和弱可学习是等价的,也就是说一个概念是强可学习的充分必要条件是这个概念是弱可学习的

P29 Adaboost算法详解

  • 对于Boosting方法来说,有两个问题需要给出答案:
    1. 第一个是每一轮学习应该如何改变数据的概率分布
    2. 第二个是如何将各个弱分类器组合起来
  • 解决上述的两个问题的方式是:
    1. 提高那些被前一轮分类器错误分类的样本的权重,而降低那些被正确分类的样本的权重。这样一来,那些在上一轮分类器中没有得到正确分类的样本,由于其权重的增大而在后一轮的训练中“备受关注”。
    2. 各个弱分类器的组合是通过采取加权多数表决的方式,具体来说,加大分类错误率低的弱分类器的权重,因为这些分类器能更好地完成分类任务,而减小分类错误率较大的弱分类器的权重,使其在表决中起较小的作用。
  • Adaboost算法:(参考李航老师的《统计学习方法》)
    假设给定一个二分类的训练数据集: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2),,(xN,yN)},其中每个样本点由特征与类别组成。特征 x i ∈ X ⊆ R n x_{i} \in \mathcal{X} \subseteq \mathbf{R}^{n} xiXRn,类别 y i ∈ Y = { − 1 , + 1 } y_{i} \in \mathcal{Y}=\{-1,+1\} yiY={1,+1} X \mathcal{X} X是特征空间,$ \mathcal{Y} 是 类 别 集 合 , 输 出 最 终 分 类 器 是类别集合,输出最终分类器 G(x)$。Adaboost算法如下:
    1. 初始化训练数据的分布: D 1 = ( w 11 , ⋯   , w 1 i , ⋯   , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , ⋯   , N D_{1}=\left(w_{11}, \cdots, w_{1 i}, \cdots, w_{1 N}\right), \quad w_{1 i}=\frac{1}{N}, \quad i=1,2, \cdots, N D1=(w11,,w1i,,w1N),w1i=N1,i=1,2,,N

    2. 对于m=1,2,…,M

      • 使用具有权值分布 D m D_m Dm的训练数据集进行学习,得到基本分类器: G m ( x ) : X → { − 1 , + 1 } G_{m}(x): \mathcal{X} \rightarrow\{-1,+1\} Gm(x):X{1,+1}
      • 计算 G m ( x ) G_m(x) Gm(x)在训练集上的分类误差率 e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) e_{m}=\sum_{i=1}^{N} P\left(G_{m}\left(x_{i}\right) \neq y_{i}\right)=\sum_{i=1}^{N} w_{m i} I\left(G_{m}\left(x_{i}\right) \neq y_{i}\right) em=i=1NP(Gm(xi)=yi)=i=1NwmiI(Gm(xi)=yi)
      • 计算 G m ( x ) G_m(x) Gm(x)的系数 α m = 1 2 log ⁡ 1 − e m e m \alpha_{m}=\frac{1}{2} \log \frac{1-e_{m}}{e_{m}} αm=21logem1em,这里的log是自然对数ln
      • 更新训练数据集的权重分布
        D m + 1 = ( w m + 1 , 1 , ⋯   , w m + 1 , i , ⋯   , w m + 1 , N ) w m + 1 , i = w m i Z m exp ⁡ ( − α m y i G m ( x i ) ) , i = 1 , 2 , ⋯   , N \begin{array}{c} D_{m+1}=\left(w_{m+1,1}, \cdots, w_{m+1, i}, \cdots, w_{m+1, N}\right) \\ w_{m+1, i}=\frac{w_{m i}}{Z_{m}} \exp \left(-\alpha_{m} y_{i} G_{m}\left(x_{i}\right)\right), \quad i=1,2, \cdots, N \end{array} Dm+1=(wm+1,1,,wm+1,i,,wm+1,N)wm+1,i=Zmwmiexp(αmyiGm(xi)),i=1,2,,N
        这里的 Z m Z_m Zm是规范化因子,使得 D m + 1 D_{m+1} Dm+1称为概率分布, Z m = ∑ i = 1 N w m i exp ⁡ ( − α m y i G m ( x i ) ) Z_{m}=\sum_{i=1}^{N} w_{m i} \exp \left(-\alpha_{m} y_{i} G_{m}\left(x_{i}\right)\right) Zm=i=1Nwmiexp(αmyiGm(xi))
    3. 构建基本分类器的线性组合 f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^{M} \alpha_{m} G_{m}(x) f(x)=m=1MαmGm(x),得到最终的分类器

G ( x ) = sign ⁡ ( f ( x ) ) = sign ⁡ ( ∑ m = 1 M α m G m ( x ) ) \begin{aligned} G(x) &=\operatorname{sign}(f(x)) \\ &=\operatorname{sign}\left(\sum_{m=1}^{M} \alpha_{m} G_{m}(x)\right) \end{aligned} G(x)=sign(f(x))=sign(m=1MαmGm(x))

  • Adaboost算法做说明
    • 对于步骤(1),假设训练数据的权值分布是均匀分布,是为了使得第一次没有先验信息的条件下每个样本在基本分类器的学习中作用一样
    • 对于步骤(2),每一次迭代产生的基本分类器 G m ( x ) G_m(x) Gm(x)在加权训练数据集上的分类错误率 e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ G m ( x i ) ≠ y i w m i \begin{aligned}e_{m} &=\sum_{i=1}^{N} P\left(G_{m}\left(x_{i}\right) \neq y_{i}\right) =\sum_{G_{m}\left(x_{i}\right) \neq y_{i}} w_{m i}\end{aligned} em=i=1NP(Gm(xi)=yi)=Gm(xi)=yiwmi代表了在 G m ( x ) G_m(x) Gm(x)中分类错误的样本权重和,这点直接说明了权重分布 D m D_m Dm G m ( x ) G_m(x) Gm(x)的分类错误率 e m e_m em有直接关系
    • 在步骤(2)中,计算基本分类器 G m ( x ) G_m(x) Gm(x)的系数 α m \alpha_m αm α m = 1 2 log ⁡ 1 − e m e m \alpha_{m}=\frac{1}{2} \log \frac{1-e_{m}}{e_{m}} αm=21logem1em,它表示了 G m ( x ) G_m(x) Gm(x)在最终分类器的重要性程度, α m \alpha_m αm的取值由基本分类器 G m ( x ) G_m(x) Gm(x)的分类错误率有直接关系,当 e m ⩽ 1 2 e_{m} \leqslant \frac{1}{2} em21时, α m ⩾ 0 \alpha_{m} \geqslant 0 αm0,并且 α m \alpha_m αm随着 e m e_m em的减少而增大,因此分类错误率越小的基本分类器在最终分类器的作用越大
    • 最重要的,对于步骤(2)中的样本权重的更新:
      w m + 1 , i = { w m i Z m e − α m , G m ( x i ) = y i w m i Z m e α m , G m ( x i ) ≠ y i w_{m+1, i}=\left\{\begin{array}{ll} \frac{w_{m i}}{Z_{m}} \mathrm{e}^{-\alpha_{m}}, & G_{m}\left(x_{i}\right)=y_{i} \\ \frac{w_{m i}}{Z_{m}} \mathrm{e}^{\alpha_{m}}, & G_{m}\left(x_{i}\right) \neq y_{i} \end{array}\right. wm+1,i={Zmwmieαm,Zmwmieαm,Gm(xi)=yiGm(xi)=yi
      因此,从上式可以看到:被基本分类器 G m ( x ) G_m(x) Gm(x)错误分类的样本的权重扩大,被正确分类的样本权重减少,二者相比相差 e 2 α m = 1 − e m e m \mathrm{e}^{2 \alpha_{m}}=\frac{1-e_{m}}{e_{m}} e2αm=em1em倍。
    • 对于步骤(3),线性组合 f ( x ) f(x) f(x)实现了将M个基本分类器的加权表决,系数 α m \alpha_m αm标志了基本分类器 G m ( x ) G_m(x) Gm(x)的重要性,值得注意的是:所有的 α m \alpha_m αm之和不为1。 f ( x ) f(x) f(x)的符号决定了样本x属于哪一类。
  • 大多数的Boosting方法都是通过改变训练数据集的概率分布(训练数据不同样本的权值),针对不同概率分布的数据调用弱分类算法学习一系列的弱分类器。

P30 前向分步算法

  • 前向分步算法是对Adaboost算法的整体框架逻辑进行抽象,构建出的一个非常重要的集成学习框架
  • f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=\sum_{m=1}^{M} \beta_{m} b\left(x ; \gamma_{m}\right) f(x)=m=1Mβmb(x;γm),其中, b ( x ; γ m ) b\left(x ; \gamma_{m}\right) b(x;γm)为即基本分类器, γ m \gamma_{m} γm为基本分类器的参数, β m \beta_m βm为基本分类器的权重。显然如果把 b ( x ; γ m ) b(x ; \gamma_{m}) b(x;γm)看成是基函数,则这与第二章所学的加法模型是一致的。
  • 在给定训练数据以及损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x))的条件下,学习加法模型 f ( x ) f(x) f(x)就是:
    min ⁡ β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) \min _{\beta_{m}, \gamma_{m}} \sum_{i=1}^{N} L\left(y_{i}, \sum_{m=1}^{M} \beta_{m} b\left(x_{i} ; \gamma_{m}\right)\right) βm,γmmini=1NL(yi,m=1Mβmb(xi;γm))
    通常这是一个复杂的优化问题,很难通过简单的凸优化的相关知识进行解决。前向分步算法可以用来求解这种方式的问题,它的基本思路是:因为学习的是加法模型,如果从前向后,每一步只优化一个基函数及其系数,逐步逼近目标函数,那么就可以降低优化的复杂度。具体而言,每一步只需要优化:
    min ⁡ β , γ ∑ i = 1 N L ( y i , β b ( x i ; γ ) ) \min _{\beta, \gamma} \sum_{i=1}^{N} L\left(y_{i}, \beta b\left(x_{i} ; \gamma\right)\right) β,γmini=1NL(yi,βb(xi;γ))
    相当于是应用了贪心的策略
  • 前向分步算法与Adaboost的关系:Adaboost算法是前向分步算法的特例,Adaboost算法是由基本分类器组成的加法模型,损失函数为指数损失函数。具体的证明见李航老师的《统计学习方法》第八章的3.2节。

P31 梯度提升决策树GBDT

  • 基于残差学习的提升树算法:
    • 解决的问题:利用加法模型+前向分步算法解决回归问题
    • 基函数:决策树分类器
    • 指标:平方误差
    • 每次提升的标准:回归问题没有分类错误率可言,所以使用每个样本的残差表示每次使用基函数预测时没有解决的那部分问题
  • Freidman提出了梯度提升算法(gradient boosting),这是利用最速下降法的近似方法,利用损失函数的负梯度在当前模型的值 − [ ∂ L ( y , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x ) -\left[\frac{\partial L\left(y, f\left(x_{i}\right)\right)}{\partial f\left(x_{i}\right)}\right]_{f(x)=f_{m-1}(x)} [f(xi)L(y,f(xi))]f(x)=fm1(x)作为回归问题提升树算法中的残差的近似值,拟合回归树。与其说负梯度作为残差的近似值,不如说残差是负梯度的一种特例
  • GBDT是一类算法,其中的XGboost是到目前为止最为杰出的一个工业实现。

P32 XGboost模型

参考:

作业

1. Adaboost的基本思路?

见视频要点P29。

2. Adaboost与GBDT的联系与区别?

3. Boosting与Bagging的区别,以及如何提升模型的精度?

  • Boosting与Bagging的区别:
    • Bagging思想的实质是:通过Bootstrap 的方式对全样本数据集进行抽样得到抽样子集,对不同的子集使用同一种基本模型进行拟合,然后投票得出最终的预测。我们也从前面的探讨知道:Bagging主要通过降低方差的方式减少预测误差。
    • Boosting是与Bagging截然不同的思想,Boosting方法是使用同一组数据集进行反复学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的机器学习模型。
    • 显然,Boosting思想提高最终的预测效果是通过不断减少偏差的形式,与Bagging有着本质的不同。
  • 如何提升模型精度:

4. 使用基本分类模型和Boosting提升的模型,并画出他们的决策边界。

5. 尝试使用XGboost模型完成一个具体的分类任务,并进行调参。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Boosting算法是一种通过迭代更新的方式构造强分类器的一类算法。它的主要特点是使用一组弱分类器,通过联合它们的结果构建一个更强的最终分类器。Boosting算法通过训练集上的多个弱分类器来解决两个问题:如何调整训练集,以让弱分类器能够进行训练,以及如何将这些弱分类器联合起来形成强分类器。 Boosting算法中的弱分类器可以是不同类型的分类器,如AdaBoost、GradientBoosting和LogitBoost等算法。 在Boosting算法中,AdaBoost是其中一种常用的算法。它采用了特定的策略来解决Boosting需要解决的两个问题。具体来说,AdaBoost使用加权后选取的训练数据来代替随机选取的训练样本,从而将训练的焦点集中在难以区分的样本上。此外,AdaBoost还通过使用加权的投票机制来联合弱分类器,使分类效果较好的弱分类器具有较大的权重,而分类效果较差的弱分类器具有较小的权重。 总结起来,Boosting算法是一种框架算法,可以使用不同的子算法来实现。它的核心思想是通过训练一组弱分类器,并将它们联合起来构建一个更强的最终分类器。Boosting算法通过迭代更新样本权值和弱分类器权值,不断提升模型的准确率。Boosting算法在机器学习领域中具有广泛的应用和研究价值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [机器学习 —— Boosting算法](https://blog.csdn.net/starter_____/article/details/79328749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [人工智能知识全面讲解:Boosting族算法](https://blog.csdn.net/tysonchiu/article/details/125503239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值