Datawhale集成学习学习笔记——Task05Bagging

投票法

  • 定义: 一种遵循少数服从多数原则的集成学习模型,

  • 作用:

    • 提高模型的泛化能力, 减少模型的错误率
    • 通过多个模型的集成降低方差, 从而提高模型的鲁棒性
    • 在理想情况下, 投票法的预测效果应当优于任何一个基模型的预测效果
  • 基本思路

    • 回归模型: 预测结果是所有模型预测结果的平均值
    • 分类模型
      • 硬投票法: 预测结果是所有投票结果最多出现的类
      • 软投票法: 预测结果是所有投票结果中概率加和最大的类
      • 相对于硬投票,软投票法考虑到了预测概率这一额外的信息,因此可以得出比硬投票法更加准确的预测结果。
      • 适用条件
        • 当投票合集中使用的模型能预测出清晰的类别标签时,适合使用硬投票。当投票集合中使用的模型能预测类别的概率时,适合使用软投票。
        • 软投票同样可以用于那些本身并不预测类成员概率的模型,只要他们可以输出类似于概率的预测分数值(例如支持向量机、k-最近邻和决策树)。
  • 理论上,基模型可以是任何已被训练好的模型

  • 实际上基模型需要满足的条件

    • 基模型之间的效果不能差别过大。当某个基模型相对于其他基模型效果过差时,该模型很可能成为噪声。
    • 基模型之间应该有较小的同质性。例如在基模型预测效果近似的情况下,基于树模型与线性模型的投票,往往优于两个树模型或两个线性模型。
  • 局限: 对所有模型的处理是一样的,这意味着所有模型对预测的贡献是一样的。如果一些模型在某些情况下很好,而在其他情况下很差,这是使用投票法时需要考虑到的一个问题。

  • Sklearn 中VotingRegressorVotingClassifier, 这两种模型的操作方式相同,并采用相同的参数。使用模型需要提供一个模型列表,列表中每个模型采用Tuple的结构表示,第一个元素代表名称,第二个元素代表模型,需要保证每个模型必须拥有唯一的名称。

models = [('lr',LogisticRegression()),('svm',SVC())]
ensemble = VotingClassifier(estimators=models)

# 有时某些模型需要一些预处理操作,可以为定义Pipeline完成模型预处理工作:
models = [('lr',LogisticRegression()),('svm',make_pipeline(StandardScaler(),SVC()))]
ensemble = VotingClassifier(estimators=models)

# voting参数让我们选择软投票或者硬投票;
models = [('lr',LogisticRegression()),('svm',SVC())]
ensemble = VotingClassifier(estimators=models, voting='soft') # hard

Bagging

  • 和投票法不同的是, Bagging不仅集成模型最后的预测结果, 而且采用一定策略来影响基模型训练, 保证基模型可以服从一定的假设
  • 希望基模型之间具有较大的差异性,而在实际操作中的模型却往往是同质的,因此一个简单的思路是通过不同的采样增加模型的差异性。
  • 核心: 自助采样(bootstrap), 即有放回的从数据集中进行采样, 同样的一个样本可能被多次进行采样
  • 流程: 有放回的重复K次采样获得大小为K的样本集合 → 重复上述过程T次, 获得T个含K个样本的采样集合 → 基于每个采样集合训练出一个基学习器 → 再将基学习器进行结合
    • 回归问题: 通过预测取平均值进行
    • 分类问题: 通过预测多数票进行
  • 有效原因: 每个模型都是在略微不同的训练数据集上拟合完成的,这使得每个基模型之间存在略微的差异,使每个基模型拥有略微不同的训练能力
  • 降低方差的技术, 在不剪枝决策树、神经网络等易受样本扰动的学习器上效果更加明显
    • 最终结果: y ^ = 1 n ∑ i = 1 n y ^ ( i ) \hat{y}=\frac{1}{n}\sum\limits_{i=1}^{n}\hat{y}^{(i)} y^=n1i=1ny^(i)
    • 方差: V a r ( x ˉ ) = 1 n σ 2 Var(\bar{x}) = \frac{1}{n}\sigma^2 Var(xˉ)=n1σ2, 单个模型的方差: V a r ( x i ) = σ 2 Var(x_i) = \sigma^2 Var(xi)=σ2, V a r ( x ˉ ) = V a r ( 1 n ∑ i = 1 n x i ) = 1 n 2 V a r ( ∑ i n x i ) = 1 n 2 ∑ i n V a r ( x i ) = 1 n 2 ∑ i n σ 2 = 1 n 2 ⋅ n ⋅ σ 2 Var(\bar{x}) = Var(\frac{1}{n}\sum\limits_{i=1}^{n}x_i) = \frac{1}{n^2}Var(\sum\limits^n_ix_i)=\frac{1}{n^2}\sum\limits^n_iVar(x_i)=\frac{1}{n^2}\sum\limits^n_i\sigma^2=\frac{1}{n^2} \cdot n \cdot \sigma^2 Var(xˉ)=Var(n1i=1nxi)=n21Var(inxi)=n21inVar(xi)=n21inσ2=n21nσ2
  • 在实际的使用中,加入列采样的Bagging技术对高维小样本往往有神奇的效果。
  • Sklearn中的BaggingRegressorBaggingClassifier (默认基模型为树模型)

随机森林

  • Bagging+特征采样

作业

在这里插入图片描述

  • 什么是bootstraps?
    • 又放回抽样
  • bootstraps与bagging的联系
    • bagging是使用bootstraps构建多个基学习器后对结果进行加权平均
  • 什么是bagging?
    • Boosting方法是使用同一组数据集进行反复学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的机器学习模型。
  • 随机森林与Bagging的联系与区别
    • 二者都是用bootstraps抽样方法, 但是随机森林在bagging的基础上还增加了特征采样
  • 使用偏差与方差理论阐述为什么 bagging能提升模型的预测精度?
    • 最终结果: y ^ = 1 n ∑ i = 1 n y ^ ( i ) \hat{y}=\frac{1}{n}\sum\limits_{i=1}^{n}\hat{y}^{(i)} y^=n1i=1ny^(i)
    • 方差: V a r ( x ˉ ) = 1 n σ 2 Var(\bar{x}) = \frac{1}{n}\sigma^2 Var(xˉ)=n1σ2, 单个模型的方差: V a r ( x i ) = σ 2 Var(x_i) = \sigma^2 Var(xi)=σ2, V a r ( x ˉ ) = V a r ( 1 n ∑ i = 1 n x i ) = 1 n 2 V a r ( ∑ i n x i ) = 1 n 2 ∑ i n V a r ( x i ) = 1 n 2 ∑ i n σ 2 = 1 n 2 ⋅ n ⋅ σ 2 Var(\bar{x}) = Var(\frac{1}{n}\sum\limits_{i=1}^{n}x_i) = \frac{1}{n^2}Var(\sum\limits^n_ix_i)=\frac{1}{n^2}\sum\limits^n_iVar(x_i)=\frac{1}{n^2}\sum\limits^n_i\sigma^2=\frac{1}{n^2} \cdot n \cdot \sigma^2 Var(xˉ)=Var(n1i=1nxi)=n21Var(inxi)=n21inVar(xi)=n21inσ2=n21nσ2
  • 请尝试使用 bagging与基本分类模型或者回归模型做对比,观察bagging是否相对于基础模型的精度有所提高?
    • 有所提高
  • 假如让你来实现 bagging,你会使用 python+ numpy+ sklearn的基础模型来实现 bagging吗?

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值