本文从互联网搬运,只用于本人学习记录。
AdaBoost(Adaptive Boosting,自适应增强),其自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。
1. 思想
Adaboost 迭代算法有三步:
- 初始化训练样本的权值分布,每个样本具有相同权重;
- 训练弱分类器,如果样本分类正确,则在构造下一个训练集中,它的权值就会被降低;反之提高。用更新过的样本集去训练下一个分类器;
- 将所有弱分类组合成强分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,降低分类误差率大的弱分类器的权重。
2. 细节
2.1. 损失函数
Adaboost 模型是加法模型,学习算法为前向分步学习算法,损失函数为指数函数的分类问题。
加法模型:最终的强分类器是由若干个弱分类器加权平均得到的。
前向分布学习算法:算法是通过一轮轮的弱学习器学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重。第 k 轮的强学习器为:
F k ( x ) = ∑ i = 1 k α i f i ( x ) = F k − 1 ( x ) + α k f k ( x ) F_k(x) = \sum^k_{i = 1}\alpha_if_i(x) = F_{k - 1}(x) + \alpha_kf_k(x) Fk(x)=i=1∑kαifi(x)=Fk−1(x)+αkfk(x)
定义损失函数为 n n n个样本的指数损失函数:
L ( y , F ) = ∑ i = 1 n e x p ( − y i F k ( x i ) ) L(y, F) = \sum^n_{i = 1}exp(-y_iF_k(x_i)) L(y,F)=i=1∑nexp(−yiFk(xi))
利用前向分部学习算法的关系可以得到:
L ( y , F ) = ∑ i = 1 m e x p [ ( − y i ) ( F k − 1 ( x i ) + α k f k ( x i ) ) ] = ∑ i = 1 m e x p [ − y i F k − 1 ( x i ) − y i α k f k ( x i ) ] = ∑ i = 1 m e x p [ − y i F k − 1 ( x i ) ] e x p [ − y i α k f k ( x i ) ] \begin{aligned} L(y, F) &= \sum^m_{i = 1}exp[(-y_i)(F_{k - 1}(x_i) + \alpha_kf_k(x_i))] \\ &= \sum^m_{i = 1}exp[-y_iF_{k - 1}(x_i) - y_i\alpha_kf_k(x_i)] \\ &= \sum^m_{i = 1}exp[-y_iF_{k - 1}(x_i)]exp[-y_i\alpha_kf_k(x_i)] \end{aligned} L(