AdaBoost
是英文"Adaptive Boosting"(自适应增强)的缩写,其自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。是一种集成学习方法。
算法
- 设训练数据集$T={(x_1,y_1), (x_2,y_2)...(x_N,y_N)}$. 初始化训练数据的权值分布(均匀分布) $$D_1=(w_{11},w_{12}\dots w_{1i}\dots w_{1N}), w_{1i}={1 \over N}, i=1,2,\dots,N$$ 权值仅用于计算分类误差,并不改变数据的真实分布.并在训练时选择误差最小的分类点得到当前的最优分类器.
- 使用具有权值分布Dm的训练数据集学习,得到基本分类器(二分类) $$G_m(x):\chi\longrightarrow {-1,+1}$$
- 计算Gm(x)在训练数据集上的分类误差率 $$e_m=P(G_m(x_i)\neq y_i)=\sum_{i=1}^N w_{mi}I(G_M(x_i)\neq y_i)$$ 分类误差率是被错分的样本的权值之和.
- 计算Gm(x)的系数 $$\alpha_m={1 \over 2}log{1-e_m \over e_m}$$ 可见,分类器的系数与误差率呈负相关,目的是减小最终误差
- 更新训练数据集的权值分布(对分类误差率较大的数据集加大权重,提高后续的分类器对这部分数据的分类准确率) $$D_{m+1}=(w_{m+1,1},\dots w_{m+1,i}\dots ,w_{m+1,N}),$$ $$w_{m+1,i}={w_{mi} \over Z_m}exp(-\alpha_m y_i G_m(x_i)),i=1,2,\dots ,N$$ $Z_m$是规范化因子,目的是使$D_{m+1}$成为一个概率分布: $$Z_m=\sum_{i=1}^N w_{mi}exp(-\alpha_m y_i G_m(x_i))$$
- 重复2~5直到m为M(循环 M次)
- 构建基本分类器的线性组合 $$f(x)=\sum_{m=1}^M \alpha_mG_m(x)$$
- 最终分类器 $$G(x)=\rm{sign}[f(x)]$$
优缺点
缺点: AdaBoost方法对于噪声数据和异常数据很敏感。 优点:
- 准确率可以大幅提升.
- 速度较快,几乎不用调参.
- 不太容易出现过拟合现象.
- 分类器可以自由选择
来源:oschina
链接:https://my.oschina.net/u/4297690/blog/3994109