机器学习:集成学习(OOB 和 关于 Bagging 的更多讨论)
一、oob(Out - of - Bag)
- 定义:放回取样导致一部分样本很有可能没有取到,这部分样本平均大约有 37% ,把这部分没有取到的样本称为 oob 数据集;
- 根据这种情况,不对数据集进行 train_test_split,也就是不适用 测试数据集,而使用这部分没有取到的样本做测试 / 验证;
2)oob_score 参数
- Bagging 取样方式的集成学习算法,可以不对数据集进行 train_test_split ,而是使用 oob 数据集作为验证数据集;
- oob_score 是 Bagging 取样方式的集成学习算法 BaggingClassifier() 的一个参数:
- oob_score = True:表示使用 oob 数据集作为验证数据集;
- oob_score 默认为 False,不使用 oob 数据集作为验证数据集;
- 可以直接使用 oob_score_ 变量,查看模型在 oob 数据集上的准确率;
3)并行化处理
Bagging 取样方式,使得计算机极易进行并行化处理;
- 原因:对于每一个子模型都是独立的随机抽取训练数据集,而且每个子模型的训练也都是独立的,所有系统可以对所有的子模型并行处理;
- 在机器学习中,对于所有可以并行处理的算法,都需要对参数 n_jobs 进行确认:
- n_jobs = n:程序就会使用服务器的 n 个核,同时进行处理;
- n_jobs = -1:使用电脑所有的核;
二、子模型产生差异化的方式
1)对样本进行随机取样
2)对特征进行随机取样(Random Subspaces)
- 也就是 n 维的数据集,每次只取 k 维作为样本的特征,形成一个新的数据集;新的数据集的特征空间是原始数据集的特征空间的子空间;(k < n)
3)即针对样本数量,又针对特征进行随机取样(Random Patches)
- 相当于即随机抽取矩阵每行的数据,又随机抽取矩阵每列的数据,如下图:

- 一般在图像识别领域,采用特征取样的方式;
三、scikit-learn 中使用特征取样方式
- 在 scikit-learn 的集成学习算法 BaggingClassifier 中封装了变量,来使用不同的取样方式:
模拟数据集
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets X, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=42)使用 oob
- bootstrap = True:使用 Bagging 取样方式按样本取样;
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier bagging_clf = BaggingClassifier(DecisionTreeClassifier(),
n_estimators=500, max_samples=100,
bootstrap=True, oob_score=True)
bagging_clf.fit(X, y)
bagging_clf.oob_score_
# 准确率:0.916设置并行处理:n_jobs
%%time
bagging_clf2 = BaggingClassifier(DecisionTreeClassifier(),
n_estimators=500, max_samples=100,
bootstrap=True, oob_score=True,
n_jobs=-1)
bagging_clf2.fit(X, y)
# Wall time:2.26 s
Random Patches 方式:即针对样本数量,又针对特征进行取样;
BaggingClassifier() 的参数:
- bootstrap = True:表示采用放回的方式对样本进行取样;
- max_samples=100:表示每次取 100 个样本;
- bootstrap_features=True:表示采用放回取样的方式对特征进行取样;
- max_features=1:每次给样本取 1 个特征;
random_subspaces_clf = BaggingClassifier(DecisionTreeClassifier(),
n_estimators=500, max_samples=100,
bootstrap=True, oob_score=True,
n_jobs=-1, max_features=1, bootstrap_features=True)
random_subspaces_clf.fit(X, y)
random_subspaces_clf.oob_score_
# 准确率:0.862
- 这种使用 决策树算法集成学习得到的子模型,称为随机森林;
机器学习:集成学习(OOB 和 关于 Bagging 的更多讨论)的更多相关文章
- [机器学习]集成学习--bagging、boosting、stacking
集成学习简介 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务. 如何产生"好而不同"的个体学习器,是集成学习研究的核心. 集成学习的思路是通过 ...
- 机器学习——集成学习(Bagging、Boosting、Stacking)
1 前言 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < ...
- 机器学习--集成学习(Ensemble Learning)
一.集成学习法 在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好) ...
- 机器学习:集成学习:随机森林.GBDT
集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测 ...
- python大战机器学习——集成学习
集成学习是通过构建并结合多个学习器来完成学习任务.其工作流程为: 1)先产生一组“个体学习器”.在分类问题中,个体学习器也称为基类分类器 2)再使用某种策略将它们结合起来. 通常使用一种或者多种已有的 ...
- 吴裕雄 python 机器学习——集成学习随机森林RandomForestRegressor回归模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...
- 吴裕雄 python 机器学习——集成学习随机森林RandomForestClassifier分类模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...
- 吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingRegressor回归模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...
- 吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...
随机推荐
- Spring-data-jpa常用方法
- CCNA 课程 三
交换机的MAC地址学习情况: 1.从一个接口收到数据帧,根据数据帧的原mac地址查找交换机的mac地址表,如果没有找到,将会添加数据帧的原mac地址和收到数据帧接口的对应条目,放进交换机的mac地址表 ...
- Kafka+SparkStreaming+Zookeeper(ZK存储Offset,解决checkpoint问题)
创建一个topic ./kafka-topics.sh --create --zookeeper 192.168.1.244:2181,192.168.1.245:2181,192.168.1.246 ...
- 将本地jar包制作成maven依赖
首先,需要配置maven环境,如果没配置,传送门:http://www.cnblogs.com/hyyq/p/6557683.html 然后,需要一个ben地的jar包,这里以阿里云支付宝sdk为例, ...
- BZOJ3241/UOJ125 [Noi2013]书法家
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- alibaba的JSON.toString会把值为null的字段去掉,谨记
alibaba的JSON.toString会把值为null的字段去掉,谨记 Map<String,Object> map = new HashMap<>(); map.put( ...
- dr01_SetColor
1. TGraphicUnit.SetColor 2. 3.
- js职责链模式
职责链模式(Chain of Responsiblity),使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为 ...
- php开发工程师面必问题
随着培训机构的增加,越来越多的php从业者流入市场,从而影响了php就业环境.公司对人才的要求越来越高,而技术者本身也要技术过硬,学习越来越多的东西,因为只有这样,你才能跑在别人前面,才不被市场抛弃, ...
- node.js 上传图片
依赖库 connect,gm,imagemagick,image-size connect:中间件 gm,imagemagick:用来处理图片如缩放.切割.添加文字水印等 image-szie:获取图 ...