一、Boosting
1.1 Boosting学习思路
对于一个学习问题来说(以分类问题为例),给定训练数据集,求一个弱学习算法要比求一个强学习算法要容易的多。Boosting方法就是从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合弱分类器,得到一个强分类器。Boosting方法在学习过程中通过改变训练数据的权值分布(梯度提升树不会),针对不同的数据分布调用弱学习算法得到一系列弱分类器。
在每一轮学习之前,如何改变训练数据的权值分布?
Adaboost算法的做法是Adaboost算法的做法是提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。
如何将一组弱分类器组合成一个强分类器?
Adaboost算法的做法是加大 分类误差率小 的弱分类器的权值,使其在表决中起较大的作用;减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
1.2 Boosting四大家族
Boosting并非是一个方法,而是一类方法。这里按照损失函数的不同,将其细分为若干类算法,下表给出了4种不同损失函数对应的Boosting方法:
二、AdaBoost
2.1 学习目标
学习目标是通过调整样本权重分布使得下一个分类器误差率越小越好;而误分类的样本权重相当于放大了 ( e 2 ∗ 分 类 器 权 重 ) (e^{2*分类器权重}) (e2∗分类器权重)倍,并且证明得到训练误差率呈指数速率下降。
AdaBoost算法最基本的性质是它能在学习过程中不断减少训练误差,即在训练数据集上的分类误差率。
2.2 学习算法
Adaboost算法在分类问题中的主要特点:通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能。 AdaBoost-算法描述(伪代码)如下:
2.3 AdaBoost算法描述说明
-
步骤(1)假设训练数据集具有均匀(相同)的权值分布,即每个训练样本在基本分类器的学习中作用相同。
-
步骤(2)AdaBoost反复学习基本分类器,在每一轮 k = 1 , 2 , ⋯ , K k=1,2,⋯,K k=1,2,⋯,K顺序地执行下列操作:
- (a) 学习基本分类器:使用当前训练集的权值分布 D k D_k Dk 加权的训练数据集,学习基本分类器 G k ( x ) G_k(x) Gk(x)
- (b) 误差率:计算基本分类器 G k ( x ) G_k(x) Gk(x)