scikit-learn--Ensemble methods(集成方法)

集成方法的目的是通过结合很多基学习器来增强泛化和鲁棒性。
两种集成方法:

  • averaging methods,主要原则是独立地建立很多基学习器,然后取预测结果的平均值;联合估计通常比任一单一估计有表现的更好,因为方差减小了。例如:Bagging methods, Forests of randomized trees, ...
  • boosting methods,建立一系列基学习器,每一个都试图去减小联合估计的偏倚;通过结合许多弱模型而产生一个强集合。例如: AdaBoost, Gradient Tree Boosting, ...

Bagging meta-estimator

在集成算法中,bagging方法形成了这样一类算法:在原始训练集中生成随机子集,建立很多黑盒学习器,然后汇总每个学习器的预测结果形成最终的结果。
Bagging 方法有很多种,主要区别在于从训练集中提取随机子集的方法:
1.样本的随机子集,被称作Pasting;
2.有放回的抽样,称作Bagging;
3.特征的随机子集,称作Random Subspaces;
4.样本和特征的子集,称作Random Patches。

随机森林

基于随机决策树有两种集成方法:随机森林和Extra树,这两种算法都是 perturb-and-combine 技术,意味着在分类器构建过程中引进了随机性产生了一套不同的分类器集合。
在随机森林中,每棵树都是建立在训练集有放回抽样基础上的,并且,在节点分裂的过程中,最优分裂也不再基于全部特征,而是特征的随机子集。随机性也导致随机森林的偏倚有所上升,但是通过平均化,方差是下降的,更多地补偿了偏倚的增加,得到更好的模型。
相比原著,sklearn使用了各个分类器预测概率的平均值,代替投票法。

Extremely Randomized Trees

在Extremely Randomized Trees中,随机性在计算分裂的过程中更前进了一步。如在随机森林中一样,使用候选特征的随机子集,但不是寻找最优阈值,而是从每个候选特征中随机抽取阈值,这些阈值中最好的被当作分裂规则。

参数

两个主要参数:n_estimators 和max_features,前者是森林中树的数量,树越多越好,但计算量也越大。另外也要注意到,超出树的数量临界值,结果并没有显著变好。后者是节点分裂的时候需要考虑的随机特征的数量,特征数越少,方差越小,但偏倚越大。
根据经验,在回归问题中,max_features=n_features,在分类中,max_features=sqrt(n_features) 。当设置max_depth=None 和min_samples_split=1 时,通常会得到好的结果,虽然并不是最优结果,而且将耗费很大的内存。
最优的参数来源于交叉验证。
在随机森林中,默认使用有放回抽样(bootstrap=True),但是extra-trees 默认使用全部数据 (bootstrap=False)。
在使用有放回抽样的时候,模型的准确率可以通过未被抽样的样本来计算,可以通过设置 oob_score=True 来实现,默认 False。

*Feature importance evaluation

*Totally Random Trees Embedding

Adaboost

AdaBoost的核心原则是用一系列弱学习器去拟合数据,然后对它们的预测结果加权投票(求和)形成最终结果。在每次boosting迭代过程中,通过给训练样本赋予权重来改变数据。样本初始化权重都设为1/N,因此第一步是在原始数据上训练弱学习器。在每次迭代中,样本权重独立变化,使用重新赋权的数据训练新的算法。在给定的步骤中,用前一步的训练模型预测错误的样本将得到更高的权重,而预测正确的样本权重将下降。在迭代过程中,那些很难预测的样本将不断提高影响。因此,每个后续的弱学习器都将被专注于那些在前一步预测错误的样本。

Gradient Tree Boosting

Gradient Tree Boosting或者 Gradient Boosted Regression Trees (GBRT)是一种利用任意可微损失函数(arbitrary differentiable loss functions)的泛化提升方法。GBRT是一种现成准确有效的方法,用来解决回归和分类问题。Gradient Tree Boosting被用在包括网络搜索排名与生态等的很多领域。
GBRT的优点:
1.自然处理混合类型的数据(各种特征);
2.预测能力强;
3.异常值的鲁棒性(通过损失函数)。
GBRT的不足:
不能并行计算。

分类

GradientBoostingClassifier支持两类及多类分类。
当分类数超过两类时,每次迭代需要 n_classes 回归树,导致最终的树的数量为n_classes * n_estimators。如果数据集有很多类,建议使用 RandomForestClassifier 代替 GradientBoostingClassifier。

回归

GradientBoostingClassifier支持各种回归中使用的损失函数,默认使用最小平方(least squares)。

控制树的规模

回归树基学习器的数量反映了通过Gradient Tree Boosting能获得的变量之间交互水平。一般来说,树的深度 h 能捕获秩 h 的交互。有两种方法能控制回归树的数量:
设置max_depth=h,则最终形成深为h 的二叉树,这样的树最多有2h 个叶子节点以及 2h-1 个分裂节点。
设置max_leaf_nodes 指定叶子节点的数量, 在这种情况下,树将使用最佳优先搜索(best-first search )那些能显著改善不纯度的节点将优先生长。
我们发现,设置 max_leaf_nodes=k 相比 max_depth=k-1 的结果,训练速度显著提高,而训练误差只有轻微上升。在 R 的gbm包中,
max_leaf_nodes == interaction.depth + 1。

损失函数

可以通过参数 loss 来设置损失函数:
*回归:
1.Least squares ('ls'),初始模型给出目标值的均值;
2.Least absolute deviation ('lad'):初始模型给出目标值的中位数;
3.Huber ('huber'):结合 ls 和 lad,用alpha 去控制对异常值的敏感度;
4.Quantile ('quantile'):分位数回归使用的损失函数,用0 < alpha < 1 指定分位数,这个损失函数被用来生成预测区间。
*分类:
1.Binomial deviance ('deviance');
2.Multinomial deviance ('deviance');
3.Exponential loss ('exponential')。

正则化

参数 learning_rate 与参数 n_estimators 有很强的关系。学习率越小,同样的训练误差情况下需要的弱学习器越多。经验表明,学习率越小,越有利于减小测试误差。建议设置小的学习率(<= 0.1)和选择提前终止n_estimators。

解释性

特征重要性
Partial dependence

投票分类器

*Hard Voting
每个分类器给出类标签,最多的类标签即为结果。

*Soft Voting
每个分类器给出预测的类的概率,乘以每个分类器的权重,然后取均值。加权平均概率最高的类标签即为结果。


来源:http://scikit-learn.org/stable/modules/ensemble.html#

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容