决策树之AdaBoost

本文从互联网搬运,只用于本人学习记录。

AdaBoost(Adaptive Boosting,自适应增强),其自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

1. 思想

Adaboost 迭代算法有三步:

  1. 初始化训练样本的权值分布,每个样本具有相同权重
  2. 训练弱分类器,如果样本分类正确,则在构造下一个训练集中,它的权值就会被降低;反之提高。用更新过的样本集去训练下一个分类器;
  3. 将所有弱分类组合成强分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,降低分类误差率大的弱分类器的权重

2. 细节

2.1. 损失函数

Adaboost 模型是加法模型学习算法为前向分步学习算法损失函数为指数函数的分类问题。

加法模型:最终的强分类器是由若干个弱分类器加权平均得到的。

前向分布学习算法:算法是通过一轮轮的弱学习器学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重。第 k 轮的强学习器为:
F k ( x ) = ∑ i = 1 k α i f i ( x ) = F k − 1 ( x ) + α k f k ( x ) F_k(x) = \sum^k_{i = 1}\alpha_if_i(x) = F_{k - 1}(x) + \alpha_kf_k(x) Fk(x)=i=1kαifi(x)=Fk1(x)+αkfk(x)

定义损失函数为 n n n个样本的指数损失函数
L ( y , F ) = ∑ i = 1 n e x p ( − y i F k ( x i ) ) L(y, F) = \sum^n_{i = 1}exp(-y_iF_k(x_i)) L(y,F)=i=1nexp(yiFk(xi))

利用前向分部学习算法的关系可以得到:
L ( y , F ) = ∑ i = 1 m e x p [ ( − y i ) ( F k − 1 ( x i ) + α k f k ( x i ) ) ] = ∑ i = 1 m e x p [ − y i F k − 1 ( x i ) − y i α k f k ( x i ) ] = ∑ i = 1 m e x p [ − y i F k − 1 ( x i ) ] e x p [ − y i α k f k ( x i ) ] \begin{aligned} L(y, F) &= \sum^m_{i = 1}exp[(-y_i)(F_{k - 1}(x_i) + \alpha_kf_k(x_i))] \\ &= \sum^m_{i = 1}exp[-y_iF_{k - 1}(x_i) - y_i\alpha_kf_k(x_i)] \\ &= \sum^m_{i = 1}exp[-y_iF_{k - 1}(x_i)]exp[-y_i\alpha_kf_k(x_i)] \end{aligned} L(y,F)=i=1mexp[(yi)(Fk1(xi)+αkfk(xi))]=i=1mexp[yiFk1(xi)yiαkfk(xi)]=i=1mexp[yiFk1(xi)]exp[yiαkfk(xi)]
因为 F k − 1 ( x ) F_{k - 1}(x) Fk1(x)已知,所以令 ω k , i = e x p ( − y i F k − 1 ( x i ) ) \omega_{k, i} = exp(-y_iF_{k - 1}(x_i)) ωk,i=exp(yiFk1(xi)),随着每一轮迭代而将这个式子带入损失函数,损失函数转化为:
L ( y , F ( x ) ) = ∑ i = 1 m ω k , i e x p [ − y i α k f k ( x i ) ] L(y, F(x)) = \sum^m_{i = 1}\omega_{k, i}exp[-y_i\alpha_kf_k(x_i)] L(y,F(x))=i=1mωk,iexp[yiαkfk(xi)]
f k ( x ) f_k(x) fk(x),可以得到:
f k ( x ) = arg min ⁡ ∑ i = 1 m ω k , i I ( y i ≠ f k ( x i ) ) f_k(x) = \argmin \sum^m_{i = 1}\omega_{k, i}I(y_i \neq f_k(x_i)) fk(x)=argmini=1mωk,iI(yi=fk(xi))
f k ( x ) f_k(x) fk(x)带入损失函数,并对 α \alpha α求导,使其等于0,则就得到了:
α k = 1 2 log ⁡ 1 − e k e k \alpha_k = \frac{1}{2}\log{\frac{1 - e_k}{e_k}} αk=21logek1ek
其中, e k e_k ek是前面的分类误差率。
e k = ∑ i = 1 m ω k i ′ I ( y i ≠ f k ( x i ) ) ∑ i = 1 m ω k i ′ = ∑ i = 1 m ω k i I ( y i ≠ f k ( x i ) ) e_k = \frac{\sum^m_{i = 1}\omega'_{ki}I(y_i \neq f_k(x_i))}{\sum^m_{i = 1}\omega'_{ki}} = \sum^m_{i = 1}\omega_{ki}I(y_i \neq f_k(x_i)) ek=i=1mωkii=1mωkiI(yi=fk(xi))=i=1mωkiI(yi=fk(xi))
样本的权重更新,利用 F k ( x ) = F k − 1 ( x ) + α k f k ( x ) F_k(x) = F_{k - 1}(x) + \alpha_kf_k(x) Fk(x)=Fk1(x)+αkfk(x) ω k + 1 , i = ω k , i e x p [ − y i α k f k ( x , i ) ] \omega_{k + 1, i} = \omega{k, i}exp[-y_i\alpha_kf_k(x, i)] ωk+1,i=ωk,iexp[yiαkfk(x,i)],即可得到:
ω k + 1 , i = ω k i e x p [ − y i α k f k ( x i ) ] \omega_{k + 1, i} = \omega_{ki}exp[-y_i\alpha_kf_k(x_i)] ωk+1,i=ωkiexp[yiαkfk(xi)]

2.2. 正则化

防止Adaboost过拟合,会加入正则化项 μ \mu μ,通常称为步长
F k ( x ) = F k − 1 ( x ) + μ α k f k ( x ) , 0 < μ ≤ 1 F_k(x) = F_{k - 1}(x) + \mu\alpha_kf_k(x), 0 < \mu \leq 1 Fk(x)=Fk1(x)+μαkfk(x),0<μ1

3. 优缺点

优点:

  1. 分类精度高;
  2. 可以用各种回归分类模型来构建弱学习器,非常灵活;
  3. 不容易发生过拟合。

缺点:

  1. 对异常点敏感,异常点会获得较高权重。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值