集成算法 学习笔记(二) Adaboost的算法简介和推导

Adaboost算法简介:

Adaboost集成算法通过基于上一次的预测结果,调整每一次样本的权重值(增加分类错误的样本权重,减少分类正确的样本权重),使得在下一次进行预测时,更加关注那些分类错误的样本。
最终的分类器为
f ( x ) = s i g n ( i = 1 M α m G m ( x ) ) f(x) = sign\big(\sum\limits_{i=1}^M\alpha_mG_m(x)\big)
其中 α m \alpha_m 为每个弱分类器对应的权重

具体的算法过程

  1. 初始化训练数据的权重分布 D 1 = ( w 11 , w 12 , w 1 i , . . . w 1 N ) , w 1 i = 1 N , i = 1 , 2 , . . . N D_1=(w_{11},w_{12},w_{1i},...w_{1N}),w_{1i}=\frac{1}{N},i=1,2,...N
  2. 对m=1,2,…M
    a.使用具有权值分布的 D m D_m 训练数据集学习,得到弱分类器 G m G_m
    b.计算 G m G_m 在训练数据集上的分类误差率
    e m = i = 1 N w m i I ( G m ( x i ) ̸ = y i ) e_m = \sum\limits_{i=1}^Nw_{mi}I(G_m(x_i) \not = y_i)
    c.计算 G m G_m 的系数
    α m = 1 2 l o g 1 e m e m \alpha_m = \frac{1}{2}log\frac{1-e_m}{e_m}
    可以看出,如果 G m G_m 的错误太多,则 α m \alpha_m 较小
    d.更新训练数据集的权值分布
    D m + 1 = ( w m + 1 , 1 , w m + 1 , 2 , w m + 1 , i , . . . w m + 1 , N ) D_{m+1} = (w_{m+1,1},w_{m+1,2},w_{m+1,i},...w_{m+1,N})
    w m + 1 , i = w m i Z m e x p ( α m y i G m ( x i ) ) w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i))
    其中 Z m = i = 1 N w m i e x p ( α m y i G m x i ) Z_m = \sum\limits_{i=1}^N w_{mi}exp(-\alpha_my_iG_m{x_i}) 为规范化因子,使 D m + 1 D_{m+1} 成为一个概率分布。

Adaboost算法推导

在上述的算法流程中,存在几个疑惑,比如为什么 α m = 1 2 l o g 1 e m e m \alpha_m=\frac{1}{2}log\frac{1-e_m}{e_m} ,为什么每个样本的权值更新公式是 w m + 1 , i = w m i Z m e x p ( α m y i G m ( x i ) ) w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i))
接下来在推导中解决上述问题。

Adaboost可以理解为是一个前向分步加法算法的特例,模型基本是由基本分类器组成的加法模型,损失函数是指数函数

指数函数的损失函数为
L e x p ( y G ( x ) ) L=exp(-y G(x))
可以看出,如果预测值与真实值相同,则损失函数L为 e x p ( 1 ) exp(-1) ,如果预测值与真实值不同,则损失函数L为 e x p ( 1 ) exp(1) ,故减小损失函数,则需让模型拟合得正确率更高。

Adaboost的算法结果可以理解为是在前面m-1个弱分类器确定的情况下,通过改进 G m G_m 来达到优化损失函数的目的。
故对于第m次迭代,目标是减小损失函数,即
min α , G m i = 1 N e x p ( y i ( f m 1 ( x ) + α G ( x i ) ) ) = min α , G m i = 1 N e x p ( y i f m 1 ( x ) ) e x p ( y i α G ( x i ) ) \min\limits_{\alpha,G_m}\sum\limits_{i=1}^N exp(-y_i (f_{m-1}(x)+\alpha G(x_i)))\\ =\min\limits_{\alpha,G_m}\sum\limits_{i=1}^N exp(-y_i f_{m-1}(x))exp(-y_i\alpha G(x_i))
其中由于 e x p ( y i f m 1 ( x ) ) exp(-y_i f_{m-1}(x)) 既不依赖 α \alpha 也不依赖 G m G_m ,故用 w ˉ m i \bar w_{m_i}表示
故对于第m次迭代,要减小的损失函数为
min α , G m i = 1 N w ˉ m i e x p ( y i α G ( x i ) ) \min\limits_{\alpha,G_m}\sum\limits_{i=1}^N \bar w_{mi}exp(-y_i\alpha G(x_i))

