学习笔记-集成模型

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

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. 统计学习方法
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容