本文将记录《统计学习方法》中有关提升学习Adaboost的内容。
Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
提升算法需要解决的问题:
1)如何计算弱分类器学习误差率e?
2) 如何得到弱学习器权重系数α?
3)如何更新样本权重D?
4) 使用何种结合策略结合得到强学习算法?
Adaboost分类算法
输入:数据集 T = { ( x 1 , y 1 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),...,(x_N,y_N)\} T={
(x1,y1),...,(xN,yN)}
输出:最终的强分类器
- 初始化了全部样本的权重:
W 0 = { w 1 0 , . . . w N 0 } ,    w i 0 = 1 N W^0=\{w_1^0,...w_N^0\},\;w_i^0=\frac{1}{N} W0={ w10,...wN0},wi0=N1 - 对于m=1,2…,M次迭代的弱分类器:
- 对上次的样本权重构建弱分类器: G m G_m Gm
- 计算在弱分类器上的分类误差:
E m = ∑ i N w i m I ( G m ( x i ̸ = y i ) ) E_m=\sum_i^Nw^m_iI(G_m(x_i\not=y_i)) Em=i∑NwimI(Gm(xi̸=yi)) - 计算该弱分类器的结合权重:
α m = 1 2 l o g E m 1 − E m \alpha_m=\frac{1}{2}log{E_m \over1-E_m } αm=21log1−EmEm - 调整样本权重:
W m + 1 = { w i m + 1 , . . . , w N m + 1 } w i m + 1 = w i m Z e − α i y i G m ( x i ) Z = ∑ i N