集成学习
- 集成学习(ensemble learning)是当下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成所有模型的建模结果
- 集成学习就是将多个弱学习器集合成一个强学习器
- 集成算法的目标
- 集成算法会考虑多个评估器的建模结果,汇总之后得到一个综合结果,以此来获取比单个模型更好的回归或分类表现
- 实现集成学习的方法有
Bagging
Boosting
Stacking
- 在机器学习的众多算法中,目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型【弱评估器,基评估器】,在某些方面表现得比较好),集成学习就是组合这里的多个弱监督模型一起得到一个更好更全面的强监督模型。
- 集成学习潜在的思想是即便某一个弱评估器的得到了错误的预测,其他的弱评估器也可以将错误纠正回来
- 在现实中集成学习也有相当大的作用,它可以用来做市场营销,统计客户来源,保留和流失,也可以预测疾病的风险等
1.集成学习方法的分类
-
序列集成方法(提升法Boosting):
- 参与训练的基础学习按照顺序生成(例如
AdaBoost
)。序列方法的原理是利用基础学习器之间的依赖关系,通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果
- 参与训练的基础学习按照顺序生成(例如
-
并行集成方法(装袋法Bagging):
- 参与训练的基础学习器并行生成。并行方法的原理是利用基础学习器之间的独立性,通过平均或者投票的方式可以显著降低错误
2. Bagging 套袋法
-
全称为
boostrap aggregating
,它是一种有放回的抽样方法 -
算法过程
- 从原始样本集中抽取训练集。每轮从原始样本集中使用有放回的方法抽取n个训练样本(在训练样本中,有些样本可能被多次抽取中,而有些样本可能一次都没有抽中)。并进行k轮抽取,得到k个训练集(k个训练集之间是相互独立的
- 每次使用一个训练集得到一个模型,K个训练集共得到k个模型。(注:这里并没有具体的的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树,感知器等)
- 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;
- 对回归问题:计算上述模型的均值作为最后的结果(所有模型得重要性相同)
3.Boosting
-
主要思想是将学习器组成一个强学习器
-
核心思想
- 通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对的样例的权值(使得弱分类器可以对分错样例更敏感),来使得分类器对误分的数据有较好的结果
- 即算法在刚开始训练时对每一个训练例赋相等的权重,然后用过该算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,就是让学习算法在每次学习以后更注意学错的样本
4.Stacking
-
Stacking
方法是指训练一个模型用于组合其他各个模型,首先我们先训练多个不同的模型,然后把之前训练的各个模型的输出来训练一个模型,以得到一个最终的输出 -
如下,现在整个训练集上通过有放回抽样得到各个训练集合,得到一系列分类模型,然后将输出用于训练第二层分类器
5.Bagging,Boosting的区别
- 样本选择上
Bagging
:训练集是在原始集中有放回选取的,从原始中选出的各轮训练集之间是独立的Boosting
:每一轮的训练集不变,只是训练集中每个样例在分类其中的权重发生变化,而权值是根据上一轮的分类结果进行调整
- 样本权重上
Bagging
:使用均匀取样,每个样例的权重相等Boosting
:根据错误率不断调整样例的权值,错误率越大则权重越大