1.Adaboost算法简介
\hspace*{0.6cm}
AdaBoost,英文全称为"Adaptive Boosting"(自适应增强),是一种机器学习方法,AdaBoost方法的自适应在于:AdaBoost方法对于噪声数据和异常数据很敏感。AdaBoost方法中使用的分类器可能很弱(比如出现很大错误率),但只要它的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。
\hspace*{0.6cm}
AdaBoost方法是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分类的样本上。
2.原理推导
\hspace*{0.6cm} 假设训练集样本是:T={ ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . , ( x n , y n ) (x_{1},y_{1}),(x_{2},y_{2}),..,(x_{n},y_{n}) (x1,y1),(x2,y2),..,(xn,yn)},假设进行二分类,得到的结果为{+1,-1},初始化数据集的权重: D 1 D_{1} D1=( w 11 , w 12 , w 13 , . . . , w 1 n w_{11},w_{12},w_{13},...,w_{1n} w11,w12,w13,...,w1n),初始时 W 1 i = 1 n W_{1i}=\frac{1}{n} W1i=n1,i=1,2,3,…,n,下面迭代step1、step2步骤,设迭代K轮
step 1. 得到模型权重分布
\hspace*{0.6cm} 设在权重为 D m D_{m} Dm的数据集上得到的分类器结果为 G m ( x ) G_{m}(x) Gm(x),则错误率为 e m = P ( G m ( X ) ≠ y ) = ∑ i = 1 n w m i I ( G m ( x i ) ≠ y i ) ) e_{m}=P(G_{m}(X)\not=y)=\sum_{i=1}^{n}w_{mi}I(G_{m}(x_{i})\not=y_{i})) em=P(Gm(X)=y)=∑i=1nwmiI(Gm(xi)=yi)),取 G m ( x ) G_{m}(x) Gm(x)的权重系数为 α m = 1 2 l o g 1 − e m e m \alpha_{m}=\frac{1}{2}log\frac{1-e_{m}}{e_{m}} αm=21logem1−em,由此可见 e m e_{m} em越小,权重系数越大。分类越准确,则模型权重越大。
step 2.更新数据集的权重分布
\hspace*{0.6cm} 对于第m+1个分类器的数据集权重为 w m + 1 , i = w k , i Z m e x p ( − α m y i G m ( x i ) ) w_{m+1,i}=\frac{w_{k,i}}{Z_{m}}exp(-\alpha_{m}y_{i}G_{m}(x_{i})) wm+1,i=Zmwk,iexp(−αmyiGm(xi)),其中 z m = ∑ i = 1 n w k , i e x p ( − α m y i G m ( x i ) ) z_{m}=\sum_{i=1}^{n}w_{k,i}exp(-\alpha_{m}y_{i}G_{m}(x_{i})) zm=∑i=1nwk,iexp(−αmyiGm(xi)),为规范化因子。当分类不正确时, y i G m ( x i ) = y_{i}G_{m}(x_{i})= yiGm(xi)=-1,所以对应的 w m + 1 , i w_{m+1,i} wm+1,i会更大,体现了对分类错误数据增加权重的思想。
重复上述的step1与step2共k轮,得到最终的f(x)=sign(
∑
i
=
1
k
α
i
G
i
(
x
)
\sum_{i=1}^{k}\alpha_{i}G_{i}(x)
∑i=1kαiGi(x))
上述的
α
、
G
\alpha、G
α、G的优化有专门的推导,但是我暂时没写
3.算法实现
\hspace*{0.6cm} …