集成学习(ensemble learning)通过构建并结合多个学习器来提升性能
集成学习分为两大类:
个体分类器存在强依赖方法(Boosting)
个体学习器之间不存在强依赖关系(Bagging,随机森林)
提升方法的思路:
对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
对于提升方法来说,有两个问题:
Boosting类算法核心理念
将多个弱分类器进行合理的结合,使其成为一个强分类器,可以理解成“前人栽树,后人乘凉”。前辈创造条件,后备在前辈的基础上进行改进。即我们先训练一个弱学习器,再对这个模型进行评估,对这个模型中做对的问题,我们减小对它的注意力;做错的问题那就增大注意力,专注于克服前面模型不能解决的困难点。最后,当我们把所有的模型整合成一个大的框架的时候,里面既有处理简单问题的模型也有处理困难问题的模型,使大框架的整体模型性能有所提高。
Boosting族最著名的代表算法是Adaboost,它的做法是:
强可学习:识别准确率很高并能在多项式时间内完成的学习算法
弱可学习:识别错误率小于1/2(即准确率仅比随机猜测略高的学习算法)
Step1:训练每个弱分类器,计算样本困难度。
(1)初始化样本权重为1/N
(2)利用当前弱分类器的训练结果,更新所有样本的权重。正确分类的样本就降低权重,错误分类的样本就增大权重。
(3)基于当前样本权重,训练下一个弱分类器。对于这个弱分类器,我们已经提高了困难样本的权重,此时会有部分困难样本分类正确,采用和2相同的策略进行训练,依次迭代,直到到达所包含模型数量的最大值。
Step2:学习每个弱分类器的权重
需要对每个弱分类器的性能进行评估,学习到每个弱分类器权值。
利用所得到的的权值,将所有输出整合到一起。
(详细的推导过程可看第三部分)
Adaboost采用迭代的思想,每次迭代只训练一个弱分类器,训练好的弱分类器将参与下一次迭代的使用。也就是说,在第N次迭代中,一共就有N个弱分类器,其中N-1个是以前训练好的,其各种参数都不再改变,本次训练第N个分类器。其中弱分类器的关系是第N个弱分类器更可能分对前N-1个弱分类器没分对的数据,最终分类输出要看这N个分类器的综合效果。
两个权重:样本权重和弱分类器权重。
样本的权重有两个含义:第一个就是数据的重要性,第二个就是数据被选择的可能性更大。初始权重设为1/N,训练出弱学习器1,此时根据弱学习器1的学习误差率来更新样本权重,弱学习器1中误差高的样本权重变大。然后根据更新后的样本权值训练弱学习器2,依次进行迭代。
分类器权重:
分类器的权重是由最小误差计算得出分类器的权重越大说明在最后的决策时越重要。即,弱分类器错误率越低,权重就越高。
(李航老师《统计学习方法》)
输入:
训练数据集={(_1,_1 ),(_2,_2 ),(_3,_3 ),…,(_,_ )},其中x_i∈⊆ℝ^n,
y_i∈={−1,+1};
弱学习算法;
输出:
最终分类器G(x);
(1)初始化数据权值分布
(以下参考周志华老师Boosting25周年,非常推荐这个视频,讲解Boosting,非常清晰连贯)
Boosting 25年(2014周志华)
Adaboost为什么影响力大?
1.简单且高效,任何需要用到机器学习的地方都可以使用。
2.Boosting算法族核心,是一个general boosting过程。简单来说就是先生成一个学习器,判断它的效果好不好,据此调整迭代。
3.理论支持,不仅给出了训练集误差范围,还给出了泛化误差范围。
Adaboost为什么不容易过拟合
1.奥卡姆剃须刀理论:如无必要,勿增实体。
2.Adaboost似乎违背了这个理论,如下图当训练到7轮左右,训练误差为0继续训练误差还是为0,轮数增加测试集损失继续下降,这就违反了奥卡姆剃刀原则,即第7轮训练的模型,根据奥卡姆剃刀原则,该模型应该是最好的,现实却是很复杂的模型比简单的好。
关于统计学和间隔理论两大流派的解释:
统计学观点看Adaboost:
将模型拆解为三个部分:优化指数函数,加性模型模型,牛顿法迭代,当优化各个成分时,可以得到一系列的模型变体,得到结果是理论和实践相违背,未解释为什么不过拟合。
间隔理论解释了Adaboost随着训练增加不过拟合?
间隔:间隔越大分类越好
训练次数增加,训练误差降到0后,误差越小,训练下去间隔增大,提高了预测性能。
Adaboost算法优点:
Adaboost算法缺点: