task 08 集成学习

Ensemble methods 组合模型的方式大致为四个:/bagging / boosting / voting / stacking ,今天主要简单叙述 bagging算法。

  • Bagging的基本思路:
    采样出T个含K个样本的采样集合,然后基于每个采样集合训练出一个基学习器,再将这些基学习器进行结合,这就是Bagging的基本流程。

Sklearn为我们提供了 BaggingRegressorBaggingClassifier 两种Bagging方法的API

image.png
# evaluate bagging algorithm for classification

# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=5)
# define the model
model = BaggingClassifier()
# evaluate the model
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')
# report performance
print('Accuracy: %.3f (%.3f)' % (mean(n_scores), std(n_scores)))
  • 算法特点:
  • 平行合奏:每个模型独立构建
  • 旨在减少方差,而不是偏差
  • 适用于高方差低偏差模型(复杂模型)
  • 基于树的方法的示例是随机森林,其开发完全生长的树(注意,RF修改生长的过程以减少树之间的相关性)
bag_clf=BaggingClassifier(DecisionTreeClassifier(),
        n_estimators=500,
        max_samples=100,
        bootstrap=True,
        n_jobs=-1,
        oob_score=True)

可以通过设置参数 bootstrap=False来切换为无放回采样。

n_estimators=500,表示有有500个相同的决策器。

max_samples=100,表示在数据集上有放回采样 100 个训练实例。

n_jobs=-1,n_jobs 参数告诉 sklearn 用于训练和预测所需要 CPU 核的数量。(-1 代表着 sklearn 会使用所有空闲核)

oob_score=True,表示包外评估,在bootstrap=True的时候,我们有放回的抽样会导致大概有37%左右的实例是未被采样的,用这些实例来对模型进行检验,将多个训练器在包外实例上的评估结果取平均值,就可以得到集成的评估。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,617评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,281评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,144评论 2 7