【理论篇】Bagging 集成与随机森林

集成算法:Bagging 模型

集成算法 Ensemble Learning 的思想通俗解释就是训练一个模型不可靠,那可以训练出一批独立的模型,多个模型一起说了算。通过这样的方式让机器学习的效果更好,这也是为什么我们在竞赛中看到集成算法被普遍使用的原因。

集成算法的集成思想多种多样,今天小鱼和大家学习其中的一种集成思想 - Bagging 模型。Bagging 全称为 Bootstrap ggregation,简单来说就是并行训练多个模型取平均:

Bagging 最典型的代表就是随机森林,所谓森林,就是很多棵决策树组成的决策树森林。随机森林的重点在随机:

  • 数据随机采样
  • 特征选择随机

比如,我们可以指定构建没棵决策树时,有放回的随机选择其中的 60% 的样本,这样构建出来的决策树就是随机的,树与树之间相互独立,各不相同。同理,我们也可以指定有放回地选择 80% 的特征来构建决策树。

注:数据随机采样与特征随机采样相关的参数为 bootstrap、max_samples、max_features、random_stateAPI 文档 https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor

Bagging 模型代表 - 随机森林

下面是随机森林分类的示意图:

同一个样本,经过不同的决策树分类之后,得到 n 个预测结果,而最终的结果取决于众数。例如:80%的决策数判断属于 A 类别,20%的决策数判断属于 B 类别,则最终属于 A 类别。

注:解决回归问题时,则可以取所有预测结果的平均值。

由于在构造决策树时,样本的选择以及特征的选取均具有随机性,因此,没棵树基本上都会不一样,最终结果也会不一样。

这样,我们在训练随机森林的模型时,就可以在服务器并行地去训练决策树了,从而缩短训练的时间。

此外,进行随机最大的好处还在于保证模型的泛化能力:

上述第一张示意图为单棵决策树的分类效果:单个树模型切了几刀就完成了数据的划分,其中树的深度越大,切分的刀数就越多。

第二张示意图为随机森林的分类效果:把单个树的切分组合到一起,整个切分变得更碎了,泛化能力也就越强。对于随机森林,如果树都一样,那就没意义了。

说到泛化能力,KNN 模型就不太适合 Bagging

这是因为 KNN 很难去随机,从而让泛化能力变强!

最后,我们再来看一下树模型的个数,是不是越多越好呢?

理论上讲,树越多效果越好,但实际上基本超过一定数量之后,最终结果将会在一定范围内上下浮动。一般会使用100~200棵树,可以使用交叉验证确定树的个数。

随机森林优势总结

1、随机森林可以处理很高维度的数据集(即特征非常多),并不需要我们自己去做特征选择。

这一点很好理解,因为在随机构造决策树的时候,我们可以指定 max_features 参数来随机选择指定数量的特征,并且最终模型还会为我们返回特征以及特征的重要性。

关于特征的重要性,这里做个简单的解释:

比如使用特征 A、B、C、D 训练好了模型 M1,预测得分为 S1;接下来将特征 A 进行人为破坏,将 A 列全部使用随机的垃圾值赋值,这时候再进行模型的训练,得到 M2,M2的预测得分为 S2。

如果最后我们发现,S1 和 S2 两个得分非常相近,甚至接近相等,那就说明特征 A 的存在感很弱,自然就是不重要的特征啦~

2、在训练完模型后,随机森林可以给出我们哪些特征比较重要

在连载的上一篇文章,我们得到了加利福尼亚房屋价值预测的特征重要性排名:

>> s = pd.Series(rfr.feature_importances_, index=housing.feature_names).sort_values(ascending=False)
>> s
MedInc        0.539850
AveOccup      0.135402
Latitude      0.083998
Longitude     0.082741
HouseAge      0.054384
AveRooms      0.045247
Population    0.030297
AveBedrms     0.028082
dtype: float64

这样可能不够直观,可以进行一下可视化展示:

import seaborn as sns
sns.barplot(x=s.values, y=s.index)

绘制结果:

我们发现,在加利福尼亚房屋价值预测任务中,收入是非常重要的特征,其次是家庭成员的人数,接下来是经纬度,共同觉得房屋的位置。

这一点也是随机森林非常友好的地方,可以让我们对特征的重要性一目了然。对于神经网络这类的算法来讲,我们只能由输入得出一个输出,中间过程则是一个黑盒。

3、容易做成并行方法,速度比较快

森林中的决策树具有随机性(特征随机、样本随机),互不影响,因此可以并行训练,提高效率。

4、可以进行可视化展示,便于分析

借助 Graphviz 工具,我们可以将决策树绘制出来,方便对决策树的判断过程分析。

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

推荐阅读更多精彩内容