scikit_learn 官方文档翻译(集成学习)

1.11. Ensemble methods(集成学习)

目标:

相对于当个学习器,集成学习通过使用多个基学习器的预测结果来来提高学习预测的泛化性能以及鲁棒性;

集成学习的两个思路:

1)、通过使用并行的学习,得到多个学习模型然后取其平均结果目的在于减少方差,代表算法有随机森林。通常来说多个学习器的集成要比单个学习器的效果要好多。

2)、采用串行的方式生成多个学习器目的在于减少偏差(bias),使用多个弱分类器组合成为一个强分类器,代表算法adaBoosting以及boosting tree、GDBT。

1.11.1. Bagging meta-estimator

集成学习中,bagging方法使用训练集的一个随机子集来进行训练多个黑盒分类器,然后将不同的黑盒分类器集成到一起得到一个最终的预测模型。在生成训练模型的过程中引入随机化并在最后集成结果的方式可以减少整个训练模型的方差,同时不用因为底层的学习器的不同而发生改变。随机森林通过引入随机性来避免过拟合因此在生成基学习器时可以考虑完成生成即基学习器越强越好,对于boosting的方法则是相反,要求基学习器要弱一点才好。(boosting减少偏差,因为越强越吻合3反而容易出现过拟合)。

随机森林根据训练数据不同的生成方式包括一下:

1)、又放回的抽取,称作bagging

2)、针对特征进行随机化,成为随机子空间random subspace

3)、针对特征和样本都做随机化,称为随机patchs(补丁、块)

4)、随机抽取样本,称为 Pasting

scikit-learn框架中,sklearn.ensemble中有BaggingClassifier和BaggingRegres​sor两个对象可以实现Bagging方法。方法中可以通过参数指定模型使用基学习器的类型,以及抽取子集的策略。通用的参数为一下几个参数:

max_sample:指定随机子集的规模;小于1表示比例,大于1则为样本数

max_features:指定训练数据的特征规模;小于1表示比例,大于1则为样本数

boostrap:指定是否又放回的抽样;true/false;

boostrap_features:指定特征是否又放回的抽样;true/false;

oob_score = true:表示使用带外数据衡量泛化能力,数据越大越好;

一下实例中基学习器采用K近邻算法,样本规模为原样本的50%,特征为50%

from sklearn.ensemble import BaggingClassifier
from sklearn.neighbors import KNeighborsClassifier
bagging = BaggingClassifier(KNeighborsClassifier(),max_samples=0.5, max_features=0.5)
View Code

1.11.2. Forests of randomized trees

基于随机化的决策树算法,sklearn.ensemble包含了两种平均结果的算法:随机森林和Extra-Tree。在构建分类器时通过引入随机性生成了一系列不相同的树,然后将不同的分类树的结果进行平均作为最终的输出结果。

树算法的训练和其他的算法一样,都是使用两个数组作为参数:X承载训练特征, Y承载训练数据的标签值。如下例所示:

from sklearn.ensemble import RandomForestClassifier
X = [[0, 0], [1, 1]]
Y = [0, 1]
clf = RandomForestClassifier(n_estimators=10)
clf = clf.fit(X, Y)
View Code

如果扩展成为多分类的问题,那么将Y扩展成为[n_samples, outputs]

1.11.2.1. Random Forests

随机森林的使用主要包括这两个类:RandomForestClassifier and RandomForestRegressor;一个负责分类一个负责回归。在随机森林生成过程中数据采用又放回的抽取,同时在选择划分时选中的划分只是在相应的特征子集上的最优而不是全部特征的最优,这样就会使得最终的bias会有所增大,但是通过多棵树的平均使得方差varience减少很多,因此这种方法还是很有效的。在最终预测结果时,现有版本采取的方式是平均所有类别的输出的概率,然后选择最大的输出(只在最后产生一个结果),抛弃了原有的对类别的投票(在每棵树上都有一个分类结果);

1.11.2.2. Extremely Randomized Trees(省略)应该是计算划分点的计算方式发生变化。

