学习笔记-集成模型

作者: Pluto_wl | 来源:发表于2020-03-09 10:52 被阅读0次

    集成学习通过构建并结合多个学习器来提高泛化性能。思想就是三个臭皮匠,顶个诸葛亮。例如在分类中, 将多个弱分类器通过某种方式结合起来,得到比弱分类器的效果更好的效果。

    bagging有放回随机抽样是为了保证多样性,每棵树要多少有点差异。boosting经典的是基于残差的,那就要求每棵树针对一样的数据集。

    集成学习分类

    • 按照目标分类
    1. stacking:增强分类效果
    2. bagging:降低方差
    3. boosting:降低偏差
    • 按生成方式分类
    1. 串行:即当前分类器依赖前一个分类器,必须前一个训练完毕才能训练。典型代表是adaboost
    2. 并行:多个不同的分类器之间没有关系,可以同时训练,然后再结合到一起。典型的代表是随机森林

    stacking

    stacking其实很简单,直接将多个分类器结果合并到一起,训练一层线性分类器得到最终的结果。

    1. 使用所有数据训练了K个模型
    2. 将测试数据输入K个模型,得到K个预测分布
    3. 将K个分布cat到一起,然后经过一层线性分类器得到最终结果

    bagging

    bagging通过多次有放回采样对数据进行采样,得到T个子集,然后分别使用T个模型对子集进行训练。

    1. 使用bootstrap采样对数据采样出T个子集
    2. 基于子集训练T个模型
    3. 将每个模型结合起来,对于回归任务使用简单平均的方式,对于分类任务,使用多数表决的方式。
    • bagging为什么会降低方差(variable),提高模型的稳定性?
      当我们采用出的T个子集时,每个子集的均值与方差与整体数据相等。但是使用bagging后,例如在回归任务中,会对T个模型的结果相加并取均值,即数据的方差比整体方差的小。
    • boostrap如何采样
      有放回的采样方式,即取出后放回到原来数据集中。其还有一个优点是
      每个子集大约使用了63.2%的数据,所以剩余36.8%的数据可以当作验证集。
      63.2%的来历:每个样本被选中的概率为\frac{1}{n},所以采样d次依然没有被使用的概率为p(未选中)=(1 - \frac{1}{n}) ^d,当n特别大时,p(未选中)趋近于\exp -1,约等于36.8,所以采样的子集约使用了63.8的数据。

    boosting

    boosting典型代表是AdaBoost算法,特点是通过迭代每次学习一个基本分类器。每次迭代中,提高那些被前一轮分类器错误分类数据的权值,而降低那些被正确分类的数据的权值。最后,AdaBoost将基本分类器的线性组合作为强分类器,其中给分类误差率小的基本分类器以大的权值,给分类误差率大的基本分类器以小的权值。

    具体推导请看《统计学习方法》第二版第八章

    • boosting如何降低偏差(bias)?
      boosting是在前一个模型的基础上,给识别错误的样本更大权重, 让下一个模型更加关注识别错误的样本,所以每次迭代都会降低偏差。
    参考文献
    1. 机器学习 周志华
    2. https://zhuanlan.zhihu.com/p/41809927
    3. 统计学习方法

    相关文章

      网友评论

        本文标题:学习笔记-集成模型

        本文链接:https://www.haomeiwen.com/subject/eylkdhtx.html