12 集成学习

  • 一是尝试各种模型,选择其中表现最好的模型做重点调参优化。
  • 另一是集各家之长,得到最终決策
  • 后一策略核心,
    • 将多个分类器的结果统一成一个最终決策
    • 用这类策略的机器学习方法统称集成学习
    • 每个单独的分类器称基分类器

  • 基分类器类似“臭皮匠”
  • 复杂模型是“诸葛亮”
  • 一个“臭皮匠”決策能力不强,
    • 多个“臭皮匠”组织起来,决策能力可能超“诸葛亮”
  • 如何将这些基分类器集成,是本章重点

  • 集成学习学界的研究热度不减,业界和众多机器学习竞赛中也非常应用。
  • Kaggle竞張中所向披靡的 XGBOOST

1集成学习的种类

集成学习分哪几种?异同?

Boosting

  • 训练基分类器时用串行方式,各个基分类器有依赖
  • 将基分类器层层叠加,每一层训练时,对前层基分类器分错的样本,给予更高权重
  • 测试时,根据各层分类器的结果的加权得最终结果
  • 学习新知识往往是迭代式,
    • 第一遍学习,记住一部分知识,但也犯一些错,对这些错,印象会很深。
  • 第二时,就针对错误的知识加强学习,减少类似错误发生
  • 不断循环往复,直到犯错次数减少到很低

12 集成学习

Bagging

  • Bagging训练过程中,各基分类器之间无强依赖,可并行训练
  • 基于决策树基分类器的随机森林
  • 为让基分类器之间独立
    • 将训练集分为若干子集(样本数量较少时,可有交叠)
  • Bagging像集体決策
    • 每个个体都单独学习
    • 学习的内容可相同,也可不同,也可部分重叠
    • 个体间存在差异,最终判断不完全一致
    • 最终決策时,每个个体单独作判断,再投票做最后集体决策

12 集成学习

  • 从消除基分类器的偏差和方差的角度来理解Boosting和Bagging差异。
  • 基分类器,(弱分类器)
    • 基分器的错误率要大于集成分类器
    • 基分类器的错误,是偏差和方差两种错误和
  • 偏差是由于分类器的表达能力有限导致的系统性错误,
    • 表现在训练误差不收敛
  • 方差是由于分类器对于样本分布过于敏感
    • 导致样本数较少时,产生过拟合

  • Boosting逐步緊焦于基分类器分错的样本,减小集成分类器的偏差。
  • Bagging分而治之,通过对训练样本多次采样,
    • 分别训练出多个不同模型,然后综合,来减小集成分类器的方差
  • 设所有基分类器出错的概率独立
    • 在某个测试样本上,
    • 用简单多数投票方法来集成结果,
    • 超过半数基分类器出错的概率会随着基分类器的数量增加而下降

  • Model1l、 Model2、 Model3都是用训练集的一个子集训练出来的,它们的決策边界都很曲折,有过拟合
  • 集成之后的模型(红线所示)的決策边界就平滑
    • 这是由于集成的加权投票方法,減小了方差

12 集成学习

2集成学习的步聚和例子

4 偏差与方差

场景描述

  • 过拟合、欠拟合
    • 定性描述模型是否很好地解决特定问题
  • 定量角度,可用模型的偏差与方差来描述模型性能
  • 集成学习能提升弱分类器的性能
  • 从偏差和方差的角度去解释这背后的机理
  • 介绍如何根据偏差和方差这两个指标来指导模型的优化和改进

1 什么是偏差和方差?

  • 有监督学习中
  • 泛化误差来源两方面

  • 偏差:
    • 所有采样得到的大小为mm的训练集训练出的所有模型
      • 的输出的平均值
      • 和真实模型输出之间的偏差
  • 偏差是由于对学习算法做错误假设导致
    • 真实二次,但假设模型是一次
    • 偏差带来的误差在训练误差上就能体现

  • 方差
    • 所有采样得到的大小为mm的训练数据集
    • 训练出的所有模型的输出的方差
  • 模型复杂度相对训练样本数mm过高导致
    • 100样本,设模型是阶数不大于200的多项式函数
    • 由方差带来的误差
      • 体现在测试误差相对于训练误差的增量上

  • 一次射击就是一个机器学习模型对一个样本预测。
  • 射中靶心位置代表预测准确,偏离靶心越远代表预测误差越大
  • nn次采样得到nn个大小为mm的训练样本集
    • 训练出nn个模型
    • 对同一样本预测,相当于做nn次射击,结果如图12.4
  • 最期望的就是左上角,又准确又集中,模型的偏差和方差都小

12 集成学习

2 从减小方差和偏差的角度解释Boosting和Bagging的原理?

  • Bagging能提高弱分类器性能是降低方差
  • Boosting能提升弱分类器性能是降低偏差

  • Bagging是Bootstrap Aggregating,就是再抽样
  • 然后在每个样本上训练出来的模型取平均

  • 设有nn个随机变量,方差记σ2\sigma^2,两两变量间相关性ρ\rho
  • nn个随机变量的均值Xin\frac{\sum X_i}{n}
    • 方差为ρσ2+(1ρ)σ2/n\rho*\sigma^2+(1-\rho)*\sigma^2/n
  • 完全独立的情况下,nn个随机变量的方差为σ2/n\sigma^2/n,
    • 说方差减小到了原来的1/n。

  • 再从模型的角度理解这个问题,
  • 对n个独立不相关的模型的预测结果取平均,方差是原来单个模型的1/n1/n
  • 这个描述不甚严谨,但原理已讲得很清楚
  • 当然,模型之间不可能完全独立。
  • 为追求模型的独立性,诸多Bagging方法做不同的改进
  • 随机森林中,每次选取节点分裂属性时,
    • 会随机抽取一个属性子集,
    • 而不是从所有属性中选取最优属性,
    • 这就是为了避免弱分类器之间过强的相关性
  • 训练集的重采样
    • 也能带来弱分类器之间的一定独立性
    • 从而降低Bagging后模型的方差。

  • Boosting在训练好一个弱分类器后,
  • 我们需计算弱分类器的错误或残差
  • 作为下一个分类器的输入
  • 这个过程本身就在不断减小损失函数,使模型不断逼近“靶心”,
    • 使模型偏差不断降低
    • 但Boosting过程不会显著降低方差
  • 这是因为Boosting使各弱分类器之间强相关,
    • 缺乏独立性,所以并不会对降低方差有作用。

  • 泛化误差、偏差、方差和模型复杂度的关系如图12.5
  • 对给定的学习任务和训练数据集,我们需对模型的复杂度做合理假设。
  • 如果模型复杂度过低,虽然方差很小,但偏差很高
  • 如果过高,虽然偏差降低,但方差很高
  • 所以需综合考虑偏差和方差
    • 选择合适复杂度的模型训练

12 集成学习