第8章 AdaBoost算法

本文探讨了Bagging和Boosting两种集成学习方法的区别,包括它们在样本选择、样例权重、预测函数及并行计算方面的不同。进一步介绍了AdaBoost算法的具体流程,并详细解释了前向分布算法和提升树的概念及其在回归问题中的应用。

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

Bagging和Boosting的区别

1)样本选择上:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的.

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化.而权值是根据上一轮的分类结果进行调整.

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大.

3)预测函数:

Bagging:所有预测函数的权重相等.

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重.

4)并行计算:

Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果

AdaBoost算法

算法1(AdaBoost)
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T={(x1,y1),(x2,y2),...,(xN,yN)},其中xiχRnxi∈χ⊆Rnyiy={1,+1}yi∈y={−1,+1};弱学习算法;
输出:最终分类器G(x)G(x)
(1)初始化训练数据的权值分布

D1=(w11,...,w1i,...,w1N)w1i=1N,I=1,2,...,ND1=(w11,...,w1i,...,w1N),w1i=1N,I=1,2,...,N

(2)对m=1,2,...,Mm=1,2,...,M
(a)使用具有权值分布DmDm的训练数据集学习,得到基本分类器
Gm(x):χ{1,+1}Gm(x):χ→{−1,+1}

(b)计算Gm(x)Gm(x)在训练数据集上的分类误差率
em=P(Gm(xi)yi)=i=1NwmiI(Gm(xi)yi)(1)(1)em=P(Gm(xi)≠yi)=∑i=1NwmiI(Gm(xi)≠yi)

(c)计算Gm(x)Gm(x)的系数
αm=12log1emem(2)(2)αm=12log⁡1−emem
这里的对数是自然对数。
(d)更新训练数据集的权值分布
Dm+1=(wm+1,1,...,wm+1,i,wm+1,N)(3)(3)Dm+1=(wm+1,1,...,wm+1,i,wm+1,N)
wm+1,i=wm,iZmexp(αmyiGm(xi))(4)(4)wm+1,i=wm,iZmexp⁡(−αmyiGm(xi))
这里,ZmZm是规划化因子
Zm=i=1Nwm,1exp(αmyiGm(xi))(5)(5)Zm=∑i=1Nwm,1exp⁡(−αmyiGm(xi))
它使Dm+1Dm+1成为一个概率分布。
(3)构建基本分类器的线性组合
f(x)=m=1MαmGm(x)(6)(6)f(x)=∑m=1MαmGm(x)
得到最终分类器
G(x)=sign(f(x))=sign(m=1MαmGm(x))(7)(7)G(x)=sign(f(x))=sign(∑m=1MαmGm(x))

定理8.1 (AdaBoost的训练误差界) AdaBoost算法最终分类器的训练误差界为
1Ni=1NI(G(xi)yi)1Niexp(yif(xi))=mZm(9)(9)1N∑i=1NI(G(xi)≠yi)≤1N∑iexp⁡(−yif(xi))=∏mZm
这里,G(x),f(x)G(x),f(x)ZmZm分别由式(7),(6),(5)给出。
前向分布算法

算法2(前向分布算法)
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T={(x1,y1),(x2,y2),...,(xN,yN)};损失函数L(y,f(x))L(y,f(x));基函数集b(x;γ)b(x;γ)
输出:加法模型f(x)f(x)
(1)初始化f0(x)=0f0(x)=0
(2)对m=1,2,...,Mm=1,2,...,M
(a)极小化损失函数

(βm,γm)=argminβ,γi=1NL(yi,fm1(xi)+βb(xi;γ))(10)(10)(βm,γm)=argminβ,γ∑i=1NL(yi,fm−1(xi)+βb(xi;γ))
得到参数βm,γmβm,γm
(b)更新
fm(x)=fm1(x)+βmb(x;γm)(11)(11)fm(x)=fm−1(x)+βmb(x;γm)

(3)得到加法模型
f(x)=fM(x)=m=1Mβmb(x;γm)(12)(12)f(x)=fM(x)=∑m=1Mβmb(x;γm)

这样,前向分步算法将同时求解从m=1m=1MM所有参数βm,γm的优化问题简化为逐次求解各个βm,γmβm,γm的优化问题.

提升树

提升树是以分类树或回归树为基本分类器的提升方法。

提升树模型

提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型:

fM(x)=m=1MT(x;Θm)(13)(13)fM(x)=∑m=1MT(x;Θm)
其中,T(x;Θm)T(x;Θm)表示决策树;ΘmΘm 为决策树的参数;MM为树的个数。
算法3 (回归问题的提升树算法)
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)},其中xiχRnxi∈χ⊆RnyiyRyi∈y⊆R
输出:提升树fM(x)fM(x)
(1)初始化f0(x)=0f0(x)=0
(2)对m=1,2,...,Mm=1,2,...,M
(a)计算残差
rmi=yifm1(xi),i=1,2,...,Nrmi=yi−fm−1(xi),i=1,2,...,N

(b)拟合残差
rmirmi
学习一个回归树,得到T(x,Θm)T(x,Θm)
(c)更新fm(x)=fm1(x)+T(x;Θm)fm(x)=fm−1(x)+T(x;Θm)
(3)得到回归问题提升树
fM(x)=m=1MT(x;Θm)fM(x)=∑m=1MT(x;Θm)
梯度提升

提升树利用加法模型与前向分步算法实现学习的优化过程。当损失函数是平方损失和指数损失函数时,每一步优化是很简单的,但对于一般损失函数而言,可以利用梯度提升算法(gradient boosting)。这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值

[L(y,f(xi))f(xi)]f(x)=fm1(x)−[∂L(y,f(xi))∂f(xi)]f(x)=fm−1(x)
作为回归问题提升树算法中的残差的近似值,拟合一个回归树。
算法4(梯度提升算法)
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T={(x1,y1),(x2,y2),...,(xN,yN)},其中xiχRnxi∈χ⊆RnyiyRyi∈y⊆R;损失函数L(y,f(x));
输出:回归树f^(x)f^(x).
(1) 初始化
f0(x)=argminci=1NL(yi,c)f0(x)=argminc∑i=1NL(yi,c)

(2)对m=1,2,...,Mm=1,2,...,M
(a)对i=1,2,...,Ni=1,2,...,N,计算
rmi=[L(y,f(xi))f(xi)]f(x)=fm1(x)rmi=−[∂L(y,f(xi))∂f(xi)]f(x)=fm−1(x)

(b)对rmirmi拟合一个回归树,得到第mm颗树的叶结点区域Rmj,j=1,2,...,J
(c)对j=1,2,...,Jj=1,2,...,J,计算
cmj=argmincxiRmjL(yi,fm1(xi)+c)cmj=argminc∑xi∈RmjL(yi,fm−1(xi)+c)

(d)更新fm(x)=fm1(x)+Jj=1cmjI(XRmj)fm(x)=fm−1(x)+∑j=1JcmjI(X∈Rmj)
(3)得到回归树
f^(x)=fM(x)=m=1Mj=1JcmjI(XRmj)f^(x)=fM(x)=∑m=1M∑j=1JcmjI(X∈Rmj)

算法第1步初始化,估计使损失函数极小化的常数值,它是只有一个根结点的树。第2(a)步计算损失函数的负梯度在当前模型的值,将它作为残差的估计。对于平方损失函数,它就是通常所说的残差;对于一般损失函数,它就是残差的近似值。第2(b)估计回归树叶结点区域,以拟合残差的近似值。第2(c)步更新回归树。第3步得到输出的最终模型f^(x)f^(x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值