Datawhale-集成学习-学习笔记Day2-bagging

Datawhale-集成学习-学习笔记Day2-bagging

bagging

与投票法类似,bagging也将所有及模型的结果统一在一起,来当作模型最终的结果。但是bagging在投票法的基础上又更前进了一步,采用了一定的策略来影响基模型的训练,从而进一步降低模型的方差。

在投票法中我们说过,我们希望各个模型之间会有较大的差异性,来获取更好的结果。但是在实际操作中,我们使用的模型往往是同质的。所以,在bagging我们使用不同的采样方法来增加模型的差异性。

主要的步骤大概如下:

  1. 我们在样本中放回的抽取k个样本组成采样集
  2. 重复N次步骤1,获取N个采样集
  3. 基于每个采样集训练出一个基学习器,在将所有模型的结果进行统一

Bagging同样是一种降低方差的技术,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效果更加明显。在实际的使用中,加入列采样的Bagging技术对高维小样本往往有神奇的效果。

为什么bagging可以降低方差

首先,我们拥有n个基于随机采样的采样集,并且分别对这些采样集训练出了i个不同的基模型,记为 G i ( x ) G_i(x) Gi(x)

所以,我们将这些基模型bagging可以记为:
F ( x ) = ( ∑ i N G i ( x ) ) / n F(x) = (\sum_i^NG_i(x))/n F(x)=(iNGi(x))/n
我们可以记子模型 G i ( x ) G_i(x) Gi(x)的方差为 σ 2 \sigma^2 σ2。这样根据方差公式:
D ( F ( x ) ) = σ 2 / n D(F(x)) = \sigma^2/n D(F(x))=σ2/n
因为n>=1,所以模型的方差是减小了的。但是对于结果的期望是没有改变的。

案例实现

import numpy as np
from sklearn.datasets import make_classification
from sklearn.ensemble import BaggingClassifier
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import RepeatedStratifiedKFold


X, y = make_classification(
    n_samples=1000,
    n_features=20,
    n_informative=15,
    n_redundant=5,
    n_classes=2,
    random_state=5
)

# print(X.shape, y.shape)

model = BaggingClassifier()

cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise')

print('Accuracy: %.3f (%.3f)' % (np.mean(n_scores), np.std(n_scores)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值