AdaBoost
AdaBoost
通过改变训练样本权重,学习多个分类器,并将分类器进行线性 组合,提高分类性能
- 对离群点、奇异点敏感
- 对过拟合不敏感
Boosting实现
改变训练数据权值或概率分布:提高分类错误样本权值、降低 分类正确样本权值
弱分类器组合:加权多数表决,即加大分类误差率小的弱分类器 权值,使其在表决中起更大作用;减小分类误差率大的弱分类器 权值,使其在表决中起更小作用
步骤
- 输入:训练数据集$T={(x_1, y_1), \cdots, (x_N, y_N)}$, 弱分类器算法$G(x)$
- $x_i \in \mathcal{X \subset R^n}$
- $y_i \in \mathcal{Y} = {-1, +1 }$
- 输出:最终分类器$G(x)$
初始化训练数据权值分布: $D1=(w{11}, \cdots, w{1N}), w{1i}=\frac 1 N$
对$m=1,2,\cdots,M$(即训练M个弱分类器)
使用具有权值分布$D_m$的训练数据学习,得到基本 分类器
计算$G_m(x)$在训练数据集上的分类误差率
计算$G_m(x)$组合为最终分类器时权重
- $\alpha_m$表示就简单分类器$G_m(x)$在最终分类器中 的重要性,随$e_m$减小而增加 (弱分类器保证$e_m \leq 1/2$)
更新训练集权值分布
- $Zm$:规范化因子,是第m轮调整后的权值之和,其 使得$D{m+1}$成为概率分布
- 误分类样本权值相当于被放大 $e^{2\alpha_m} = \frac {e_m} {1 - e_m}$倍
构建基本分类器线性组合
得到最终分类器
- 这里$\alpha_m$没有规范化,和不为1,规范化没有必要
- $f(x)$符号决定分类预测结果,绝对值大小表示分类确信度
训练误差边界
AdaBoost算法最终分类器的训练误差边界为
$G(x_i) \neq y_i$时,$y_if(x_i)<0$,所以 $exp(-y_i f(x_i)) \geq 1$,则不等式部分可证
- AdaBoost训练误差边界性质的关键:权重调整与基本分类器权重 调整共系数(形式不完全一样)
- 这也是AdaBoost权重调整设计的依据,方便给出误差上界
二分类训练误差边界
- $\gamma_m = \frac 1 2 - e_m$
由$\forall x \in [0, 0.5], e^{-x} > \sqrt{1-2x}$可得, $\sqrt{1-4\gamma_m^2} \leq exp(-2\gamma_m^2)$
- 二分类AdaBoost误差边界性质的关键:$\alpha$的取值,也是 前向分步算法(损失函数)要求
- 若存$\gamma > 0$,对所有m有$\gamma_m \geq \gamma$,则 即AdaBoost的训练误差是指数下降的
- 分类器下界$\gamma$可以未知,AdaBoost能适应弱分类器各自 训练误差率,所以称为adptive
Adaboost.M1
Adaboost.M1是原版AdaBoost的多分类升级版,基本思想同Adaboost
Boosting实现
基分类器组合方式
- 仍然是加权投票,且投票权重同Adaboost
- 出于多分类考虑,没有使用
sign
符号函数
改变训练数据权值或概率分布:和Adaboost形式稍有不同,但 相对的错误分类样本提升比率完全相同
- 被上个分类器错误分类样本,权值保持不变
- 被上个分类器正确分类样本,权值缩小比例是Adaboost平方
步骤
输入
- 训练集:$T={x_i, y_i}, i=1,\cdots,N; y_i \in C, C={c_1, \cdots, c_m}$
- 训练轮数:T
- 弱学习器:I
输出:提升分类器
- $h_t, h_t(x) \in C$:分类器
- $\beta_t$:分类器权重
误分率上界
- 对弱学习算法产生的伪损失$\epsilon1,\cdots,\epsilon_t$, 记$\gamma_t = 1/2 \epsilon_t$,最终分类器$h{fin}$误分率 上界有
特点
Adaboost.M1和Adaboost基本上没有区别
- 类别数目为2的Adaboost.M1就是Adaboost
- 同样无法处理对误分率高于0.5的情况,甚至在多分类场合, 误分率小于0.5更加难以满足
- 理论误分率上界和Adaboost相同
Adaboost.M2
AdaboostM2是AdaboostM1的进阶版,更多的利用了基分类器信息
- 要求基学习器能够输出更多信息:输出对样本分别属于各类别 的置信度向量,而不仅仅是最终标签
- 要求基分类器更加精细衡量错误:使用伪损失代替误分率 作为损失函数
Psuedo-Loss
- $D$:权重分布(行和为1,但不满足列和为1)
- $D_{i,y}$:个体$x_i$中错误标签$y$的权重,代表从个体 $x_i$中识别出错误标签$y$的重要性
- $B = {(i, y)|y \neq y_i, i=1,2,\cdots,N }$
- $w$:个体各错误标签权重边际分布
- $h(x, y)$:模型$h$预测样本$x$为$y$的置信度
- $h(x_i,y_i)$:预测正确的置信度
- $h(x_i,y), y \neq y_i$:预测$x_i$为错误分类$y$置信度
- 伪损失函数同时考虑了样本和标签的权重分布
- 通过改变此分布,能够更明确的关注难以预测的个体标签, 而不仅仅个体
Boosting实现
改变数据权值或者概率分布
- 使用psuedo-loss替代误分率,以此为导向改变权值
- 对多分类每个错误分类概率分别计算错误占比,在此基础上 分别计算
基分类器组合方式:同Adaboost.M1
步骤
训练误差上界
- 对弱学习算法产生的伪损失$\epsilon1,\cdots,\epsilon_t$, 记$\gamma_t = 1/2 \epsilon_t$,最终分类器$h{fin}$误分率 上界有
特点
基于伪损失的Adaboost.M2能够提升稍微好于随机预测的分类器
Adaboosting.M2能够较好的解决基分类器对噪声的敏感性,但是 仍然距离理论最优Bayes Error有较大差距,额外误差主要 来自于
- 训练数据
- 过拟合
- 泛化能力
控制权值可以有效的提升算法,减小最小训练误差、过拟合 、泛化能力
- 如对权值使用原始样本比例作为先验加权
其分类结果不差于AdaBoost.M1(在某些基分类器、数据集下)