AdaBoost算法

基本常用的几种提升方法
这里写图片描述
而本次所说的就为AdaBoost方法。

AdaBoost方法基本思想

AdaBoost方法是一种常用的统计学习方法,在分类问题中,它通过改变训练样本权重,学习多个分类器,并将这些分类器进行线性组合,以提高分类性能。实际上,这就是“三个臭皮匠顶个诸葛亮”的道理。
这里写图片描述

AdaBoost算法

对于提升方法,主要有两个问题:一是在每一轮如何改变训练数据的权值或概率分布;而是如何将弱分类器组合成一个强分类器。这在下面算法中将会介绍。

假定一个二分类数据集
T={(x1,y1),(x2,y2),...,(xN,yN)}T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)}
其中,实例xi∈X⊆Rnx_i \in X \subseteq R^nxiXRn,标记yi∈Y={−1,1}y_i \in Y=\{-1,1\}yiY={1,1}
算法
输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)};弱学习算法;
输出:最终分类器G(x)G(x)G(x).
(1)初始化训练数据的权值分布
D1=(w11,...,w1i,...,w1N),w1i=1N,i=1,2,...,ND_1=(w_{11},...,w_{1i},...,w_{1N}), w_{1i}=\frac{1}{N},i=1,2,...,ND1=(w11,...,w1i,...,w1N),w1i=N1,i=1,2,...,N
(2)对m=1,2,…,M
(a)使用具有权值分布DmD_mDm的训练数据集学习,得到基本分类器
Gm(x):X→{−1,1}G_m(x) : X \rightarrow \{-1,1\}Gm(x):X{1,1}
(b)计算Gm(x)G_m(x)Gm(x)在训练数据集上的分类误差率
em=P(Gm(xi)≠yi)=Σi=1NwmiI(Gm(xi)≠yi)e_m = P(G_m(x_i) \ne y_i) = \Sigma_{i=1}^Nw_{mi}I(G_m(x_i)\ne y_i)em=P(Gm(xi)=yi)=Σi=1NwmiI(Gm(xi)=yi)
(c)计算Gm(x)G_m(x)Gm(x)的系数
αm=12log1−emem\alpha_m = \frac{1}{2}log\frac{1-e_m}{e_m}αm=21logem1em
这里对数为自然对数
(d)更新训练数据集的权值分布
Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)wm+1,i=wmiZmexp(−αmyiGm(xi)),i=1,2,...,ND_{m+1}=(w_{m+1,1},...,w_{m+1,i},...,w_{m+1,N})\\ w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i)),i=1,2,...,NDm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)wm+1,i=Zmwmiexp(αmyiGm(xi)),i=1,2,...,N
这里ZmZ_mZm为规范化因子
Zm=Σi=1Nwmiexp(−αmyiGm(x))Z_m=\Sigma_{i=1}^Nw_{mi}exp(-\alpha_my_iG_m(x))Zm=Σi=1Nwmiexp(αmyiGm(x))
它使Dm+1D_{m+1}Dm+1成为一个概率分布。
(3)构建基本分类器线性组合
f(x)=Σm=1MαmGm(x)f(x)=\Sigma_{m=1}^M\alpha_mG_m(x)f(x)=Σm=1MαmGm(x)
得到最终分类器
G(x)=sign(f(x))=sign(Σm=1MαmGm(x))G(x)=sign(f(x))=sign(\Sigma_{m=1}^M\alpha_mG_m(x))G(x)=sign(f(x))=sign(Σm=1MαmGm(x))

算法说明
步骤(1)中,首先假设训练数据集具有均匀分布的权值,即每个训练样本在基本分类器的学习中作用相同。
步骤(2)AdaBoost反复学习基本分类器,在每一轮m=1,2,…,M顺序执行下列操作:
(a)使用当前分布DmD_mDm加权的训练数据集,学习基本分类器Gm(x)G_m(x)Gm(x)
(b)计算基本分类器Gm(x)G_m(x)Gm(x)在加权训练集上的分类误差率:
em=P(Gm(xi)≠yi)=ΣGm(xi)≠yiwmie_m=P(G_m(x_i) \ne y_i) = \Sigma_{G_m(x_i) \ne y_i}w_{mi}em=P(Gm(xi)=yi)=ΣGm(xi)=yiwmi
这里,wmiw_{mi}wmi表示第m轮中第i个实例的权值,Σi=1Nwmi=1.\Sigma_{i=1}^Nw_{mi}=1.Σi=1Nwmi=1.这表明,Gm(x)G_m(x)Gm(x)在加权训练数据集上的分类误差率是被Gm(x)G_m(x)Gm(x)误分类样本的权值之和。
(c)计算基本分类器Gm(x)G_m(x)Gm(x)的系数αm\alpha_mαmαm表示Gm(x)\alpha_m表示G_m(x)αmGm(x)在最终分类器中的重要性,当em≤12时,αm≥0,e_m \le \frac{1}{2}时,\alpha_m\ge 0,em21αm0,并且αm随着em\alpha_m随着e_mαmem的减小而增大,所以分类误差率越小的基本分类器在最终分类器中的作用越大。
(d)更新训练集权值分布,新一轮权值可写成:
wm+1,i={wmiZmeαm,Gm(xi)≠yiwmiZme−αm,Gm(xi)=yiw_{m+1,i}=\{_{\frac{w_{mi}}{Z_m}e^{\alpha_m},G_m(x_i) \ne y_i}^{\frac{w_{mi}}{Z_m}e^{-\alpha_m}, G_m(x_i) = y_i}wm+1,i={Zmwmieαm,Gm(xi)=yiZmwmieαm,Gm(xi)=yi
由此可知,被基本分类器Gm(x)G_m(x)Gm(x)误分类样本的权值得以扩大,而正确分类的样本权值得以缩小。因此,误分类样本将在下一轮学习中起更大作用。
(3)线性组合f(x)实现M个基本分类器的加权表决。系数αm\alpha_mαm表示基本分类器Gm(x)G_m(x)Gm(x)的重要性,但是所有αm\alpha_mαm之和并不等于1.

### Adaboost算法原理 Adaboost是一种迭代型的集成学习方法,旨在通过组合多个弱类器形成强类器。该过程始于赋予训练数据集中每个样本相同的权重。随着每一轮迭代,错误类样本的权重会增加,使得后续的弱类器更加关注这些难样本[^1]。 具体来说,在每次迭代过程中: - 训练一个新的弱类器,并计算其误差率。 - 基于误差率更新此类器的重要性(即系数),低误差意味着高重要性。 - 调整训练集内各个样例的权值布:被当前模型误判的例子会被给予更高的重视程度;反之,则降低它们的影响力度。 - 将新得到的弱类器加入到最终预测函数之中,直到达到预定的最大轮数或满足其他停止条件为止。 ```python from sklearn.ensemble import AdaBoostClassifier from sklearn.datasets import make_classification # 创建虚拟数据集 X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=7) # 初始化并训练AdaBoost类器 clf = AdaBoostClassifier(n_estimators=50, learning_rate=1.0, algorithm='SAMME') clf.fit(X, y) ``` ### 应用案例析 作为一种高效且易于实现的技术方案,Adaboost已被成功应用于众多领域内的模式识别任务当中,比如图像处理、自然语言处理等。由于它能够有效提高基础估计量的表现力而不显著增加计算成本,因此非常适合用来构建初始解决方案框架。不过值得注意的是,当面对含有大量噪音或是极端值的数据环境时,应当谨慎选用本方法,因为这可能导致性能下降甚至发散现象的发生[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值