Scikit-Learn 集成方法(Ensemble method) 学习

本文介绍了Scikit-Learn中的集成方法,包括Bagging、随机森林、AdaBoost和Gradient Tree Boosting。随机森林讲解了参数设置和特征重要性评估;AdaBoost和Gradient Tree Boosting强调了其适用场景和特性,如对异常点的鲁棒性及正则化;最后,讨论了VotingClassifier的硬投票和软投票策略。
摘要由CSDN通过智能技术生成
集成算法的目标是:组合几个基学习器的预测,以此来提高单个模型的泛化性和健壮性
集成方法常分为两类:
  1. averging methods:平均法的原则是: 独立的构建几个学习器,然后平均他们的预测。通常,组合的学习器要比任何一个单个的学习器要好,因为它降低了方差。   其中的代表:bagging 方法,随即森林
  2. boosting methods:学习器依次构建,试图降低组合的学习器的偏差。                                                                                                                                           其中的代表:AdaBoost,Gradient Tree Boosting

1、 Bagging

在集成算法中,bagging方法在原始数据集的基础之上利用黑盒的方式构建几个学习器,然后将它们独立的预测进行聚集,作为最后的预测。
通过在基学习器构建的过程中引入随机方法,并最后通过集成。利用这种方式来降低单个学习器的方差。
若是希望通过一种方式来降低overfitting:
  1. baggnig方法,在模型strong、complex的时候效果好
  2. boosting方法,在模型weak的时候效果好
Bagging方法有很多形式,不同的是随机选择训练数据的方式
  1. 随机选择数据子集--->Pasting
  2. 可以重复抽样--->Bagging
  3. 样本在随机选择的属性中抽样-- Random Subspaces
  4. 构建基学习器的时候样本和属性都是子集时---> Random Patches

2、随机森林

在Scikit-Learn的ensemble模块中有两个平均的方法基于决策树:随机森林(RandomForest)和极限树(Extra-Trees)。
一个小例子:
from sklearn.ensemble import RandomForestClassifier    
X = [[0, 0], [1, 1]]    
Y = [0, 1]    
clf = RandomForestClassifier(n_estimators=10)    
clf = clf.fit(X, Y) 



2.1 随机森林

在随机森林(包括随机森林分类和随机森林回归),每一棵树都是通过又放回的抽样的方式获得的。并且每棵树的节点在分裂时选择特征子集(随机特征子集)中最好的特征进行分裂节点。
依靠这种方式随机森林的偏差可能会增加,但是方差会降低。

2.2 Extremely Randomized Trees 极限树

在极限随机树种(包括极限树分类和极限树回归),在分裂节点时,随机的更彻底一些。跟随机森林算法一样,极限树算法会随ijide选择特征子集,不同的是:会在每个特征中随机的选择阈值来划分特征,而不是寻找最佳的划分阈值。然后在这里边选择最好的作为划分特征和划分特征的阈值。
由于随机的更加彻底,方差会进一步降低,凡是偏差会增大。
一个小例子:
from sklearn.model_selection import cross_val_score
from sklearn.datasets import make_blobs
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.tree import DecisionTreeClassifier

X, y = make_blobs(n_samples=10000, n_features=10, centers=100,random_state=0)

clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,random_state=0)
scores = cross_val_score(clf, X, y)
scores.mean()                           

clf = RandomForestClassifier(n_estimators=10, max_depth=None,min_samples_split=2, random_state=0)
scores = cross_val_score(clf,X,y)
scores.mean()                             

clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,min_samples_split=2, random_state=0)
scores = cross_val_score(clf,X,y)
scores.mean() > 0.999


2.3 参数

最主要的参数有两个n_estimators、 max_features
n_estimators: 代表森林中树的数量。越多越好,但是越多代表着训练时间越长。
max_features :
  • 6
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值