Task06 Boosting
Q1: Adaboost的基本思路?
A1:在提到Adaboost之前,先稍微解释一下Boosting。Boosting可以理解为不断地重复学习达到最终的要求。
在学习中,如果已经发现了弱可学习算法,能否将他提升至强可学习算法。因为,弱可学习算法比强可学习算法容易得多。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后通过一定的形式去组合这些弱分类器构成一个强分类器。
大多数的Boosting方法都是通过改变训练数据集的概率分布(训练数据不同样本的权值),针对不同概率分布的数据调用弱分类算法学习一系列的弱分类器。
对于Boosting方法来说,有两个问题需要给出答案:第一个是每一轮学习应该如何改变数据的概率分布,第二个是如何将各个弱分类器组合起来。关于这两个问题,不同的Boosting算法会有不同的答案,故介绍一种最经典的Boosting算法----Adaboost,可以从理解Adaboost是怎么处理这两个问题以及为什么这么处理的。
在Adaboost中
- 提高前一轮分类器错误分类的样本的权重值,降低分类正确的样本的权重值,所以上一轮分类错的样本在这一轮会受到更多的“关注”。这就是上面第一个问题答案。
- 各个弱分类器组合是通过加权多数表决的方式组合,加大正确率高的弱分类器的权重,减小正确率低的弱分类器的权重。(很符合正常想法hhh)
Q2:Adaboost与GBDT的联系和区别?
A2:
AdaBoost(Adaptive Boosting)即自适应增强,GBDT(Gradient Boost Decision Tree)即梯度提升决策树。
Adaboost 迭代算法分三步:
- 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
- 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
- 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。
GBDT每一次的计算是都为了减少上一次的残差,进而在残差减少(负梯度)的方向上建立一个新的模型。
Q3: Boosting与Bagging的区别,以及如何提升模型的精度?
A3:
参考此文章
Bagging和Boosting的区别:
- 样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。 - 样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据上一轮的错误率不断调整样例的权值,错误率越大则权重越大。 - 预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。 - 生成方式:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。