一,提升方法Adaboost算法
1.1AdaBoost 算法基本思路
如何构建基学习器(弱学习器)
- 使用不同的弱学习算法得到不同基本学习器
- 使用相同的弱学习算法,但用不同的参数
- 相同输入对象的不同表示凸显事物不同的特征
- 使用不同的训练集:装袋(bagging)也称为自举汇聚法(boostrap aggregating)与提升(boosting)
如何组合弱学习器
- 多专家组合:一种并行结构,所有的弱分类器都给出各自的预测结果,通过“ 组合器”
把这些预测结果转换为最终结果。eg.投票(voting)及其变种、混合专家模型 - 多级组合:一种串行结构,其中下一个分类器只在前一个分类器预测不够准(不够自信)的实例上进行训练或检测。eg.级联算法(cascading)
补充概念
强可学习:如果存在一个多项式的学习算法能够学习它,并且正确率很高,称这个概念是强可学习的
弱可学习:如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,则称这个概念是弱可学习的
在概率近似正确(PAC)学习的框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习
1.2AdaBoost算法(分类)
算法详解:
AdaBoost算法:
输入:训练数据集
,其中
;弱学习算法
输出:弱分类器
-
初始化训练数据的权值分布
-
对
2.1 使用具有权值分布 [公式] 的训练数据集学习,得到基本分类器
2.2 计算 [公式] 在训练数据集上的分类误差率
2.3 计算 [公式] 的系数
2.4 更新训练数据集的权值分布
其中,
是规范化因子(为了使样本的概率分布和为1)
- 构建基本分类器的线性组合
得到最终分类器
注:对于Adaboost多元分类算法,其实原理和二元分类类似,最主要区别在弱分类器的系数上。比如Adaboost SAMME算法,它的弱分类器的系数:
其中
R
R
R为类别数。从上式可以看出,如果是二元分类, [公式] ,则上式和我们的二元分类算法中的弱分类器的系数一致。
算法关键点说明:
1.计算
在训练数据集上的分类误差率
这里
,这表明
在加权的训练数据集上的分类错误率是被
误分类样本的权值之和,由此可以看出数据全值分布
与基本分类器
的分类误差率的关系。
2.当
时,
,并且
随着
的减少而增大,所以误分类误差率越小的基本分类器在最终分类器的作用越大。
3.更新训练数据的权值分布为下一轮做准备,式可以写成:
由此可知,被基本分类器
误分类样本的权值得以扩大,而被正确分类的样本的权值得以缩小。
4.这里系数
表示了基本分类器
的重要性,所以
之和并不为1。
的符号决定实例
类,
的绝对值表示分类的确信度。
算法流程图:
几个关键参数的关系:
误差率em越大,am越小,使得这个基学习器在最终强学习器中的权重越小
样本权重wm:根据权重计算公式,当弱学习器样本预测错误时,样本的权重Wm+1变大,预测正确的样本Wm+1的权重会变小,这就会使得上一个学习器预测错误的样本的权重增加,得到更多重视。
1.3 AdaBoost算法(回归)
下面介绍AdaBoost做回归问题时误差率和权重系数的计算。
算法详解:
输入:训练数据集
,其中
输出:分类器
-
初始化训练数据的权值分布
-
对
2.1 使用具有权值分布
的训练数据集学习,得到基本分类器
2.2 计算训练集上的最大误差
2.3 计算每个样本的相对误差:
2.4 计算回归误差率:
2.5 计算弱学习器的系数
2.6 更新样本集的权重分布为
其中,是规范化因子
- 构建基本分类器的线性组合
其中,
是所有 的中位数。
二,2: Adaboost算法的训练误差分析(了解)
(Adaboost的训练误差界) Adaboost算法最终分类器的训练误差界为:
这里一定理说明可以在每一轮选取适当的 Gm 使得Zm最小,从而使得误差下降的最快。
(二分类问题Adaboost的训练误差界)
这里,
推论:如果存在
,对所有m 有
,则
这表明在此条件下,AdaBoost的训练误差是以指数速度下降的。
三,Adaboost算法解释
上面提到的弱学习器权重系数公式和样本权重系数更新公式其实是通过AdaBoost损失函数忒大出来的。
AdaBoost还有一种解释,即可认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分布算法时的二类分类学习方法
3.1 前向分布算法
3.2 前向分布算法与AdaBoost
以上推导了这么多,重要的是了解到AdaBoost算法的算是函数是:
指数损失函数是一种用于分类的损失函数,有如下性质:
1>样本标签y -1/1
2>同号则小,异号则大
四,Adaboost算法的正则化
五,Adaboost总结
理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。
Adaboost的主要优点有:
- Adaboost作为分类器时,分类精度很高
- 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
- 作为简单的二元分类器时,构造简单,结果可理解。
- 不容易发生过拟合
Adaboost的主要缺点有:对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。