1.11.2.3. Parameters

n_estimators:生成的基学习器的数量,越多越好,但是越费时间;

max_features:抽样后样本的最大值,在回归问题中一般直接等于原有的特征数,在分类问题中一般采用sqrt(原有特征);

max_depth=None:生成基学习器树的最大深度;

min_samples_split=1:选择划分最小的样本数,越小生成的树就越完全,通常和max_depth搭配使用产生一个发育完全的树;

bootstrap=False:同上面说的;

oob_score = true:同上(当然在使用又放回抽样时使用);

n_jobs = k:设置并行化计算参数,任务被分成k分,使用机器的k个核心计算,当k=1时使用机器的全部核心,可以提升计算速度,但是不是线性关系。

1.11.2.5. Feature importance evaluation

在决策树的生成过程中特征使用的先后顺序可以作为一个特征相对重要性判断的一个指标,越先使用的特征对结果的贡献就越大因次该特征也就相对来说比较重要,因此可以使用该特征对最后结果的贡献度来表示该特征的相对重要性。

在实际的使用中,使用feature_importances_属性来存储每个特征的重要性指标,维度就是特征的数量,其总和为1;

转载于:https://www.cnblogs.com/daguankele/p/6706651.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css 实现一个尖角_一个讲述了 CSS 相关的技巧、动画实现 的开源项目(60篇相关文章)...

iCSS不止于 CSS文章围绕 CSS/web动画 展开,谈一些有趣的话题,内容天马行空,想到什么说什么,不仅是为了拓宽解决问题的思路,更涉及一些容易忽视或是十分有趣的 CSS 细节。Article List下面这个左边竖条图形,…

httos双向认证配置_idou老师教你学Istio 15:Istio实现双向TLS的迁移

本文由华为云容器Istio团队撰稿,未经允许谢绝转载。众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道&…

混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...

混凝土九大类性能检测试块留置尺寸,具体留置前请咨询项目试验室,因为奇葩试验室很多!一、砼抗压强度试块尺寸1、砼标准试件尺寸为 150*150*150(公称最大粒径≤31.5mm)。2、非标准试件尺寸通常用100*100*100&#xff08…

怎么做手机的上下滑动_diy滴胶手机壳到底怎么做呢?

diy滴胶手机壳到底怎么做呢?步骤1⃣:购买到手机壳(新手建议用有凹槽的手机壳,以免滴胶溢出)步骤2⃣:​拿到手机壳之后,建议用酒精擦拭一下, 以免有灰尘影响滴胶的效果步骤3⃣:​(此步骤不为必须步骤)如果不喜欢手机背面的颜色&…

扫描线三巨头 hdu1928hdu 1255 hdu 1542 [POJ 1151]

学习链接:http://blog.csdn.net/lwt36/article/details/48908031 学习扫描线主要学习的是一种扫描的思想,后期可以求解很多问题。 扫描线求矩形周长并 hdu 1928 Picture Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O…

希尔排序 最坏时间_排序算法(2)

本文介绍插入排序和希尔排序,插入排序是较为常见的排序算法,希尔排序也是基础的排序算法,废话不多说,具体来看一下两种算法。山插入排序插入排序的基本思想是拿到下一个插入元素,在已经有序的待排数组部分找到自己的位…

多对一(一对多)的双向关联

一个组(Group)有多个用户(User),进行多对一(一对多)的双向配置,在数据库中生成的表结构如下图: Annotation配置: Group: 1 package com.bjsxt.hibernate;2 3 …

隧道不能访问web vxaln_SpringBoot实现本地存储文件上传及提供HTTP访问服务

笔者计划为大家介绍分布式文件系统,用于存储应用的图片、word、excel、pdf等文件。在开始介绍分布式文件系统之前,为大家介绍一下使用本机存储来存放文件资源。二者的核心实现过程是一样的:上传文件,保存文件(本节是本地磁盘)返回…

修改form_Vue通过阿里云oss的url连接直接下载文件并修改文件名

