二、集成学习:Boosting 之 AdaBoost_回归问题

本文详细介绍了AdaBoost.R2算法的工作原理及流程,包括损失函数的选择、样本权重更新、置信度评估等内容,并探讨了算法的提前停止策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  对于任意Boosting算法,我们都需要明确以下几点:

  • 损失函数L(x,y)L(x,y)L(x,y)的表达式是什么?损失函数如何影响模型构建?
  • 弱评估器f(x)f(x)f(x) 是什么,当下boosting算法使用的具体建树过程是什么?
  • 综合集成结果H(x)H(x)H(x)是什么?集成算法具体如何输出集成结果?

  同时,还可能存在其他需要明确的问题,例如:

  • 是加权求和吗?如果是,加权求和中的权重如何求解?
  • 训练过程中,拟合的数据XXXyyy分别是什么?
  • 模型训练到什么时候停下来最好?

  同时,别忘记boosting算法的基本规则:

依据上一个弱评估器f(x)t−1f(x)_{t-1}f(x)t1的结果,计算损失函数L(x,y)L(x,y)L(x,y)
并使用L(x,y)L(x,y)L(x,y)自适应地影响下一个弱评估器f(x)tf(x)_tf(x)t的构建。
集成模型输出的结果,受到整体所有弱评估器f(x)0f(x)_0f(x)0 ~ f(x)Tf(x)_Tf(x)T的影响。


  AdaBoost.R2算法是当前AdaBoost实现流程中使用最多的回归类实践方式,它囊括了对数据进行有放回抽样、按损失函数结果调整样本权重、自动计算弱分类器权重、并输出预测结果等AdaBoost算法经典的全流程。

  假设现有数据集N,含有样本MMM个,任意样本编号为iii,同时,弱评估器为决策树fff,总共学习TTT轮,则AdaBoost.R2的基本流程如下所示:

  1. 初始化原始数据集的权重wiw_iwi,其中任意wi=1Mw_i = \frac{1}{M}wi=M1

  开始循环,for t in 1,2,…T:

  1. 在现有数据集NNN中,有放回抽样MMM个样本,构成训练集NtN^tNt。在每次抽取一个样本时,任意样本被抽中的概率为Pit=wi∑wiP_i^t = \frac{w_i}{\sum w_i}Pit=wiwi,很显然,该概率就是当前样本在训练集NtN^tNt中的权重。当从初始权重中抽样时,概率Pi1=1MP_i^1 = \frac{1}{M}Pi1=M1,当后续权重变化时,拥有更大权重的样本被抽中的概率会更大。

  2. 在训练集NtN^tNt上按照CART树规则建立一棵回归树ftf^tft,训练时所拟合的标签为样本的真实标签yity^t_iyit

  3. NtN^tNt上所有的样本输入ftf^tft进行预测,得出预测结果ft(xi)f^t(x_i)ft(xi),其中i = 1,2,…M。

  4. 计算单一样本iii上的损失函数Lit=L(ft(xi),yi)L^t_i = L(f^t(x_i),y_i)Lit=L(ft(xi),yi),计算过程如下所示:
    D=sup∣ft(xi)−yi∣,i=1,2,...,ND = sup|f^t(x_i) - y_i|, i = 1,2,...,ND=supft(xi)yi,i=1,2,...,N

  D为训练集上的最大误差。

  • 计算每个样本的相对误差:LitL^t_iLit值域都在[0,1]之间
    线性损失:Li=∣ft(xi)−yi∣D线性损失:L_i = \frac{|f^t(x_i) - y_i|}{D}线Li=Dft(xi)yi
    平方损失:Li=∣ft(xi)−yi∣2D2平方损失:L_i = \frac{|f^t(x_i) - y_i|^2}{D^2}Li=D2ft(xi)yi2
    指数损失:Li=1−exp(−∣ft(xi)−yi∣D)指数损失:L_i = 1 - exp \left( \frac{-|f^t(x_i) - y_i|}{D} \right)Li=1exp(Dft(xi)yi)
  1. 计算全样本上的加权平均损失:
    Ltˉ=∑i=1MLitPit\bar{L^t} = \sum_{i=1}^ML_i^tP_i^tLtˉ=i=1MLitPit

  其中,PitP_i^tPit就等于样本的权重。由于Pit=wi∑wiP_i^t = \frac{w_i}{\sum w_i}Pit=wiwi,所以PitP_i^tPit一定位于[0,1]范围内(当样本量比较大时,PitP_i^tPit远远小于1),并且∑Pit,i=1,2,...M\sum{P_i^t}, i=1,2,...MPit,i=1,2,...M一定为1。

   当权重之和为1时,加权平均值一定会小于等于单一数值的最大值(同时大于等于单一数值的最小值),因此加权平均的值域不会超出单一平均数的值域

  例如:当L=[10,20,5],P=[0,1,0],LP最大且为20;当[0,0,1],LP最小且为5。

  由于所有损失的值域都是[0,1],因此加权平均值Ltˉ\bar{L^t}Ltˉ的值域也是[0,1]。同时,由于损失的最大值为1,而权重PitP_i^tPit的最大值一定是远远小于1的,因此加权平均值Ltˉ\bar{L^t}Ltˉ的最大值一般也是远远小于1的。

  1. 依据加权平均损失Ltˉ\bar{L^t}Ltˉ计算衡量当前集成算法的置信度βt\beta^tβt:
    βt=Ltˉ1−Ltˉ+λ\beta^t = \frac{\bar{L^t}}{1-\bar{L^t} + \lambda}βt=1Ltˉ+λLtˉ

  其中λ\lambdaλ是为了防止分母为0的常数

   不难发现,当加权平平均损失很高时,βt\beta^tβt很大,因此置信度小,当加权平均损失很低时,βt\beta^tβt很小,因此置信度大。置信度越大,集成算法当前的预测结果越好。

   已知Ltˉ\bar{L^t}Ltˉ的理论值域是[0,1],因此βt\beta^tβt的理论值域是[0,+∞+\infty+],因此βt\beta_tβt的值越接近0越好。

