Ababoost 算法最简易理解

算法简介

Ababoost 算法是boost算法族之中的一个。boost 算法族是这样一种决策算法,它有多个子学习器组成,学习器之间的学习具有强依赖性,必须串行生成。Ababoost 是boost种最著名的一种。它使用的评价方式是指数损失函数。

两个思想

  1. 将弱的学习器进行线性组合得到一个强的学习器的过程。
    f ( X ) = ∑ t = 1 N β ϕ t ( x ) f(X)=\sum_{t=1}^{N} \beta \phi_{t}(x) f(X)=t=1Nβϕt(x)
  2. 将前面学习器学习错误的样本,在后面的学习器中要收到更多的关注

两个问题

在问题的实现和推到过程中,必然会有两个问题需要解决。

  1. 如何学习获得学习器 β ϕ t ( x ) \beta \phi_{t}(x) βϕt(x)
  2. 用什么方法使得学习错误的样本得到关注

算法流程


的的


算法推倒

Ababoost 算法采用指数损失函数 L m ( ϕ ) = ∑ i = 1 N exp ⁡ [ − y i f m ( x i ) ] L_{m}(\phi)=\sum_{i=1}^{N} \exp [-y_i f_m(\mathbf{x}_i)] Lm(ϕ)=i=1Nexp[yifm(xi)], 算法实现的目的就是使得损失函数最小。
f m ( x i ) = f m − 1 ( x i ) + β ϕ ( x i ) f_m(\mathbf{x}_i)=f_{m-1}\left(\mathbf{x}_{i}\right)+\beta \phi\left(\mathbf{x}_{i})\right. fm(xi)=fm1(xi)+βϕ(xi)

