机器学习—集成学习

Posted 深度机器学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习—集成学习相关的知识,希望对你有一定的参考价值。

1、boosting与bagging的区别: 

  (1)bagging:从原始数据中随机抽样得到S个同样大小的数据集,来训练S个基学习器,各学习器之间互不依赖。是一种并行的方法。 
  各分类器的权重都是相等的。分类结果是用这S个分类器进行分类,选择分类器投票结果中最多的类别作为最后的分类结果。 
    (抽样方法为有放回的抽样:允许每个小数据集中可以有重复的值。)

  优点: 

  a.训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,高效;

  b.标准的AdaBoost只适用于二分类,Bagging能直接用于多分类,回归等任务;

  c.因为自助采样,每个基学习器只使用了出事训练集中约63.2%的样本,剩下的样本可以用作验证集等等。

  (2)boosting:用所有的数据去训练基学习器,个体学习器之间存在依赖关系,每一个学习器都是基于之前训练的学习器的结果,串行训练,集中关注被错分的数据,来获得新的学习器,达到提升的效果。(通俗来说,就是每次都只学习一点,然后一步步的接近最终要预测的值。) 
  分类的结果是基于所有分类器的加权求和结果的,分类器的权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。

  优点:泛化误差低,易实现,分类准确率较高,可调参数少;

  缺点:对离群点比较敏感。

  两者相同点:所使用的分类器的类型都是一致的。

2、为什么说bagging是减少方差variance,而boosting是减少偏差bias?

  (1)Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立)。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance。(降低variance,预测更集中)

  (2)因此boosting是在sequential(串联)地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。(降低bias,预测更准)

  (3)直观解释 
  boosting是把许多弱的分类器组合成一个强的分类器。弱的分类器bias高,而强的分类器bias低,所以说boosting起到了降低bias的作用。variance不是boosting的主要考虑因素。 
  bagging是对许多强(甚至过强)的分类器求平均。在这里,每个单独的分类器的bias都是低的,平均之后bias依然低;而每个单独的分类器都强到可能产生overfitting的程度,也就是variance高,求平均的操作起到的作用就是降低这个variance。

3、学习器结合可能带来的好处   

  (1)提高泛化能力 (2)减低局部最优风险 (3)假设空间扩大,更好相似。

4、模型融合的方法/策略 

  (1)平均法:对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。

  (2)投票法:最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数。

  (3)学习法:stacking(这一层的输出作为下一层的输入数据的一部分)

  当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。

5、常见融合框架的原理;优缺点;融合一定会提升性能么?为什么融合可能会提高预测效果? 

  原理:多个比一个好+保证准确度、防止过拟合+弱学习器明显+好而不同 
  常见:bagging(并行+少方差),boosting(串行+少偏差),stacking(输出–>输入) 
    不一定,好而不同 
    模型有差异、体现不同表达能力

以上是关于机器学习—集成学习的主要内容,如果未能解决你的问题,请参考以下文章

集成学习--百面机器学习

Python机器学习:7.1 集成学习

机器学习算法--集成学习

机器学习之集成学习

机器学习集成学习算法

机器学习集成学习算法