zoukankan      html  css  js  c++  java
  • 机器学习(五)—集成学习

    1、boosting与bagging的概念: 

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

      bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络

      bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。

      优点: 

      a.算法每次都进行采样来训练模型,泛化能力很强,对于降低模型的方差很有作用,当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些;

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

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

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

      (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. 样本选择上:Bagging采用的是Bootstrap随机有放回抽样;而Boosting每一轮的训练集是不变的,改变的只是每一个样本的权重。
    2. 样本权重:Bagging使用的是均匀取样,每个样本权重相等;Boosting根据错误率调整样本权重,错误率越大的样本权重越大。
    3. 预测函数:Bagging所有的预测函数的权重相等;Boosting中误差越小的预测函数其权重越大。
    4. 并行计算:Bagging各个预测函数可以并行生成;Boosting各个预测函数必须按顺序迭代生成。

    4、下面是将决策树与这些算法框架进行结合所得到的新的算法:

        1)Bagging + 决策树(CART) = 随机森林

        2)AdaBoost + 决策树 = 提升树

        3)Gradient Boosting + 决策树 = GBDT

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    初始Openwrt
    Angular CLI 使用教程指南参考
    Visual Studio Code怎么在同一窗口打开多个项目文件?
    mysql查看数据表是否有重复数据
    Angular UI框架 Ng-alain @delon的脚手架的生成开发模板
    VS2010 WDK7.1.0 Win7_64
    Nodejs使用TLS
    python定时执行方法
    Visual Studio Code 使用Git进行版本控制
    VSCode中设置Python解释器和pylint的波浪线问题
  • 原文地址:https://www.cnblogs.com/eilearn/p/8990059.html
Copyright © 2011-2022 走看看