跟我一起机器学习系列文章将首发于公众号:月来客栈,欢迎文末扫码关注!
1 引例
通过前面几篇文章的学习,我们已经了解了机器学习中的多种分类和回归模型。那现在有一个问题就是,哪一个模型最好呢?以分类任务为例,当我们拿到一个需要进行分类的任务时,如果是你你会选择哪种模型进行建模呢?一个狡猾的办法就是挨个都试一下,那这样做有没有道理呢?还别说,我们在实际的情况中真的可能会都去试一下,因为在没有实验之前谁都不会知道真正的结果。假如现在我们对A、C、D这三个模型进行建模,最后得到结果是:A的分类准确率为0.93,B的分类准确率为0.95,C的准确率为0.88。那我们最终应该选择哪一个模型呢?是模型B吗?
假设一共有100个数据样本,数据标签为二分类(正、负两类),如图所示为三个模型的部分分类结果。其中图示中的5个样本,模型A和C均能分类正确,而模型B不能分类正确。如果我们此时将这三个模型一起用于分类任务的预测,并且对于每一个样本的最终输出结果采用基于投票的规则在三个模型的输出结果中进行选择。例如图示中的第1个样本,模型A和C均判定为“负类”只有B判定为“正类“,则最后的输出便为”负类“。那么此时,我们就有可能得到一个分类准确率为1的“混合”模型。
注:在其余的95个样本中,假设根据投票规则均能分类正确
2 集成学习
在机器学习中,基于这种组合思想来提高模型精度的方法被称为集成学习(ensemble learning)。俗话说”三个臭皮匠,赛过诸葛亮“,这句话完美的阐述了集成学习的潜在思想——通过将多个弱的模型结合在一起来提高最终结果的预测精度。
常见的集成模型主要包括以下三种:
- Bagging;Bagging的核心思想为并行地训练一系列各自独立的同类模型,然后再将各个模型的输出结果按照某种策略进行聚合(例如分类中可采用投票策略,回归中可采用平均策略)。
- Boosting;Boosting的核心思想为串行地训练一系列前后依赖的同类模型,即后一个模型用来对前一个模型的输出结果进行纠正。
- Stacking;Stacking的核心思想为并行地训练一系列各自独立的不同类模型,然后通过训练一个元模型(meta-model)来将各个模型的输出结果进行结合。
下面内容我们就来大致了解一下各类集成模型中常见的算法和使用示例。
2.1 Bagging
跟我一起机器学习系列文章将首发于公众号:月来客栈,欢迎文末扫码关注!
Bagging的全称为 bootstrap aggregation,而这两个单词也分别代表了Bagging在执行过程中的两个步骤:①bootstrap samples,②aggregate outputs。也就是Bagging首先从原始数据中随机抽取多组包含若干数量样本的子训练集;然后再分别以不同的子训练集得到不同的基模型进行聚合:
y = 1 M ∑ m = 1 M f m ( x ) (1) y=\frac{1}{M}\sum_{m=1}^Mf_m(x)\tag{1} y=M1