提升的方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(基本分类器),然后组合这些弱分类器,构建一个强分类器。大部分提升方法都是改变训练数据的概率分布(权值分布),根据不同的训练数据分布调用弱学习算法,学习一系列弱分类器。
集成学习按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,另一类是个体学习器之间不存在强依赖关系。前者的代表算法就是是boosting系列算法。在boosting系列算法中, Adaboost是最著名的算法之一。Adaboost既可以用作分类,也可以用作回归。
- 首先从训练集用初始权重训练出一个弱学习器1
- 根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。
- 然后基于调整权重后的训练集来训练弱学习器2.
- 如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
不过有几个具体的问题Boosting算法没有详细说明。
1)如何计算学习误差率e?
2) 如何得到弱学习器权重系数α?
3)如何更新样本权重D?
4) 使用何种结合策略?
只要是boosting大家族的算法,都要解决这4个问题。那么Adaboost是怎么解决的呢?
Adaboost算法的基本思路
对于提升来说要回答两个问题:
-
每一轮如何改变数据的权值或概率分布
Adaboost做法:提高那些前一轮弱分类器错误分类样本的权值,降低那些正确分类样本的权值。
-
如果将弱分类器组合成一个强分类器
Adaboost做法:采用加权多数表决,加大分类误差率小的弱分类器的权值,使得在表决中起较大作用,减少分类误差率大的权值。
Adaboost的分类问题
Adaboost的回归问题
Adaboost的例子
参见:http://blog.csdn.net/tiandijun/article/details/48036025
图中,“+”和“-”分别表示两种类别,在这个过程中,我们使用水平或者垂直的直线作为分类器,来进行分类。
-
1.第一步:
算法最开始给了一个均匀分布 D 。所以h1 里的每个点的值是0.1。ok,当划分后,有三个点划分错了,根据算法误差表达式
ɛ1 = 0.1 + 0.1 + 0.1 = 0.3
ɑ1 = 0.42
根据分类的正确率,得到一个新的样本分布D2,一个子分类器h1
划圈的样本表示被分错的,右图中 比较大的“+”表示对该样本做了加权。
更新权值分布:
每个样本的新权值是变大还是变小,取决于它是被分错还是被分正确。
即如果某个样本被分错了,则yi * Gm(xi)为负 负负等正,结果使得整个式子变大(样本权值变大),否则变小。
分错的权值变大,在下一轮的弱分类器得到更大的关注。
第一轮迭代后,最后得到各个数据新的权值分布**D2 **= (0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.1666, 0.1666, 0.1666, 0.0715)。由此可以看出,因为样本中是数据“6 7 8”被G1(x)分错了,所以它们的权值由之前的0.1增大到0.1666,反之,其它数据皆被分正确,所以它们的权值皆由之前的0.1减小到0.0715。
分类函数f1(x)= a1*G1(x) = 0.42G1(x)。
此时,得到的第一个基本分类器sign(f1(x))在训练数据集上有3个误分类点(即6 7 8)。
从上述第一轮的整个迭代过程可以看出:被误分类样本的权值之和影响误差率,误差率影响基本分类器在最终分类器中所占的权重。(误差率越小,在最后的模型中,起到的作用越大)
-
2.第二步:
根据分类的正确率,得到一个新的样本分布D3,一个子分类器h2
-
3.第三步:
整合所有子分类器:
指数损失函数(Adaboost)
分类Adaboost的弱学习器权重系数公式和样本权重更新公式
Adaboost:
-
模型为加法模型,
模型为加法模型好理解,我们的最终的强分类器是若干个弱分类器加权平均而得到的。
-
学习算法为前向分步学习算法
我们的算法是通过一轮轮的弱学习器学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重。也就是说,第k-1轮的强学习器为
$f_{k-1}(x) = \sum\limits_{i=1}^{k-1}\alpha_iG_{i}(x)$
而第k轮的强学习器为:$f_{k}(x) = \sum\limits_{i=1}^{k}\alpha_iG_{i}(x)$
上两式一比较可以得到:
$f_{k}(x) = f_{k-1}(x) + \alpha_kG_k(x)$
-
损失函数为指数函数的分类问题。
Adaboost优缺点
弱学习器的类型。理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树
Adaboost的主要优点有:
最大的一个优点是可以自动的组合弱分类器
1)Adaboost作为分类器时,分类精度很高
2)在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
3)作为简单的二元分类器时,构造简单,结果可理解。
4)不容易发生过拟合
Adaboost的主要缺点有:
1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。