机器学习算法——Adaboost

前向分布算法

前向分布算法属于加法模型:
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x) = \sum_{m=1}^M\beta_mb(x; \gamma_m) f(x)=m=1Mβmb(x;γm)
b ( x ; γ m ) b(x; \gamma_m) b(x;γm)为基函数,即基分类器, β m 为 基 函 数 的 系 数 \beta_m为基函数的系数 βm

Adaboost算法的基本思路

Adaboost使用的是Boosting算法集成框架,首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。

输入:训练数据集,弱学习算法,弱分类器迭代次数K
输出:最终分类器

  1. 初始化训练数据的权值分布
  2. 使用具有权重 D k D_k Dk的样本集来训练数据,得到弱分类器 G k ( x ) G_k(x) Gk(x)
  3. 计算分类误差率,找到分类误差率最低的时候的阈值 v v v
  4. 计算Gk(x)的分类误差率
  5. 计算弱分类器的系数
  6. 更新样本集的权重分布
  7. 根据阈值 v v v在分类
  8. 迭代…直到分类器上的误分类点为0
  9. 强分类器

AdaBoost二元分类问题算法流程

输入:训练样本集 T = T = T= { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) (x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m) (x1,y1),(x2,y2),,(xm,ym)}、弱分类器算法, 弱分类器迭代次数K。
输出:最终的强分类器

  1. 初始化训练数据的权值分布 D ( 1 ) = ( w 11 , w 12 , ⋯   , w 1 m ) ; w 1 i = 1 m ; i = 1 , 2 ⋯ m D(1) = (w_{11},w_{12},\cdots,w_{1m});w_{1i} = \frac {1}{m};i = 1,2\cdots m D(1)=(w11,w12,,w1m);w1i=m1;i=1,2m

  2. 使用具有权重 D k D_k Dk的样本集来训练数据,得到弱分类器 G k ( x ) G_k(x) Gk(x)

  3. 计算分类误差率 e k e_k ek,找到分类误差率最低的时候的阈值 v v v

  4. 计算Gk(x)的分类误差率计算Gk(x)的分类误差率 e k = P ( G k ( x i ) = /   y i ) = ∑ i = 1 m w k i I ( G k ( x i ) = /   y i ) e_k = P(G_k(x_i){=}\mathllap{/\,}y_i) = \sum_{i=1}^mw_{ki}I(G_k(x_i){=}\mathllap{/\,}y_i) ek=P(Gk(xi)=/yi)=i=1mwkiI(Gk(xi)=/yi)

  5. 计算弱分类器的系数计算弱分类器的系数 α k = 1 2 l o g 1 − e k e k \alpha_k = \frac{1}{2}log\frac{1-e_k}{e_k} αk=21logek1ek

  6. 更新样本集的权重分布 w k + 1 , i = w k i Z K e x p ( − α k y i G k ( x i ) ) , i = 1 , 2 , 3 ⋯ m w_{k+1,i} = \frac{w_{ki}}{Z_K}exp(-\alpha_ky_iG_k(x_i)) ,i = 1,2,3 \cdots m wk+1,i=ZKwkiexp(αkyiGk(xi)),i=1,2,3m
    Z k = ∑ i = 1 m w k i e x p ( − α k y i G k ( x i ) ) , Z K 为 规 范 化 因 子 Z_k = \sum_{i =1}^mw_{ki}exp(-\alpha_ky_iG_k(x_i)),Z_K为规范化因子 Zk=i=1mwkiexp(αkyiGk(xi)),ZK

  7. 根据阈值 v v v在分类根据阈值 v v v在分类

  8. 迭代…直到分类器上的误分类点为0

  9. 强分类器 f ( x ) = s i g n ( ∑ k = 1 K α k G k ( x ) ) f(x) = sign(\sum_{k=1}^K\alpha_kG_k(x)) f(x)=sign(k=1KαkGk(x))

对于Adaboost多元分类算法,其实原理和二元分类类似,最主要区别在弱分类器的系数上。比如Adaboost SAMME算法,它的弱分类器的系数
α k = 1 2 l o g 1 − e k e k + l o g ( R − 1 ) , 其 中 R 为 类 别 数 。 \alpha_k = \frac{1}{2}log\frac{1-e_k}{e_k}+log(R-1),其中R为类别数。 αk=21logek1ek+log(R1),R

