集成学习之Adaboost算法

 

 

1、Adaboost算法概述

集成学习按照个体学习器之间是否存在依赖关系进行划分,主要代表算法是bagging系列算法和boosting系列算法,今天主要讲述的是boosting系列代表算法之Adaboost。Adaboost算法不需要预先知道弱学习算法学习正确率的下限,并且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度。

 

2、算法流程介绍

算法流程图如下:

image

 

1.初始化训练样本的权值分布。

假设训练集有m个样本,则每一个训练样本最开始时都被赋予相同的权值:1/m。

2.训练弱分类器。

如果某个样本已经被准确地分类,那么在构造下一个训练集中,它的权值就会被降低,反之升高。目的是为了更新数据集的权重集和弱学习器的权重。

3.将各个训练得到的弱分类器组合成强分类器。

基于弱分类器的权重值和分类结果线性组合得到强分类器,而分类误差率越低的弱分类器在最终分类器中权重越大,误差率越高则权重越小。

 

3、Adaboost分类算法

假设二分类的训练数据集$T=\{(x_1,y_1),(x_2,y_2),⋅⋅⋅,(x_m,y_m)\}$,分类标记定义为$y_i\in \{+1,−1\}$。

3.1 初始化权重

假设每一个训练样本最开始时都被赋予相同的权值:$1/m$,即每个训练样本在基本分类器的学习中作用相同。数学化的语言表示为$$w^{t=1}_i=\frac{1}{m}$$

3.2 训练弱分类器

假设执行M轮弱分类器的训练可以组合得到一个强分类器,则第k轮的训练样本的基分类$G_k(x):\{-1,1\}$,权值分布为$D_m:\{w_{k1},w_{k2},…,w_{km}\}$。

训练过程主要包含3步操作。即计算分类误差率 、计算基分类器权重、更新下一个弱分类器权重。下面将对第k步的弱学习器计算进行叙述。

(1)计算分类误差率

第$k$轮基分类器$G_k(x)$在训练数据集上的分类误差率$e_k$定义为 $$e_k = P(G_k(x_i) \neq y_i) = \sum\limits_{i=1}^{m}w_{ki}I(G_k(x_i) \neq y_i),且\sum\limits_{i=1}^{m}w_{ki}=1。$$

可以看出,$G_k(x)$在加权的训练数据集上的分类误差率是被$G_k(x)$误分类样本的权值之和,由此可以看出数据权值分布$D_m$与基本分类器$G_k(x)$的分类误差率的关系。

(2)计算基分类器权重系数

该系数表示$G_M(x)$在最终分类器中的重要程度,目的在于使我们得到基分类器在最终分类器中所占的权值,系数计算公式如下: $$\alpha_k = \frac{1}{2}log\frac{1-e_k}{e_k}$$

如果分类误差率$e_k$越大,则对应的弱分类器权重系数$\alpha_k$越小。也就是说,误差率小的弱分类器权重系数越大。

由表达式可知,当$e_k\leq 12$时,$\alpha_k\geq 0$,并且$\alpha_k$随着$e_k$的减小而增大,意味着分类误差越小的基本分类器在最终分类器的作用越大,而$e_k\geq 12$则刚好相反,这正好验证了集成学习中每个个体分类器的分类精度必须大于0.5的前提条件。

(3)更新训练集的权值分布

假设第$k$个弱分类器的样本集权重系数为$D(k) = (w_{k1}, w_{k2}, ...w_{km})$,则对应的第$k+1$个弱分类器的样本集权重系数为 $$w_{k+1,i} = \frac{w_{ki}}{Z_k}exp(-\alpha_ky_iG_k(x_i))$$

$Z_k$是规范化因子 $$Z_k = \sum\limits_{i=1}^{m}w_{ki}exp(-\alpha_ky_iG_k(x_i))$$

3.3 组合强分类器

基分类器根据权重参数线性组合的结合策略,最终的强分类器为 $$f(x) = sign(\sum\limits_{k=1}^{M}\alpha_kG_k(x))$$

 

4、Adaboost回归算法

假设二分类的训练数据集$T=\{(x_1,y_1),(x_2,y_2),⋅⋅⋅,(x_n,y_n)\}$。

4.1 初始化权重

假设每一个训练样本最开始时都被赋予相同的权值:$1/m$,即每个训练样本在基本分类器的学习中作用相同。数学化的语言表示为$$w^{t=1}_i=\frac{1}{m}$$

4.2 训练弱分类器

假设执行M轮弱分类器的训练可以组合得到一个强分类器,则第k轮的训练样本的基分类$G_k(x)$,权值分布为$Dn:\{w_{k1},w_{k2},…,w_{km}\}$。

训练过程主要包含5步操作。即计算训练集最大误差、计算每个样本的相对误差、计算分类误差率 、计算基分类器权重、更新下一个弱分类器权值分布。下面将对第k步的弱学习器计算进行叙述。

(1)计算训练集最大误差

$$E_k= max|y_i - G_k(x_i)|\;i=1,2...m$$

(2)计算每个样本的相对误差

若是线性误差,则$$e_{ki}= \frac{|y_i - G_k(x_i)|}{E_k}$$

若是平方误差,则$$e_{ki}= \frac{(y_i - G_k(x_i))^2}{E_k^2}$$

若是指数误差,则$$e_{ki}= 1 - exp(\frac{-y_i + G_k(x_i))}{E_k})$$

(3)计算分类误差率 $$e_k = \sum\limits_{i=1}^{m}w_{ki}e_{ki}$$

(4)计算基分类器权重系数

$$\alpha_k =\frac{e_k}{1-e_k}$$

(5)更新训练集的权值分布

假设第$k$个弱分类器的样本集权重系数为$D(k) = (w_{k1}, w_{k2}, ...w_{km})$,则对应的第$k+1$个弱分类器的样本集权重系数为

$$w_{k+1,i} = \frac{w_{ki}}{Z_k}\alpha_k^{1-e_{ki}}$$

$Z_k$是规范化因子

$$Z_k = \sum\limits_{i=1}^{m}w_{ki}\alpha_k^{1-e_{ki}}$$

4.3 组合强分类器

基于对加权的弱学习器取权重中位数对应的弱学习器作为强学习器的结合策略,最终的强回归器为

$$f(x) =[\sum_{k=1}^M(\ln(\frac{1}{\alpha_k}))]g(x)$$

其中,$g(x)$是所有$\alpha_kG_k(x), k=1,2,....M$的中位数。

另外还有基于加权平均的结合策略,则最终的强回归类器为

$$f(x) =\sum_{k=1}^M(\ln(\frac{1}{\alpha_k}))G_k(x)$$
 

5、Adaboost算法的正则化

为了防止Adaboost过拟合,弱学习器中需要加入正则化项,而这个正则化项类似于梯度下降算法里的步长。

若此时弱学习器的迭代器$$f_{k}(x) = f_{k-1}(x) + \alpha_kG_k(x)$$

添加正则化项之后,则有$$f_{k}(x) = f_{k-1}(x) + \nu\alpha_kG_k(x),且0 < \nu \leq 1$$ 。

 

6、总结

总的来说,Adaboost的分类和回归算法原理非常相似,区别之处就是误差计算和结合策略有所差异。对于弱学习器(决策树)而言,Adaboost分类一般使用CART分类树,而Adaboost回归一般使用CART回归树。

posted @ 2020-02-29 21:56  雨中漫步人生  阅读(356)  评论(0编辑  收藏  举报