当前位置: 首页 > news >正文

【机器学习】14. 集成学习 ensemble: bagging, boosting, 随机森林 random forest

集成学习 ensemble: bagging, boosting, 随机森林 random forest

  • 1. Ensemble 整体认知
  • 2. 使用Ensemble的原因
  • 3. 构建Ensemble 的方法
  • 4. Bagging(bootstrap aggregation)
    • 特点
  • 5. Boosting
    • AdaBoost
      • 整体算法思路
  • 6. 比较
  • 7. 随机森林

1. Ensemble 整体认知

  • 一个ensemble结合了多个分类器的预测
  • 跟其他分类器组合在一起的分类器称为base classifier(单个分类器),它们是使用训练数据创建的。
  • 有多种方法可以对新例子进行预测,例如,多数投票,即加权投票。等
  • ensemble往往比base classifier工作得更好

案例:三个base classifier在训练集上面训练:KNN, Logistic Regression, Decision Tree。在预测新样本的时候,每个独立的预测器被结合起来,采取多数投票的结果

总而言之,ensemble 将多个分类器组合,得到更好的预测。

2. 使用Ensemble的原因

举个例子,一个由25个二分类的分类器组成的Ensemble,每个分类器的错误率是0.35,由此会有两个情况。

  1. 情况1:所有分类器做了相同的判断,得到同样错误的结果,最终错误率依旧是0.35
  2. 情况2: 所有分类器之间是相互独立的,它们的错误没有相关性。那么最终错误率由下面的公式计算得到
    e e n s e m b l e = ∑ i = 13 25 ( 25 i ) ϵ i ( 1 − ϵ ) 25 − i = 0.06 e_{ensemble} = \sum^{25}_{i=13}\binom{25}{i}ϵ^i(1-ϵ)^{25-i}=0.06 eensemble=i=1325(i25)ϵi(1ϵ)25i=0.06
    注意:
    ( 25 i ) = 25 ! i ! ∗ ( 25 − i ) ! \binom{25}{i} = \frac{25!}{i!*(25-i)!} (i25)=i!(25i)!25!
    从结果来看,错误率大幅度降低。
    在这里插入图片描述

当e > 0.5时,集成比基本分类器差
独立性:当基分类器有轻微的相关性时,集成方法取得了很好的效果。

3. 构建Ensemble 的方法

  1. 操作训练数据——根据一些采样分布对原始数据进行重新采样,创建多个训练集,并为每个训练集构建一个分类器(例如Bagging和Boosting)。
  2. 操纵特征-使用输入特征的子集(例如随机森林和Random subspace)
  3. 操纵标签-(例如Error-correcting output coding: 比如A,B,C三类,变成AB,AC,BC这样)
  4. 操纵学习算法(模型参数)

4. Bagging(bootstrap aggregation)

  1. 每次采用有放回的抽样从训练集中取出n个样本组成新的训练集
  2. 利用新的训练集, 训练得到M个子模型(也有M个boostrap samples)
  3. 对于分类问题, 得票最多的分类为最终的类别; 对于回归问题,平均值作为预测值

特点

  1. 通常会比单一分类器的效果更好。
  2. 特别是对于不稳定分类器

不稳定分类器是指很小的变化在训练集会导致大的变化在最终预测上。比如决策树和神经网络都是不稳定分类器(unstable classifiers)

5. Boosting

主要思想:

  1. 让分类器相互比冲
  2. 下一个分类器需要使用不一样的样本进行训练。(AdaBoost是不同权重)

AdaBoost

  • 使用权重训练集
  • 每个训练样本都有关联的权重w(>=0)
  • 更高的权重,代表在之前的分类器中,这个样本更难被分类
  • 更高权重的样本会有更大的机会被选择在下一个分类器中。

整体算法思路

  1. 有N个样本, 标签y属于(+1,1)

  2. 初始化所有样本的权重w = 1/N

  3. 对于从1到t的分类器

    • 训练一个比较弱的训练器,计算ϵ (误差)
      ϵ t = ∑ n w t ( n ) I [ y n ≠ h t ( x n ) ] ϵ _t = \sum_nw_t(n) I[y_n≠h_t(x_n)] ϵt=nwt(n)I[yn=ht(xn)]
      I是indicator function
      I [ a = b ] = 1 ( a = b ) o r 0 ( a ≠ b ) I[a=b] = 1 (a=b) or 0(a≠b) I[a=b]=1(a=b)or0(a=b)
    • 计算每个分类器的贡献
      β t = 1 2 l o g 1 − ϵ t ϵ t β_t = \frac{1}{2}log\frac{1-ϵ _t}{ϵ _t} βt=21logϵt1ϵt
    • 更新权重
      w t + 1 ( n ) = w t ( n ) e − β t y n h t ( x n ) w_{t+1}(n) = w_t(n)e^{-β_ty_nh_t(x_n)} wt+1(n)=wt(n)eβtynht(xn)

    Yn是(-1,+1) ht(是预测值),如果预测错误则二者乘积为-1,正确则乘积为1. 所以预测错误会增加权重。

    并且normalize让所有权重和为1

  4. 最终的输出是
    h [ x ] = s i g n [ ∑ t = 1 T β t h t ( x ) ] h[x] = sign[\sum^T_{t=1}β_th_t(x)] h[x]=sign[t=1Tβtht(x)]
    在这里插入图片描述

6. 比较

  1. 相似之处
  • 使用投票(用于分类)和平均(用于预测)来合并分类器的输出
  • 结合相同类型的分类器,典型的树-例如决策树
  1. 差异
  • 创建分类器:
    • 装袋-单独
    • 鼓励—迭代—鼓励新的分类器成为专家
  • 组合法
  • 装袋-所有基础学习者的重量相等
  • 提升(AdaBoost) -基于训练集性能的不同给予权重

7. 随机森林

  • 性能取决于单个树的准确性和树之间的相关性
  • 使用Bagging和随机特征选择来产生多样性,减少树之间的相关性
  • 随着特征数量k的增加,强度和相关性都在增加
  • 随机森林的表现通常优于单个决策树
  • 有抵抗过拟合的能力
  • 由于只考虑了特征的一个子集,所以速度很快。

http://www.mrgr.cn/news/61309.html

相关文章:

  • Springboot自动装配原理
  • C#自定义事件的案例
  • XD6500S替代翱捷ASR6500S系列低功耗lora SPI模块SX1262/SX1278
  • Spring之HTTP客户端--RestTemplate的使用
  • 揭秘抖音SEO矩阵源码,霸屏秘籍!
  • bean生命周期
  • 煤矿安全大模型:微调internlm2模型实现针对煤矿事故和煤矿安全知识的智能问答
  • 2、片元着色器之有向距离场(SDF)运算:并集、差集、交集
  • 【JavaScript】入门详解
  • 化繁为简的鸿蒙原生开发时代,“开发者”被高度关注
  • 豆瓣同城活动采集-过去一年到未来已定档活动
  • Video-XL:智源研究院开源超基准测试的长视频理解大模型
  • [ACTF2020 新生赛]Exec 1
  • 2. Flink快速上手
  • 如何通过接口版本控制实现向后兼容
  • autojs使用中的一些坑
  • 看低代码开发如何通过几步加速融入产业进程
  • SAP-MM委外订单的退货处理
  • FreeRTOS队列分析
  • M3U8不知道如何转MP4?包能学会的4种格式转换教学!