在这里插入图片描述

   同时,我们还知道Ltˉ\bar{L^t}Ltˉ的实际范围大约都在0.2~0.3之间,因此一般来说βt\beta^tβt的实际范围基本都是小于1的。

  1. 依据置信度评估βt\beta_tβt更新样本权重
    wi=wiβ(1−Li)w_i = w_i\beta^{(1-L_i)}wi=wiβ(1Li)

   我们可以根据LiL_iLi的范围[0,1],以及β\betaβ的计算公式,绘制出横坐标为LiL_iLi,纵坐标为β(1−Li)\beta^{(1-L_i)}β(1Li)的图像。不难发现,单一样本的损失越大、β(1−Li)\beta^{(1-L_i)}β(1Li)也会越大,因此该样本的权重会被更新得越大。

  1. 求解迭代过程中弱分类器ftf^tft所需的权重
    ϕt=log(1βt)\phi^t = log(\frac{1}{\beta^t})ϕt=log(βt1)

在这里插入图片描述

   其中log的底数为e或者为2皆可。当β\betaβ值越接近于0,说明损失越小、置信度越高,则log(1βt)log(\frac{1}{\beta^t})log(βt1)的值越大。所以,损失更小的树对应的权重更大,损失更大的树对应的权重更小。

  1. 求解出当前迭代ttt下集成算法的输出值:
    Ht(xi)=Ht−1(xi)+ηϕtft(xi)H^t(x_i) = H^{t-1}(x_i) + \eta \phi^t f^t(x_i)Ht(xi)=Ht1(xi)+ηϕtft(xi)

   其中η\etaη为学习率。

  • Adaboost如何做提前停止?

   在步骤2~10中循环,直到迭代次数被使用完毕。理想上来说,Adaboost至少应该迭代到TTT次以满足下列条件:

(∑t:Ht(x)≤ylog1βt)  ≥  (12∑t=1Tlog1βt)\left(\sum_{t:H^t(x) \leq y} log\frac{1}{\beta^t} \right)\ \ \geq \ \ \left(\frac{1}{2}\sum_{t=1}^T log\frac{1}{\beta^t} \right)t:Ht(x)ylogβt1    (21t=1Tlogβt1)

   等同于:
(∑t:Ht(x)≤yϕt)  ≥  (12∑t=1Tϕt)\left(\sum_{t:H^t(x) \leq y} \phi^t \right)\ \ \geq \ \ \left(\frac{1}{2}\sum_{t=1}^T \phi^t \right)t:Ht(x)yϕt    (21t=1Tϕt)

   并且,最终算法的输出值是上述等式满足“等于”条件时所对应的Ht(x)H^t(x)Ht(x)。对于一个正常迭代的AdaBoost来说,每一轮迭代后获得的H(xi)H(x_i)H(xi)都是累加结果,因此H(xi)H(x_i)H(xi)之间应该满足以下关系:

H0(xi)<H1(xi)<,...,<HT(xi)H^0(x_i) < H^1(x_i) <, ... , < H^T(x_i)H0(xi)<H1(xi)<,...,<HT(xi)

   在H0(xi)H^0(x_i)H0(xi)HT(xi)H^T(x_i)HT(xi)过程中,必然只有部分H(xi)H(x_i)H(xi)是小于真实标签yiy_iyi的,假设有ttt次迭代中H(xi)H(x_i)H(xi)都小于yiy_iyi,则理想状况下,前ttt次迭代中权重的累加,应该大于0.5 * 所有TTT次迭代中权重的累加。当两者相等时,t就是最佳迭代次数,而ttt对应的Ht(x)H^t(x)Ht(x)也就是最佳预测值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值