Adaboost回归问题的算法流程

这里我们对AdaBoost回归问题算法流程做一个总结。AdaBoost回归算法变种很多,下面的算法为Adaboost R2回归算法过程。

  1. 初始化训练数据的权值分布 D ( 1 ) = ( w 11 , w 12 , ⋯   , w 1 m ) ; w 1 i = 1 m ; i = 1 , 2 ⋯ m D(1) = (w_{11},w_{12},\cdots,w_{1m});w_{1i} = \frac {1}{m};i = 1,2\cdots m D(1)=(w11,w12,,w1m);w1i=m1;i=1,2m
  2. 使用具有权重 D k D_k Dk的样本集来训练数据,得到弱分类器 G k ( x ) G_k(x) Gk(x)使用具有权重 D k D_k Dk的样本集来训练数据,得到弱分类器 G k ( x ) G_k(x) Gk(x)
  3. 计算训练集上的最大误差 E k = m a x ∣ y i − G k ( x i ) ∣ , i = 1 , 2 ⋯ m E_k = max|y_i-G_k(x_i)|,i = 1,2\cdots m Ek=maxyiGk(xi),i=1,2m
  4. 计算每个样本的相对误差:
    a.如果是线性误差,则 e k i = ∣ y i − G k ( x i ) ∣ E k e_{ki} = \frac{|y_i-G_k(x_i)|}{E_k} eki=EkyiGk(xi)
    b.如果是平方误差,则 e k i = ( y i − G k ( x i ) ) 2 E k e_{ki} = \frac{(y_i-G_k(x_i))^2}{E_k} eki=Ek(yiGk(xi))2
    c.如果是指数误差,则 e k i = 1 − e x p ( − ∣ y i − G k ( x i ) ∣ E k ) e_{ki} = 1- exp(- \frac{|y_i-G_k(x_i)|}{E_k}) eki=1exp(EkyiGk(xi))
  5. 计算回归误差率 s k = ∑ i = 1 m w k i e k i s_k = \sum_{i=1}^m w_{ki}e_{ki} sk=i=1mwkieki
  6. 计算弱学习器的系数 α k = e k 1 − e k \alpha_k =\frac{e_k}{1-e_k} αk=1ekek
  7. 更新样本集的权重分布为 w k + 1 , i = w k i Z k α k 1 − e k i w_{k+1,i}=\frac{w_{ki}}{Z_k}\alpha_k^{1-e_{ki}} wk+1,i=Zkwkiαk1eki Z k = ∑ i = 1 m w k i α k 1 − e k i Z_k = \sum_{i=1}^mw_{ki}\alpha_k^{1-e_{ki}} Zk=i=1mwkiαk1eki
  8. 构建最终强学习器为: f ( x ) = G k ∗ ( x ) f(x) = G_{k^*}(x) f(x)=Gk(x)
     其中, G k ∗ ( x ) G_{k^*}(x) Gk(x)是所有 l n 1 α k , k = 1 , 2 , . . . . K ln\frac{1}{\alpha_k},k=1,2,....K lnαk1,k=1,2,....K的中位数值对应序号 k ∗ k^* k对应的弱学习器。

Adaboost算法的正则化

为了防止Adaboost过拟合,我们通常也会加入正则化项,这个正则化项我们通常称为步长(learning rate)。定义为 v v v,对于前面的弱学习器的迭代
  f k ( x ) = f k − 1 ( x ) + α k G k ( x ) f_k(x) = f_{k-1}(x)+\alpha_kG_k(x) fk(x)=fk1(x)+αkGk(x)
 加上了正则化项,则有
  f k ( x ) = f k − 1 ( x ) + v α k G k ( x ) , 0 &lt; ν ≤ 1 f_k(x) = f_{k-1}(x)+v\alpha_kG_k(x),0&lt;ν≤1 fk(x)=fk1(x)+vαkGk(x),0<ν1
对于同样的训练集学习效果,较小的ν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。

Adaboost算法的优缺点

  • 优点:
    Adaboost作为分类器时,分类精度很高
    在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
    作为简单的二元分类器时,构造简单,结果可理解。
    不容易发生过拟合
  • 缺点
    对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值