【机器学习】快速理解集成学习(Ensemble Learning)
前言
当我们在做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见。机器学习处理问题时,又何尝不是如此?
集成学习
集成学习就是通过构建并结合多个学习器来完成学习任务。
上图显示了集成学习的一般结构:
- 先产生一组“个体学习器”;
- 再用某种策略将它们结合起来;
- 通过“投票法”产生输出。
以上结构中,设计的问题有:
1. 选择什么样子的个体学习器才能使结合后的性能提高
2. 应该使用何种策略结合
3. 如何进行分类决策
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的。但是从理论上来说使用弱学习器集成足以获得很好的性能,但在实践中出于种种考虑,例如希望使用较少的个体学习器,或者重用关于常见学习器的一些经验时,人们往往会使用比较强的学习器。
我们知道,把好坏不等的东西参合在一起,那么通常比最坏的好一些,比最好的坏一些,那么集成学习把多个个体学习器结合起来,如何才能获得比最好的单一学习器更好的性能呢?
给出答案:个体学习器应该“好而不同”,也就是个体学习器要有一定的“准确性”,即学习器不能太坏;并且要有“多样性”,即学习器之间具有差异。如下图:
事实上,个体学习器的“准确性”和“多样性”本身存在冲突,一般的,准确性很好之后,要增加多样性就需要牺牲准确性。
因此,如何产生好而不同的个体分类器,恰是集成学习的研究核心
根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类:
- 个体学习器间存在强依赖关系,必须串行生成的序列化方法,代表是:Boosting
- 个体学习器间不存在强依赖关系,可同时生成的并列化方法,代表是:Bagging和随机森林(Random Forest)
Bagging(自举汇聚法)
Bagging是基于数据随机重抽样的分类器构建方法,是在原始数据集选择次后得到个新数据集的一种技术。新数据集与原数据集的大小相等。
每个数据集都是通过在原始数据集中随机选择一个样本来进行替换而得到的。这里的替换就意味着:可以多次选择同一个样本。这一性质允许新数据集中可以有重复的样本,而原始数据集的某些样本在新集合中则不再出现。
给定包含个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回原始数据集,使得下次采样时该样本仍有可能被选中,这样进过次随机采样操作,我们得到包含个样本的采样集。初始训练集中有的样本在采样集中多次出现,有的则从未出现。初始训练集中约有63.2%的样本出现在采样集中,这个百分比是自助采样法取极限得到的,可自行百度,或参考《机器学习》周志华,公式(2.1)
在个数据集建立好之后,将某个学习算法分别作用于每一个数据集就得到了个分类器,当我们要对新数据进行分类时,就可以应用着个分类器进行分类。选择分类器投票结果中最多类别作为最后的分类结果。
Random Forest (随机森林)
随机森林是Bagging的一个扩展变体,RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入随机属性选择。具体来说,我们在介绍决策树的时候了解到,在属性划分上我们是在当前节点的属性集合中选择一个属性作为最优划分属性,而在RF中,对决策树的每个节点,先从该结点的属性集合中随机选择一个包含个属性的子集,然后再从这个子集中选择一个最优划分属性。
随机森林简单、容易实现、计算开销小,在很多显示任务中展现出强大的性能。
Boosting(提升法)
Boosting是一种与Bagging类似的技术,这两种集成都是“同质”的,即个体学习器的类型是一致的。但是Boosting是通过串行训练而获得的,每个分类器要根据以训练出的分类器的性能来进行训练。
因为Boosting分类的结果是基于所有分类器的加权求和结果的,因此两者有些不一样。Bagging中的分类器的权重是一样的,而Boosting中的分类器的权重不一样,每个权重代表的是其对应的分类器在上一轮迭代中的成功度。
Boosting方法中,最流行的版本便是AdaBoost,下篇博客,我们将详细介绍AdaBoost
结合策略
1. 平均法
对数值型输出,最常见的结合策略是使用平均法
-
简单平均法(simple averaging)
-
加权平均法(weighted averaging)
其中,是个体学习器的权重,通常要求
2. 投票法
- 绝对多数投票法(majority voting)
即:若某标记的票过半数,则预测为该标记。否则拒绝预测
- 相对多数投票法(plurality voting)
即:预测为得票最多的标记,若同时多个标记获得最高票,则从中随机选取一个
- 加权投票法(weighted voting)
与加权平均法类似
3. 学习法
当训练数据集很多时,使用“学习法”,典型代表“Stacking”。通过另一个学习器来进行结合,这里把个体学习器称为初级学习器,用于结合的学习器称为次级学习器。
Stacking先从初始数据集中训练出初级学习器,然后“生成”一个新的数据集用于训练次级学习器。在这个新的数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。
参考书籍:
《机器学习》 周志华