集成机器学习5—Adaboost

1 Boosting

∙ \bullet Boosting:将弱学习器组合成强学习器。
   ∙ \bullet 构造一个性能很高的预测(强学习器)是一件很困难的事情
   ∙ \bullet 但构造一个性能一般的预测(弱学习器)并不难
     ∙ \bullet 弱学习器:性能比随机猜测略好(如层数不深的决策树)
∙ \bullet Boosting学习框架
   ∙ \bullet 学习第一个弱学习器 ϕ 1 \phi_1 ϕ1
   ∙ \bullet 学习第二个弱学习器 ϕ 2 \phi_2 ϕ2
   ∙ \bullet
   ∙ \bullet 组合所有的弱学习器: f ( x ) = ∑ m = 1 M α m ϕ m ( x ) f(x) = \sum_{m=1}^{M}\alpha_m\phi_m(\mathbf x) f(x)=m=1Mαmϕm(x)
∙ \bullet Boosting的弱学习器是按顺序学习的,相互之间并不独立。而Bagging则需要booststrap采样,然后独立地训练弱学习器。

2 怎样得到互不的学习器?

∙ \bullet 在不同的训练集上训练学习器
∙ \bullet 怎么得到不同的训练集呢?
   ∙ \bullet 对原始训练集重采样
   ∙ \bullet 对原始训练集重新加权
     ∙ \bullet 在实际操作中改变目标函数即可。
    思考问题:为什么改变样本的权重,有利于对该样本进行准确的预测?
    在这里插入图片描述

3 AdaBoost的基本思想

∙ \bullet Adaptive Boosting:自适应增强
∙ \bullet 在弱学习器 ϕ 1 \phi_1 ϕ1失败的样本上学习第二个弱学习器 ϕ 2 \phi_2 ϕ2
∙ \bullet 令弱学习器 ϕ 1 \phi_1 ϕ1在其训练集上的误差为: ε 1 = ∑ i = 1 N w 1 , i I ( ϕ 1 ( x ) ≠ y i ) z 1 , Z 1 = ∑ i = 1 N w 1 , i , w 1 , i = 1 / N \varepsilon_1 = \frac{\sum_{i=1}^{N}w_{1,i}\mathbb I(\phi_1(\mathbf x) \neq y_i)}{z_1}, Z_1 = \sum_{i=1}^{N}w_{1,i}, w_{1,i} = 1/N ε1=z1i=1Nw1,iI(ϕ1(x)=yi)Z1=i=1Nw1,iw1,i=1/N
∙ \bullet 将权重由 w 1 w_1 w1变为 w 2 w_2 w2,使得:
ε 2 = ∑ i = 1 N w 2 , i I ( ϕ 1 ( x ) ≠ y i ) z 2 = 1 2 ,即学习器 ϕ 1 在训练集 2 上的性能为随机猜测 \varepsilon_2 = \frac{\sum_{i=1}^{N}w_{2,i}\mathbb I(\phi_1(\mathbf x) \neq y_i)}{z_2} = \frac{1}{2},即学习器\phi_1在训练集2上的性能为随机猜测 ε2=z2i=1Nw2,iI(ϕ1(x)=yi)=21,即学习器ϕ1在训练集2上的性能为随机猜测
∙ \bullet 根据权重 w 2 \mathbf w_2 w2训练弱学习器 ϕ 2 \phi_2 ϕ2

4 样本重新加权

∙ \bullet 应如何加权呢?分对的样本,其权重除以 d 1 d_1 d1,使权重减小;分错的样本,其权重乘以 d 1 d_1 d1,使权重增大;很明显 d 1 d_1 d1的值应大于1,下面对 d 1 d_1 d1的值进行推导。在这里插入图片描述个人推断:若要使上图中倒数第二个等式能推导出倒数第一个等式,需要满足条件:对于 ϕ 1 \phi_1 ϕ1在训练集2上出错的样本, ϕ 1 \phi_1 ϕ1在训练集上1相同样本同样出错,才能都是乘以 d i d_i di的关系。正确的样本,同样存在这个现象。在这里插入图片描述

∙ \bullet 以上推导过程的自然语言描述:
1) 利用 ϕ 1 \phi_1 ϕ1在权重为 w 2 w_2 w2的训练集上的误差为 1 2 \frac{1}{2} 21的条件,推导出预测正确的 w 2 w_2 w2权重和 = 预测错误的 w 2 w_2 w2权重和。
2) w 2 w_2 w2 w 1 w_1 w1之间或除以 d 1 d_1 d1或乘以 d 1 d_1 d1的关系代入上一步的等式,得到一个新的等式。
3) 针对上一步得到的等式,将 d 1 d_1 d1的部分提出连加符号,连加符号中生育的部分与 ε 1 \varepsilon_1 ε1存在数量关系,代入这个数量关系,最后就能求出 d 1 d_1 d1

5 AdaBoost M1算法

给定训练集: ( x 1 , y 1 ) , . . . , ( x N , y N ) (\mathbf x_1,y_1),...,(\mathbf x_N,y_N) (x1,y1),...,(xN,yN),其中 y i ∈ { 1 , − 1 } y_i \in \{1,-1\} yi{1,1}表示 x i \mathbf x_i xi的类别标签
训练集上样本的初始: w 1 , i = 1 N w_{1,i} = \frac{1}{N} w1,i=N1
对 m = 1:M,
  对训练样本采用 w m , i w_{m,i} wm,i计算弱分类器 ϕ m ( x ) \phi_m(\mathbf x) ϕm(x)
  计算该若分类器 ϕ m ( x ) \phi_m(\mathbf x) ϕm(x)在分布 w m w_m wm上的错误率: ε m = ∑ i = 1 N w m , i I ( ϕ m ( x i ) ≠ y i ) ∑ i = 1 N w m , i \varepsilon_m = \frac{\sum_{i=1}^{N}w_{m,i}\mathbb I(\phi_m(\mathbf x_i) \neq y_i)}{\sum_{i=1}^{N}w_{m,i}} εm=i=1Nwm,ii=1Nwm,iI(ϕm(xi)=yi)
  计算: d m = ( 1 − ε m ) / ε m , α m = l o g ( d m ) = 1 2 l o g 1 − ϵ m ϵ m d_m = \sqrt{(1-\varepsilon_m)/\varepsilon_m},\alpha_m=log(d_m) = \frac{1}{2}log\frac{1-\epsilon_m}{\epsilon_m} dm=(1εm)/εm αm=log(dm)=21logϵm1ϵm
  更新训练样本的分布: w m + 1 , i = w m , i e x p ( − α m y i ϕ m ( x i ) ) Z m + 1 w_{m+1,i} = \frac{w_{m,i}exp(-\alpha_my_i\phi_m(\mathbf x_i))}{Z_{m+1}} wm+1,i=Zm+1wm,iexp(αmyiϕm(xi)),分对的样本: y i ϕ m ( x i ) = 1 y_i\phi_m(\mathbf x_i) = 1 yiϕm(xi)=1,否则为-1。
其中 Z m + 1 = ∑ i = 1 N w m + 1 , i Z_{m+1} = \sum_{i=1}^{N}w_{m+1,i} Zm+1=i=1Nwm+1,i为归一化常数,使得 w m + 1 w_{m+1} wm+1是一个分布。
最后的强分类器为: f ( x ) = s g n ( ∑ m = 1 M α m ϕ m ( x ) ) f(x) = sgn(\sum_{m=1}^{M}\alpha_m\phi_m(\mathbf x)) f(x)=sgn(m=1Mαmϕm(x))
在这里插入图片描述

6 证明:随着弱学习器的数目增多,训练误差越来越小。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述以上四个PPT没讲,只讲了指数损失的值会大于等于01损失。也提到了,Logitsit用的是类似于logitstic损失(这个描述可能不对),SVM用到的是合页损失,而Adaboost用到的就是指数损失。

7 测试误差

在这里插入图片描述
左图应该是模型复杂度M和误差之间的关系。当M增大时,Adaboost的测试误差不会像复杂度一样,先下降后增大,而是会一直下降,类似于Bagging,但跟bagging又可能不那么一样,具体取决于数据。
∙ \bullet 测试误差随着M的增加而减小可用间隔来解释。
∙ \bullet 上述训练误差(0-1损失)只考虑了分类是否正确,还应考虑分类的置信度。
∙ \bullet 分类的置信度,判别函数的值yf(x)。在这里插入图片描述
train error是0-1损失,5的时候就已经为0了。而margins是置信度,5的时候还是有一点点,但M再增大到100,就没有了,也就是会被分的越开。那么问题来了,置信度不是越大越好吗?yf(x),这样的表达式得到的不是1、-1这样的值吗?是不是这里的f(x)不是类别?或不是最终类别,只是一个类似于概率这样数据。

  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值