集成学习

https://zhuanlan.zhihu.com/p/27689464  这篇文章对集成学习讲的不错

http://www.cnblogs.com/jasonfreak/p/5657196.html  这篇文章从理论和实践2个方面来介绍

http://www.cnblogs.com/jasonfreak/p/5720137.html  这篇文章从sklearn角度介绍了集成学习实践

 

在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现比较好的模型,但实际情况往往不这么理想,有时会我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。

集成学习在各个规模的数据集上都有很好的策略。

  • 数据集大:划分成多个小数据集,学习多个模型进行组合
  • 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合

集成学习主要分为如下几类:Bagging,Boosting以及Stacking

 

Bagging

随机森林(Random Fortest)就属于Bagging。随机森林简单的来说就是随机的方式建立一个森林,森林由很多的决策树组成,随机森林的每一个决策树之间是没有关联的。

在我们学习每一棵决策树的时候就需要用到Bootstrap方法。在随机森林中,有两个随机采样的过程:对输入数据的行(数据的数量)与列(数据的特征)都进行采样。对于行采样,采用有放回的方式,若有N个数据,则采样出N个数据(可能有重复),这样在训练的时候每一棵树都不是全部的样本,相对而言不容易出现overfitting;接着进行列采样从M个feature中选择出m个(m<<M)。最近进行决策树的学习。

 

预测的时候,随机森林中的每一棵树的都对输入进行预测,最后进行投票,哪个类别多,输入样本就属于哪个类别。这就相当于前面说的,每一个分类器(每一棵树)都比较弱,但组合到一起(投票)就比较强了。

 

 

Boosting

提升方法(Boosting)是一种可以用来减小监督学习中偏差的机器学习算法。主要也是学习一系列弱分类器,并将其组合为一个强分类器。Boosting中有代表性的是AdaBoost(Adaptive boosting)算法:刚开始训练时对每一个训练例赋相等的权重,然后用该算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。具体可以参考《统计学习方法》。

之前提到过的GBDT(Gradient Boost Decision Tree)也是一种Boosting的方法,与AdaBoost不同,GBDT每一次的计算是为了减少上一次的残差,GBDT在残差减少(负梯度)的方向上建立一个新的模型。

 

posted on 2017-10-30 15:51  raul313  阅读(151)  评论(0编辑  收藏  举报