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)

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)

如果扩展成为多分类的问题,那么将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;

时间: 2024-10-27 07:29:52

scikit_learn 官方文档翻译(集成学习)的相关文章

MongoDB学习笔记~关于官方驱动集成IQueryable之后的一些事

回到目录 关于官方驱动集成IQueryable之后的一些事,有好事也有坏事,好事就是它会将你的linq语句非常友好的翻译成MongoDB语句,而坏事就是有一些linq语句不会被翻译,不会被翻译的代价就是将整个结果集装到内存,然后进行linq to object的查询,效率自然是非常低的,呵呵. 好事 最新官方驱动中,添加了对IQueryable扩展方法的支持 public static IMongoQueryable<TDocument> AsQueryable<TDocument>

JavaFX 2.0+ 官方文档翻译和技术资料整理计划

一年以来,公司在采用最新的Java桌面技术-JavaFX 2.0(在Java 8中版本已经升级为JavaFX8)来开发行业软件,团队内部只有少部分人对这门新技术有一定程度的掌握.本着在团队内部普及JavaFX基础知识,以及为JavaFX在国内的传播发展贡献部分力量的目标,接下来计划将JavaFX 8的官方文档进行翻译和注解,并配上使用过程中的一些心得. JavaFX8 官方英文文档:http://docs.oracle.com/javase/8/javase-clienttechnologies

Aircrack-ng官方文档翻译[中英对照]---Airmon-ng

Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wireless interfaces. It may also be used to go back from monitor mode to managed mode. Entering the airmon-ng command without parameters will show the int

Aircrack-ng官方文档翻译[中英对照]---Airdecap-ng

Aircrack-ng官方文档翻译---Airdecap-ng Description[简介] With airdecap-ng you can decrypt WEP/WPA/WPA2 capture files. As well, it can also be used to strip the wireless headers from an unencrypted wireless capture. It outputs a new file ending with ”-dec.cap”

Swift语言官方文档翻译(2)

A Swift Tour 按照惯例,我们一般学习一个新语言的时候,我们都习惯性的在屏幕上打印"Hello, World",在Swift中,你可以用如下一个单独语句实现 println("Hello,World") 如果你用C或者OC写过程序,那么上面的语句对于你来说是很熟悉的.在Swift中,这一行代码就是一个完整的程序,你不需要为了类似I/O或者String handling去导入一些jar包.全局变量将作为一个程序的入口点,所以你不需要main函数,你也不需要在

Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng

Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay-ng 是一个用来(向网络中)注入帧(即数据包)的工具. The primary function is to generate traffic for the later use in Aircrack-ng for cracking the WEP and WPA-PSK keys. There

NServiceBus官方文档翻译(二)NServiceBus 入门

在这篇教程中我们将学习如何创建一个非常简单的由客户端向服务端发送消息的订单系统.该系统包括三个项目:Client.Server 和 Messages,我们将按照以下步骤来完成这个任务. 创建 Client 项目 创建 Messages 项目 创建 Server 项目 发送订单 运行解决方案 完整的解决方案代码可以在这里下载. 创建 Client 项目 让我们开始创建 Client 项目,它将负责发送订单请求到一个 NServiceBus 终结点(Endpoint). 以管理员权限运行 Visua

GoogleServices之GooglePlayService官方文档翻译

GoogleServices之GooglePlayService官方文档翻译 在更广泛的设备上给你的应用程序更多的特性去吸引用户,使用GooglePlayService,你的应用程序能利用最新的优势,谷歌驱动特性比如地图,Googl+和更多,使用自动分布式更新平台通过GooglePlay商店更新APK.这使他更快的为你的用户接收更新和更容易的为你集成谷歌提供的最新的. GoogleTechnology(谷歌科技) Googleplay services 为你提供轻松访问谷歌服务,与安卓系统紧密集

Ensemble_learning 集成学习算法 stacking 算法

原文:https://herbertmj.wikispaces.com/stacking%E7%AE%97%E6%B3%95 stacked 产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学习器的概念,但是使用的相对于bagging和boosting较少,它不像bagging和boosting,而是组合不同的模型,具体的过程如下:1.划分训练数据集为两个不相交的集合.2. 在第一个集合上训练多个学习器.3. 在第二个集合上测试这几个学习器4. 把第三步得到的预测结果作为输入,把正确的回