一、Bagging和Pasting

上一节说到了集成学习的Voting,基于投票的集成学习就集成了几个分类器的结果,相对来说不是很多,我们需要更多的模型,也就是投票的人更多,且这些模型之间不一样,使得我们的模型更为健壮。

我们可以让每个子模型只看数据的一部分,算法可以使用同一个;使用一部分数据会使得单个模型准确率降低,但是这些模型结合起来效果就会很好,假定我们每个模型的准确率是60%(实际结果可能是有高有低),有500个模型,这样结合起来这个模型的准确率就是:99.999%

对于数据集,每次放回取样叫做Bagging,不放回取样叫做Pasting,Bagging使用的多(统计学中放回取样叫做bootstrap,这也是sklearn中控制放回不放回的参数)

实例:

#仍然使用Voting的数据
#n_estimators生成多少个分类器
#max_samples:每个分类器有多少个数据
#bootstrap:样本是否放回,True放回
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifierbagging_clf = BaggingClassifier(DecisionTreeClassifier(),n_estimators=500, max_samples=100,bootstrap=True)bagging_clf.fit(X_train, y_train)
bagging_clf.score(X_test, y_test)

二、OOB Out-of-Bag

放回取样会导致一些样本取不到,平均大概有37%的样本取不到,这部分可以作为模型的测试数据

OOB代码实例,用的还是之前的数据集

import numpy as np
import matplotlib.pyplot as pltfrom sklearn import datasetsX, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=42)plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.show()
from sklearn.model_selection import train_test_splitX_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifierbagging_clf2 = BaggingClassifier(DecisionTreeClassifier(),n_estimators=500, max_samples=100,bootstrap=True, oob_score=True)
bagging_clf2.fit(X_train, y_train)bagging_clf2.oob_score_

这样输出结果为:0.928

三、并行化处理参数 n_jobs = -1

由于决策树每个树独立训练,可以进行并行化处理,n_jobs = -1代表使用全部的计算机核

四、更多思考

这里我们只对数据集随机取样,我们还可以对特征随机取样

只对特征取样代码参考 bootstrap_features:

# max_samples=500这里对所有样本取样
# max_features 每次最大特征取多少
# bootstrap_features=True 特征取样方式是有放回的
# 这里使用的是全部样本数据random_subspaces_clf = BaggingClassifier(DecisionTreeClassifier(),n_estimators=500, max_samples=500,n_jobs=-1,bootstrap=True, oob_score=True,max_features=1,bootstrap_features=True)
random_subspaces_clf.fit(X, y)
random_subspaces_clf.oob_score_

五、我们也可以对特征和数据集都随机取样,这就是随机森林

# max_features 每次最大特征取多少
# bootstrap_features=True 特征取样方式是有放回的
random_subspaces_clf = BaggingClassifier(DecisionTreeClassifier(),n_estimators=500, max_samples=100,n_jobs=-1,bootstrap=True, oob_score=True,max_features=1,bootstrap_features=True)
random_subspaces_clf.fit(X, y)
random_subspaces_clf.oob_score_

集成学习-Bagging和Pasting相关推荐

  1. R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比

    R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...

  2. 机器学习 - [集成学习]Bagging算法的编程实现

    机器学习 - [集成学习] Bagging算法的编程实现 李俊才 的 CSDN 博客:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 ...

  3. 集成学习——BAGGING和随机森林

    集成学习--BAGGING和随机森林 集成学习--BAGGING和随机森林 1.什么是集成学习 2.怎样进行集成学习 3.Bagging方法 4.Bagging方法训练.预测过程 5.Bagging方 ...

  4. 集成学习——Bagging、Boosting、Stacking

    目录 偏差与方差 投票法 集成学习 Bagging Bootstraps Bagging Boosting 基本概念 Adaboost 前向分步算法 梯度提升树(GBDT) XGBoost Light ...

  5. 集成学习-Bagging和Boosting算法

    文章目录 集成学习 Bagging 随机森林 Bosting Adaboost GBDT XGBoost 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网 ...

  6. 树模型系列之集成学习(Bagging、Boosting、Stacking)

    文章目录 树模型系列之集成学习(Bagging.Boosting.Stacking) bagging Boosting Stacking 偏差与方差 集成学习的偏差与方差 Bagging 的偏差与方差 ...

  7. 集成学习Bagging和Boosting算法总结

    一.集成学习综述 1.集成方法或元算法是对其他算法进行组合的一种方式,下面的博客中主要关注的是AdaBoost元算法.将不同的分类器组合起来,而这种组合结果被称为集成方法/元算法.使用集成算法时会有很 ...

  8. 集成学习(Bagging和AdaBoost和随机森林(random forest))

    前言 集成学习的特点就是一个最终模型由很多分类器集成起来,最终通过投票或者加权的方式来获得最终结果.有两种经典的方法:bagging和adaboost. bagging bagging做法 其中: y ...

  9. 集成学习——bagging原理及分析

    bagging原理   与投票法不同的是,Bagging不仅仅集成模型最后的预测结果,同时采用一定策略来影响基模型训练,保证基模型可以服从一定的假设.在上一章中我们提到,希望各个模型之间具有较大的差异 ...

最新文章

  1. 性能测试场景设计之用户模式设置
  2. 09-JS中table模糊查询
  3. 假如我是面试官,我会这样虐你
  4. matlab Normally distributed random numbers in two columns
  5. C语言婚礼程序,最新婚礼流程及主持词
  6. php图片是啥,php图片处理类(附实例)
  7. range 和 xrange
  8. docker 配置selenium调用Firefox无界面浏览器
  9. c调用python接口_通过Python自带C/C++接口实现python与c/c++相互调用
  10. java day05【数组】
  11. Hadoop安装教程 Linux版
  12. stata15中文乱码_stata 14、15 中文乱码 转码后 显示奇怪中文
  13. 【单片机基础篇】51单片机流水灯
  14. 146页智慧政务大数据可视化平台方案
  15. 计算机组装物料清单,物料清单
  16. java map 内存分配_mapreduce 内存分配
  17. getchar()用法 与 getch()函数使用方法
  18. Can ChatGPT Understand Too?
  19. 浅析RGB 及RGB转换为ARGB
  20. 关于mysql数据库回表的粗浅理解

热门文章

  1. ios 自架验证服务器,iOS 13-Sign In with Apple(苹果登录)APP+后端验证
  2. mac 上最好用的SSH终端FinalShell
  3. 【AI绘画】精选XP列表展示,TAG分享
  4. 自动化测试面试题及答案,看完后吊打面试官!
  5. ear的英语怎么念_高中英语快速记忆法有哪些?
  6. 天刀 服务器状态,天刀实用技巧_天刀各种游戏小技巧_玩游戏网
  7. 充电系统(交流慢充,直流快充)
  8. 金融行业文档加密方案
  9. 老程序员教你如何提高开发效率、成为大神1——人文思维进化与信众
  10. FM收音机 RDS的强大功能