L m ( ϕ ) = ∑ i = 1 N exp ⁡ [ − y ~ i ( f m − 1 ( x i ) + β ϕ ( x i ) ) ] = ∑ i = 1 N w i , m exp ⁡ ( − β y ~ i ϕ ( x i ) ) L_{m}(\phi)=\sum_{i=1}^{N} \exp \left[-\tilde{y}_{i}\left(f_{m-1}\left(\mathbf{x}_{i}\right)+\beta \phi\left(\mathbf{x}_{i}\right)\right)\right]=\sum_{i=1}^{N} w_{i, m} \exp \left(-\beta \tilde{y}_{i} \phi\left(\mathbf{x}_{i}\right)\right) Lm(ϕ)=i=1Nexp[y~i(fm1(xi)+βϕ(xi))]=i=1Nwi,mexp(βy~iϕ(xi))
这里 w i , m ≜ exp ⁡ ( − y ~ i f m − 1 ( x i ) ) w_{i, m} \triangleq \exp \left(-\tilde{y}_{i} f_{m-1}\left(\mathbf{x}_{i}\right)\right) wi,mexp(y~ifm1(xi)) 表示对于数据的权重,也就是说在新加入的学习器 ϕ ( x i ) \phi(\mathbf{x}_i) ϕ(xi) 对于顺势函数权重的调整。
由于 ϕ ( x ) , y ~ i ∈ { − 1 , + 1 } \phi(\mathbf{x}),\tilde{y}_{i} \in\{-1,+1\} ϕ(x),y~i{1,+1},他们只有两个取 ,所以:
L m = e − β ∑ y ~ i = ϕ ( x i ) w i , m + e β ∑ y ~ i ≠ ϕ ( x i ) w i , m = ( e β − e − β ) ∑ i = 1 N w i , m I ( y ~ i ≠ ϕ ( x i ) ) + e − β ∑ i = 1 N w i , m \begin{aligned} L_{m} &=e^{-\beta} \sum_{\tilde{y}_{i}=\phi\left(\mathbf{x}_{i}\right)} w_{i, m}+e^{\beta} \sum_{\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)} w_{i, m} \\ &=\left(e^{\beta}-e^{-\beta}\right) \sum_{i=1}^{N} w_{i, m} \mathbb{I}\left(\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)\right)+e^{-\beta} \sum_{i=1}^{N} w_{i, m} \end{aligned} Lm=eβy~i=ϕ(xi)wi,m+eβy~i=ϕ(xi)wi,m=(eβeβ)i=1Nwi,mI(y~i=ϕ(xi))+eβi=1Nwi,m
理解上面的变化需要注意个问题:
∑ i = 1 N w i , m = ∑ y ~ i = ϕ ( x i ) w i , m + ∑ y ~ i ≠ ϕ ( x i ) w i , m = ∑ i = 1 N w i , m I ( y ~ i ≠ ϕ ( x i ) ) + ∑ i = 1 N w i , m I ( y ~ i = ϕ ( x i ) ) \begin{aligned} \sum_{i=1}^{N}w_{i,m} &= \sum_{\tilde{y}_{i}=\phi\left(\mathbf{x}_{i}\right)}w_{i,m} + \sum_{\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)}w_{i,m} \\ &=\sum_{i=1}^{N} w_{i, m} \mathbb{I}\left(\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)\right)+\sum_{i=1}^{N} w_{i, m} \mathbb{I}\left(\tilde{y}_{i} = \phi\left(\mathbf{x}_{i}\right)\right) \end{aligned} i=1Nwi,m=y~i=ϕ(xi)wi,m+y~i=ϕ(xi)wi,m=i=1Nwi,mI(y~i=ϕ(xi))+i=1Nwi,mI(y~i=ϕ(xi))
β > 0 \beta > 0 β>0 的假设下( e β − e − β e^{\beta}-e^{-\beta} eβeβ >0), w i . j w_{i.j} wi.j 在生成 ϕ ( x i ) \phi(\mathbf{x}_i) ϕ(xi) 的时候是已知的。则:
ϕ m = argmin ⁡ ϕ w i , m I ( y ~ i ≠ ϕ ( x i ) ) \phi_{m}=\underset{\phi}{\operatorname{argmin}} w_{i, m} \mathbb{I}\left(\tilde{y}_{i} \neq \phi\left(\mathbf{x}_{i}\right)\right) ϕm=ϕargminwi,mI(y~i=ϕ(xi))
也就是说第m个学习器应该在 w i , m w_{i,m} wi,m的权值下尽可能的小。
关于学习器的系数 β \beta β,可通过对 L m L_m Lm对它 求导并令其等于0获得。
β m = 1 2 log ⁡ 1 − err ⁡ m err ⁡ m \beta_{m}=\frac{1}{2} \log \frac{1-\operatorname{err}_{m}}{\operatorname{err}_{m}} βm=21logerrm1errm
其中
err ⁡ m = ∑ i = 1 N w i , m I ( y ~ i ≠ ϕ m ( x i ) ) ∑ i = 1 N w i , m \operatorname{err}_{m}=\frac{\sum_{i=1}^{N} w_{i,m} \mathbb{I}\left(\tilde{y}_{i} \neq \phi_{m}\left(\mathbf{x}_{i}\right)\right)}{\sum_{i=1}^{N} w_{i, m}} errm=i=1Nwi,mi=1Nwi,mI(y~i=ϕm(xi))
对于权值更新。
w i , m + 1 = w i , m e − β m y ~ i ϕ m ( x i ) = w i , m e β m ( 2 I ( y ~ i ≠ ϕ m ( x i ) ) − 1 ) = w i , m e 2 β m I ( y ~ i ≠ ϕ m ( x i ) ) e − β m \begin{aligned} w_{i, m+1} &=w_{i, m} e^{-\beta_{m} \tilde{y}_{i} \phi_{m}\left(\mathbf{x}_{i}\right)} \\ &=w_{i, m} e^{\beta_{m}\left(2 \mathrm{I}\left(\tilde{y}_{i} \neq \phi_{m}\left(\mathbf{x}_{i}\right)\right)-1\right)} \\ &=w_{i, m} e^{2 \beta_{m} \mathrm{I}\left(\tilde{y}_{i} \neq \phi_{m}\left(\mathbf{x}_{i}\right)\right)} e^{-\beta_{m}} \end{aligned} wi,m+1=wi,meβmy~iϕm(xi)=wi,meβm(2I(y~i=ϕm(xi))1)=wi,me2βmI(y~i=ϕm(xi))eβm