我测试过很多遍,想要通过a标签的形式来直接点击url下载文件并重命名但是都失败了,最终只能下载却不能重命名 所以 换了java后台来修改名字.以下代码我做的网页是点击文件直接下载直接下载下来了,一开始的文件名是上传到oss时以id命名的名字,现在下载的时候想改名,遇到了问题,所…

STM32学习笔记(五)——通用定时器计数延时

STM32定时器概述 STM32F40x系列总共最多有14个定时器,定时器分为三类:基本定时器、通用定时器和高级定时器。它们的都是通过计数来达到定时的目的,和51的定时器差不多,基本原理都是一样的,就是功能多了一些&#xff0c…

第十九讲:职责链模式

public class CarBodyHandler extends CarHandler{Overridepublic void HandlerCar() {// TODO Auto-generated method stubSystem.out.println("组装车身");}} public abstract class CarHandler {public abstract void HandlerCar(); } public class CarHeadHandle…

四阶行列式直接展开_四阶行列式的完全展开式共有多少项

展开全部 共24项。 1.将该行列式前三列重复书写在该行列式的右边,可在前四列中作出两条对角线,然e5a48de588b662616964757a686964616f31333365663463后在此七列中作出相应的平行线,可得(图表一) 2.作乘积关系,可得如下八项: a11a22a33a44,a12a23a34a41,a13a24a31a42,a14a2…

c++ 返回智能指针_C++核心指南(17) I.11 禁止使用指针(T*)或引用(T)来转移所有权...

I.11: 永远不要使用原始指针(T*)或引用(T&)来转移所有权原因如果对调用者或被调用者是否拥有对象有任何疑问,就会发生泄漏或过早析构。示例考虑:X* compute(args) // 不要这样做 { X* res new X{}; // ... return res; }谁来删除返回的X?当compute返…

mysql8.0.13 32位下载_MySQL8.0下载-MySQL数据库8.0下载 v8.0.11官方版(32位/64位)--pc6下载站...

mysql是一款数据库管理系统,mysql一般网站开发者或者数据库开发者会用到,mysql拥有体积小巧、读取和存储速度快的特点,新版本完全脱了MylSAM存储引擎,改善了扫描性能,同时还重构了sql分析器,赶快下载使用吧…

手游产品经理初探(三)产品中的玩家行为

国内做手游的团队非常多都是一大抄,但非常多时候我们都没有抄到核心的东西,所谓的形象神不象就是这样。那么我们来看一个案例:这个界面是big fish做的玩家送礼物的画面。我们知道在社交类的游戏里面这是一个非经常见的功能,但非常…

mysql ndb是什么_MySQL NDB Cluster介绍

最近翻译了好几篇关于NDB的文章,相信有很多人会有疑问,NDB Cluster究竟是个什么东西?它是一款新产品吗?它和InnoDB Cluster有什么不同?它是MySQL吗?它怎么使用?在这篇文章里,我将为大…

orm和mysql_orm与mysql

一. orm执行原生sql语句在模型查询API不够用的情况下,我们还可以使用原始的SQL语句进行查询。Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回模型实例;另一种是完全避开模型层,直…

课程作业2

作业二 题目 编写一个程序,要求根据给定的圆的半径求圆的面积,并将求得的结果打印出来。 要求: 输入输出采用cin和cout。 建立一个工程,将程序写成两个.cpp和一个.h的形式。 要求程序必须要对变量的定义和各个函数模块进行注释。 …

webform中提交按钮同时执行更新和插入操作_软件测试中的功能测试点(三)

26.输入法半角全角检查再输入信息中,输入一个或连串空格,查看系统如何处理,如对于要求输入符点型数据的项中,输入全角的小数点(“。”或“.”,如4.5);输入全角的空格等。 27.密码检查…

PAT甲题题解-1091. Acute Stroke (30)-BFS

题意:给定三维数组,0表示正常,1表示有肿瘤块,肿瘤块的区域>t才算是肿瘤,求所有肿瘤块的体积和 这道题一开始就想到了dfs或者bfs,但当时看数据量挺大的,以为会导致栈溢出,所以并没…