对于Boosting算法,需要解决两个问题:
- 如何调整训练集,使得在训练集上训练的弱分类器得以进行;
- 如何将训练得到的各个弱分类器联合起来形成强分类器。
针对Boosting需要解决的两个问题,AdaBoost算法采用了以下策略:
使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上;
将弱分类器联合起来,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重。
若为Adaboost分类,函数模型使用CART分类树;若为Adaboost回归,函数模型使用CART回归树。
核心思想:针对同一个训练集训练不同的弱分类器,然后把这些弱分类器根据权值集合起来,构造一个更强的最终分类器。
Adaboost算法是Boosting系列算法之一,强分类器输出结果的是弱分类器输出结果的加权平均。
Adaboost算法有两个权值,分别为样本权值和弱分类器权值,其主要特征就是在于样本权值的更新和弱分类器权值的更新。
Adaboost中所有的弱分类器必须是同一种分类器,不能在同一个Adaboost算法的迭代步骤中使用不同的弱分类器。
弱分类器可并行实现。
优点:分类精度高,不易过拟合,构造简单。
缺点:对异常敏感,异常样本会获得较高的权重,最终影响强分类器的准确性。
样本权值更新规则:对于分类正确样本,减小其权重,对于分类错误样本增大其权重。
弱分类器权值更新规则:对于准确率较高分类器加大其权重,对于准确率较小分离器减小其权重。
算法过程:给定训练样本集S,其中X和Y分别对应于正例样本和负例样本; T为训练的最大循环次数;
初始化样本权重为1/n ,即为训练样本的初始概率分布;
第一次迭代:
(1) 训练样本的概率分布相当下,训练弱分类器;
(2) 计算弱分类器的错误率;
(3) 选取合适阈值,使得误差最小;
(4) 更新样本权重;
经T次循环后,得到T个弱分类器,按更新的弱分类器权重叠加,最终得到的强分类器。