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(输出–>输入) 
        不一定,好而不同 
        模型有差异、体现不同表达能力

  • 相关阅读:
    C语言 sprintf 函数 C语言零基础入门教程
    C语言 printf 函数 C语言零基础入门教程
    C语言 文件读写 fgets 函数 C语言零基础入门教程
    C语言 文件读写 fputs 函数 C语言零基础入门教程
    C语言 fprintf 函数 C语言零基础入门教程
    C语言 文件读写 fgetc 函数 C语言零基础入门教程
    C语言 文件读写 fputc 函数 C语言零基础入门教程
    C语言 strlen 函数 C语言零基础入门教程
    Brad Abrams关于Naming Conventions的演讲中涉及到的生词集解
    适配器模式
  • 原文地址:https://www.cnblogs.com/eilearn/p/8990059.html
Copyright © 2011-2022 走看看