深度剖析adaboost

在分析adaboost算法前,首先看一幅图。
深度剖析adaboost_第1张图片
如上图所示,adaboost算法的核心思想就是由分类效果较差的弱分类器逐步的强化成一个分类效果较好的强分类器。而强化的过程,就是如上图所示逐步的改变样本权重,样本权重的高低,代表其在分类器训练过程中的重要程度。

adaboost算法流程

下面首先来看一下在李航的《统计学习方法》一书中对adaboost的解释:
算法的输入:训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,其中 x 表示输入样本, y{+1,1} 为对应的标签。
输出:最终分类器 G(x)

Initialization:初始化训练数据的权值分布

D1=(w11,w12,...,w1N),w1i=1N,i=1,2,..,N
For m=1,2,..,M
- 使用具有权值分布 Dm 的训练数据集学习,得到基本分类器 Gm
Gm(x):X{1,+1}
计算 Gm(x) 在训练集上的分类误差率
em=P(Gm(xi)yi)=i=1NwmiI(Gm(xi)yi)

-如果分类误差率 em 大于0.5,跳出循环
- 计算 Gm(x) 的系数
αm=12ln(1emem)

- 更新训练数据集的权值分布
Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)

wm+1,i=wmiZmexp(αmyiGm(xi))

这里 Zm 是规范化因子
Zm=i=1Nwmiexp(αmyiGm(xi))

因为 Zm 的存在,使得 Dm+1 成为一个概率分布。

end
构建基本分类器的线性组合

f(x)=m=1NαmGm(x)

得到最终的分类器:
G(x)=sign(f(x))

end algorithm

上述算法流程中,有以下几处需要解释:

1、弱分类器的选取

弱分类器的选取并没有一个特定的标准或选取准则,一般来说只要是能够实现基本的分类功能的分类器均可以作为adaboost中的弱分类器。比如一个简单阈值可作为一个弱分类器的(参见李航《统计学习方法》书中8.1.3的例子)、简单的逻辑回归(LR)也可以作为一个弱分类器,甚至是SVM、神经网络都可以作为弱分类器。但是在adaboost中所有的弱分类器必须是同一种分类器,不能再同一个adaboost算法的迭代步骤中使用不同的弱分类器。

2、样本权值参数

对于样本的权值参数推到,要涉及到损失函数的由来以及最优化求解的过程,因此这里不予推到,具体可参见周志华《机器学习》一书或者《A decision-theoretic generalization of on-line learning and an application to boosting》一文。
样本权值更新的中心思想是对训练集中的每个样本都赋予一定的权值,传统的训练方法中认为训练集中的每个样本的重要程度是一样的,也即具有相同的权值。但是在adaboost的每次迭代中,若某个样本在当前的分类器中分错了,那么则认为此样本较为特殊,加重其权值,使其在下一次的训练中对分类器的训练有更为重要的影响。

3、弱分类器权值参数

参数具体推导同样参见上述参考资料。
在adaboost的算法中,不仅每个样本有不同的权值,每个弱分类器都有不同的权值。与样本权值相类似,弱分类器的权值也指示了当前的弱分类器在最后合成强分类器时对强分类器的影响程度。权值越大,影响程度越高。adaboost的经典之处也就是在于样本权值的更新和弱分类权值的更新。

4、分类误差大于0.5,终止算法

分类误差大于0.5代表当前的分类器是否比随机预测要好,对于一个随机预测模型来说,其分类误差就是0.5,即一半预测对,一半预测错。若当前的弱分类器还没有随机预测的效果好,那便直接终止算法。但是当adaboost遇到这种情形时可能学习的迭代次数远远没有达到初始设置的迭代次数M,这可能会导致最终集成中只有很少的弱分类器,从而导致算法整体性能不佳。为了化解这种情况Kohavi在《Bias plus variance decomposition for zero-one loss functions》提出了用重采样法使得迭代过程重新启动。

你可能感兴趣的:(adaboost,boosting,集成学习)