实用机器学习笔记-第五章-集成学习

一、集成学习

1. 统计学习中的衡量模型指标

1.1 偏差:学习到的模型和真实模型之间的位移

1.2 方差:学习到的东西差别有多大

1.3 示意图实用机器学习笔记-第五章-集成学习_第1张图片

实用机器学习笔记-第五章-集成学习_第2张图片
实用机器学习笔记-第五章-集成学习_第3张图片
实用机器学习笔记-第五章-集成学习_第4张图片

1.4 偏差-方差公式

  • 泛化误差: E d [ ( y − f ^ ( x ) 2 ) ] = B i a s [ f ^ ] 2 + V a r [ f ^ ] + σ 2 E_d[(y-\hat{f}(x)^2)] = Bias[\hat{f}]^2 + Var[\hat{f}]+\sigma^2 Ed[(yf^(x)2)]=Bias[f^]2+Var[f^]+σ2(偏差平方+方差+误差)

1.5 模型-方差的权衡

  • 一开始模型简单的时候,偏差比较大,模型变复杂,偏差下降
  • 假设数据不变化,模型相对于数据更复杂,过多的关注数据的噪音,方差越来越大,导致过拟合
  • 泛化误差是偏差和方差共同作用的结果
    实用机器学习笔记-第五章-集成学习_第5张图片

1.6 降低偏差和方差

1.6.1 降低偏差

  • 说明模型不够复杂,使用复杂的模型
    • Eg:增加神经网络的隐藏层个数、宽度
  • Boosting、Stacking

1.6.2 降低方差

  • 说明模型特别复杂,需要一个简单的模型
  • 正则化,使用L1/L2正则化,限制范围
  • Bagging、Stacking

1.6.3 降低噪音 σ \sigma σ

  • 提升数据质量

1.6.4 集成学习:使用多个模型结合起来提升预测性能

包含Boosting、Bagging、Stacking

2. Bagging

  • 每一次并行训练n个模型(base learner)

  • 目的:降低方差

  • 输出:回归问题(做平均值),分类问题(投票)

  • 每个模型通过在训练集上进行boostrap采样出一个新数据集来进行训练得到

    • 假设训练集有m个样本,在样本里面随机放回的采样m个样本
    • 平均每次会有大约$1-\frac{1}{e} $的样本被采样到,剩下的样本(out of bag)用作验证集

2.1 随机森林

  • 使用决策树作为模型(base learner)
  • 通常还会随机采样一些特征列(30%、50%),不会选取所有的列(避免过拟合,增大树之间的差异性)

实用机器学习笔记-第五章-集成学习_第6张图片

  • 随着树个数n的增加,训练误差、验证误差都下降,误差不会上升
    • 原因:降低了方差

2.2 不稳定模型(方差比较大的模型)

  • Bagging取平均会降低方差,尤其是对不那么稳定的模型(base learner)效果更好

  • 决策树不稳定,线性回归稳定

3. Boosting

  • 将多个弱一点的模型组合在一起变成强的模型
    • 目的:降低偏差
  • 顺序的训练n个弱模型
    • 每次训练一个弱模型 h i h_i hi,评估他的误差 ϵ t \epsilon_t ϵt
    • 根据误差 ϵ t \epsilon_t ϵt重新采样,关注那些预测的不正确的样本
  • 知名算法AdaBoost、Gradient Boosting

3.1 Gradient Boosting

  • 假设在时间t我的模型是 H t ( x ) H_t(x) Ht(x)初始值为0
  • 当t=1
    • 在参差数据上 ( x i , y i − H t ( x i ) i = 1 , . . . , m {(x_i,y_i-H_t(x_i)}_{i=1,...,m} (xi,yiHt(xi)i=1,...,m,训练一个新的小一点、弱一些的模型 F t ( x ) F_t(x) Ft(x)
    • 下一个时刻t+1的模型 H t + 1 ( x ) = H t ( x ) + η F t ( x ) H_{t+1}(x) = H_t(x) + \eta F_t(x) Ht+1(x)=Ht(x)+ηFt(x)
      • η \eta η是学习率,用于正则化我的模型(收缩),防止过拟合
  • 如果采用MSE作为损失函数,那么参差数据 ( x i , y i − H t ( x i ) i = 1 , . . . , m = − ∂ L ∂ H {(x_i,y_i-H_t(x_i)}_{i=1,...,m} = -\frac{\partial{L}}{\partial{H}} (xi,yiHt(xi)i=1,...,m=HL

3.2 Gradient Boosting Decision Trees(GBDT)

  • 使用决策树作为弱模型
    • 用正则化来使得模型变弱,使用一个较小的max_depth、随机采样特征列
  • 顺序训练比较慢,常见的库使用加速算法更快XGBoost、lightGBM

4. Stacking

  • 使用多个不同的模型(base learner)来降低方差
    • 把每个learner连接起来,然后做一个线性的组合(可以学习权重参数)
  • 常用于竞赛中
  • 和Bagging区别
    • 模型种类不一样。Bagging在不同的数据上训练同样的模型,Stacking在同样的数据上训练不同的模型
    • Bagging使用Boostrap采样得到多样性
  • 只加入可以提升模型精度的模型进行stacking,模型不好的不需要加入

实用机器学习笔记-第五章-集成学习_第7张图片

4.1 多层Stacking

  • 使用多层来降低偏差
    • 每一层可以使用不同的模型(base learner)
  • 上面的层都是的输入都是根据下面层的输出结果进行训练的
    • 也可以把原始数据也合并进去
  • 多层数据很 容易过拟合

实用机器学习笔记-第五章-集成学习_第8张图片

4.2 减轻多层Stacking导致的过拟合

  • 训练不同层模型的数据不应该是同一份数据

  • 解决办法:把训练集氛围A和B,在L1上用A训练用B做预测,第二层的输入(训练集)就是L1的输出+B

  • 重复K折Bagging

    1. 和K折交叉验证一样把数据集分成k份,训练k个模型

    2. 把每一个模型在验证集上的输出保留下来,把所有的输出并起来,输入到下一层进行训练

    3. 进一步降低我的过拟合:把1、2重复n次,把并起来的三个值进行平均,进一步降低方差,再输入到下一层

4. 集成学习总结

  • 目的是为了降低方差、偏差
  • 模型对比

实用机器学习笔记-第五章-集成学习_第9张图片

你可能感兴趣的:(机器学习,人工智能,爬虫)