接下来分成两步来求解,1求 G m G^*m ,2求 α \alpha^*
1求 G m G^*m
由于存在 G m G^*m 分类正确和分类错误两种情况,所以将损失函数拆成分类正确和分类错误这样的两项
min α , G m i = 1 N w ˉ m i e x p ( y i α G ( x i ) ) = i = 1 N w ˉ m , i e x p ( α ) I ( G ( x i ) = y i ) + i = 1 N w ˉ m , i e x p ( α ) I ( G ( x i ) ̸ = y i ) = i = 1 N w ˉ m i e x p ( α ) + ( e x p ( α ) e x p ( α ) ) i = 1 N w ˉ m , i I ( G ( x i ) ̸ = y i ) \min\limits_{\alpha,G_m}\sum\limits_{i=1}^N \bar w_{mi}exp(-y_i\alpha G(x_i))\\ =\sum\limits_{i=1}^N\bar w_{m,i}exp(-\alpha)I(G(x_i)=y_i)+\sum\limits_{i=1}^N\bar w_{m,i}exp(\alpha)I(G(x_i)\not=y_i)\\ =\sum\limits_{i=1}^N\bar w_{mi}exp(-\alpha)+\big(exp(\alpha)-exp(-\alpha)\big) \sum\limits_{i=1}^N\bar w_{m,i}I(G(x_i) \not=y_i)

G m = min G i = 1 N w ˉ m , i ( G ( x i ) ̸ = y i ) G^*m=\min\limits_{G}\sum\limits_{i=1}^N\bar w_{m,i}(G(x_i) \not=y_i)
即在 w ˉ m i \bar w_{mi} 权重下,分类错误最低的 G m G_m

2求 α \alpha^*
确定好 G m G^*m 后,带入原损失函数中
i = 1 N w ˉ m i e x p ( α ) + ( e x p ( α ) e x p ( α ) ) i = 1 N w ˉ m , i I ( G ( x i ) ̸ = y i ) \sum\limits_{i=1}^N\bar w_{mi}exp(-\alpha)+\big(exp(\alpha)-exp(-\alpha)\big) \sum\limits_{i=1}^N\bar w_{m,i}I(G(x_i) \not=y_i)
α \alpha 求导,并令导数为0
e x p ( α ) i = 1 N w ˉ m i + ( e x p ( α ) + e x p ( α ) ) i = 1 N w ˉ m , i I ( G ( x i ) ̸ = y i ) = 0 -exp(-\alpha)\sum\limits_{i=1}^N\bar w_{mi} +(exp(\alpha)+exp(-\alpha))\sum\limits_{i=1}^N\bar w_{m,i}I(G(x_i) \not=y_i)=0
把含有 e x p ( α ) exp(-\alpha) 合并成一类,含有 e x p ( α ) exp(\alpha) 合并成另一类
e x p ( α ) i = 1 N w ˉ m , i I ( G ( x i ) ̸ = y i ) = e x p ( α ) ( i = 1 N w ˉ m , i i = 1 N w ˉ m , i I ( G ( x i ) ̸ = y i ) ) exp(\alpha)\sum\limits_{i=1}^N\bar w_{m,i}I(G(x_i) \not=y_i) = exp(-\alpha)\big(\sum\limits_{i=1}^N\bar w_{m,i} - \sum\limits_{i=1}^N\bar w_{m,i}I(G(x_i) \not=y_i)\big)
等式左右两侧同时除以 i = 1 N w ˉ m , i \sum\limits_{i=1}^N\bar w_{m,i}
e m e x p ( α ) = e x p ( α ) ( 1 e m ) e_m exp(\alpha) = exp(-\alpha)(1-e_m)
左右取对数
α + l o g ( e m ) = α + l o g ( 1 e m ) \alpha+log(e_m) = -\alpha+ log(1-e_m)
最终得
α = 1 2 l o g ( 1 e m e m ) \alpha^*=\frac{1}{2}log(\frac{1-e_m}{e_m})

最后每一轮的样本权重更新由 w ˉ m i = e x p ( y i f m 1 ( x ) ) \bar w_{mi}=exp(-y_i f_{m-1}(x))
w ˉ m + 1 , i = e x p ( y i ( f m ( x ) ) ) = e x p ( y i ( f m 1 ( x ) + α G m ) ) = e x p ( y i f m 1 ( x ) ) e x p ( y i α G m ) = w ˉ m i e x p ( y i α G m ) \bar w_{m+1,i} = exp(-y_i(f_m(x)))\\ =exp(-y_i(f_{m-1}(x)+\alpha G_m))\\ =exp(-y_if_{m-1}(x))exp(-y_i\alpha G_m)\\ =\bar w_{mi}exp(-y_i\alpha G_m)
这与Adaboost算法的样本权值更新只相差规范化因子,因此等价。因为乘上规范化因子后,只是改变了系数大小,对于中间推导的 α \alpha^* G m G^*m 都是没有影响的。

发布了38 篇原创文章 · 获赞 9 · 访问量 2432

猜你喜欢

转载自blog.csdn.net/weixin_44264662/article/details/100711498