AdaBoost(Adaptive boosting)元算法
元算法:将不同分类器组合起来的结果,也叫集成方法。
AdaBoost优点:泛化错误率,易编码,可应用在大部分分类器,无参数调整;缺点:对离群点敏感;适用于:数值型和标称型。
-
自举汇聚法(Bootstrap aggregating,
bagging方法):从原始数据集中随机选择1个样本,然后随机选择另一个样本替换这个样本。对原始数据集中进行S次这样的操作,分别得到S个新数据集。某个学习算法分别作用于新数据集得到S个分类器。用S个分类器进行分类得到的投票结果中最多的类别作为最终的分类结果。(bagging中各分类器权重是相等的。) -
Boosting:boosting通过集中关注被已有分类器错分的那些数据获得新的分类器。其中分类器权重不相等,对应分类器在上一代迭代中的成功度(alpha)。
-
每个样本的权重的向量D初始化:全为1/m
-
在原数据集上训练出一个弱分类器并计算其错误率(varepsilon_{1});
-
原数据集中分对的样本权重降低,分错的样本权重升高,计算累计加权的估计结果。
[ alpha = frac{1}{2}ln{(frac{1 - varepsilon_{i}}{varepsilon_{i}})} ][D_{i}^{ ext{new}} = left{ egin{matrix} frac{D_{i}^{ ext{old}}e^{- ] -
frac{D_{i}{ ext{old}}e{alpha}}{Sum(D)}, if mathbf{x}_{i} ext{
is devided wrongly} end{matrix}
ight.$$
- 重复b-c共?次,得到累计加权的估计结果,其符号即表示最终的分类结果。
建立弱分类器的伪代码:
将最小错误率minError设为$+ infty$
对数据集中的每一个特征(第一层循环):
对每个步长(第二层循环):
对每个不等号(第三层循环):
建立一棵单层决策树并利用加权数据集对他进行测试
如果错误率低于minError,则将当前单层决策树设为最佳单层决策树
返回最佳单层决策树
AdaBoost算法的伪代码:
对每次迭代:
找到最佳的单层决策树,将其加入到单层决策树数组
计算$alpha$,计算新的样本权重向量D
**更新累计类别估计值**
如果错误率等于0.0,退出循环