举例论证

《统计学方法》中的例子, 训练数据如下表

序号12345678910
x0123456789
y111-1-1-1111-1

用上述数据训练一个形如下面的弱学习器。训练的参数包括两个数

  • 符号(大于号还是小于号)
  • 阈值v 的大小
    G ( x ) = { 1 , x > / < v − 1 , o t h e r s G_{}(x)=\left\{\begin{array}{ll}{1,} & {x>/<v } \\ {-1,} & {others}\end{array}\right. G(x)={1,1,x>/<vothers
    下面就是训练的记录
第一次训练,初始化权值:
[0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1]
寻找第一个最优分类器                                                  
v=0.50, mis=[False  True  True False False False  True  True  True False],loss=0.5000        
v=0.50, mis=[ True False False  True  True  True False False False  True],loss=0.5000        
v=1.50, mis=[False False  True False False False  True  True  True False],loss=0.4000        
v=1.50, mis=[ True  True False  True  True  True False False False  True],loss=0.6000        
v=2.50, mis=[False False False False False False  True  True  True False],loss=0.3000        
v=2.50, mis=[ True  True  True  True  True  True False False False  True],loss=0.7000        
v=3.50, mis=[False False False  True False False  True  True  True False],loss=0.4000        
v=3.50, mis=[ True  True  True False  True  True False False False  True],loss=0.6000        
v=4.50, mis=[False False False  True  True False  True  True  True False],loss=0.5000        
v=4.50, mis=[ True  True  True False False  True False False False  True],loss=0.5000        
v=5.50, mis=[False False False  True  True  True  True  True  True False],loss=0.6000        
v=5.50, mis=[ True  True  True False False False False False False  True],loss=0.4000        
v=6.50, mis=[False False False  True  True  True False  True  True False],loss=0.5000        
v=6.50, mis=[ True  True  True False False False  True False False  True],loss=0.5000        
v=7.50, mis=[False False False  True  True  True False False  True False],loss=0.4000        
v=7.50, mis=[ True  True  True False False False  True  True False  True],loss=0.6000        
v=8.50, mis=[False False False  True  True  True False False False False],loss=0.3000        
v=8.50, mis=[ True  True  True False False False  True  True  True  True],loss=0.7000        
v=9.50, mis=[False False False  True  True  True False False False  True],loss=0.4000        
v=9.50, mis=[ True  True  True False False False  True  True  True False],loss=0.6000        
0.30000000000000004                                                                          
threshold=2.5,direction=0,alpha=0.42365 
第一个搜索完成,下面进行权值更新                                                     
[0.07142857 0.07142857 0.07142857 0.07142857 0.07142857 0.07142857                           
 0.16666667 0.16666667 0.16666667 0.07142857]   
 
 搜索第二个最优分类器                                             
v=0.50, mis=[False  True  True False False False  True  True  True False],loss=0.6429        
v=0.50, mis=[ True False False  True  True  True False False False  True],loss=0.3571        
v=1.50, mis=[False False  True False False False  True  True  True False],loss=0.5714        
v=1.50, mis=[ True  True False  True  True  True False False False  True],loss=0.4286        
v=2.50, mis=[False False False False False False  True  True  True False],loss=0.5000        
v=2.50, mis=[ True  True  True  True  True  True False False False  True],loss=0.5000        
v=3.50, mis=[False False False  True False False  True  True  True False],loss=0.5714        
v=3.50, mis=[ True  True  True False  True  True False False False  True],loss=0.4286        
v=4.50, mis=[False False False  True  True False  True  True  True False],loss=0.6429        
v=4.50, mis=[ True  True  True False False  True False False False  True],loss=0.3571        
v=5.50, mis=[False False False  True  True  True  True  True  True False],loss=0.7143        
v=5.50, mis=[ True  True  True False False False False False False  True],loss=0.2857        
v=6.50, mis=[False False False  True  True  True False  True  True False],loss=0.5476        
v=6.50, mis=[ True  True  True False False False  True False False  True],loss=0.4524        
v=7.50, mis=[False False False  True  True  True False False  True False],loss=0.3810        
v=7.50, mis=[ True  True  True False False False  True  True False  True],loss=0.6190        
v=8.50, mis=[False False False  True  True  True False False False False],loss=0.2143        
v=8.50, mis=[ True  True  True False False False  True  True  True  True],loss=0.7857        
v=9.50, mis=[False False False  True  True  True False False False  True],loss=0.2857        
v=9.50, mis=[ True  True  True False False False  True  True  True False],loss=0.7143        
0.21428571428571427                                                                          
threshold=8.5,direction=0,alpha=0.64964                                                      
[0.04545455 0.04545455 0.04545455 0.16666667 0.16666667 0.16666667                           
 0.10606061 0.10606061 0.10606061 0.04545455]  
                                               
v=0.50, mis=[False  True  True False False False  True  True  True False],loss=0.4091        
v=0.50, mis=[ True False False  True  True  True False False False  True],loss=0.5909        
v=1.50, mis=[False False  True False False False  True  True  True False],loss=0.3636        
v=1.50, mis=[ True  True False  True  True  True False False False  True],loss=0.6364        
v=2.50, mis=[False False False False False False  True  True  True False],loss=0.3182        
v=2.50, mis=[ True  True  True  True  True  True False False False  True],loss=0.6818        
v=3.50, mis=[False False False  True False False  True  True  True False],loss=0.4848        
v=3.50, mis=[ True  True  True False  True  True False False False  True],loss=0.5152        
v=4.50, mis=[False False False  True  True False  True  True  True False],loss=0.6515        
v=4.50, mis=[ True  True  True False False  True False False False  True],loss=0.3485        
v=5.50, mis=[False False False  True  True  True  True  True  True False],loss=0.8182        
v=5.50, mis=[ True  True  True False False False False False False  True],loss=0.1818        
v=6.50, mis=[False False False  True  True  True False  True  True False],loss=0.7121        
v=6.50, mis=[ True  True  True False False False  True False False  True],loss=0.2879        
v=7.50, mis=[False False False  True  True  True False False  True False],loss=0.6061        
v=7.50, mis=[ True  True  True False False False  True  True False  True],loss=0.3939        
v=8.50, mis=[False False False  True  True  True False False False False],loss=0.5000        
v=8.50, mis=[ True  True  True False False False  True  True  True  True],loss=0.5000        
v=9.50, mis=[False False False  True  True  True False False False  True],loss=0.5455        
v=9.50, mis=[ True  True  True False False False  True  True  True False],loss=0.4545        
0.18181818181818185                                                                          
threshold=5.5,direction=1,alpha=0.75204  

至此训练完成,预测结果如下                                                    
[ 1.  1.  1. -1. -1. -1.  1.  1.  1. -1.]                                                    

由此可以看出训练出了三个子分类器。并且最后的预测结果完全和标记相同

G 1 ( x ) = { 1 , x < 2.5 − 1 , o t h e r s G 2 ( x ) = { 1 , x < 8.5 − 1 , o t h e r s G 2 ( x ) = { 1 , x > 5.5 − 1 , o t h e r s G_{1}(x)=\left\{\begin{array}{ll}{1,} & {x<2.5 } \\ {-1,} & {others}\end{array}\right.\\ G_{2}(x)=\left\{\begin{array}{ll}{1,} & {x<8.5 } \\ {-1,} & {others}\end{array}\right.\\ G_{2}(x)=\left\{\begin{array}{ll}{1,} & {x>5.5 } \\ {-1,} & {others}\end{array}\right. G1(x)={1,1,x<2.5othersG2(x)={1,1,x<8.5othersG2(x)={1,1,x>5.5others

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值