写点什么

白话机器学习(8):世界上本没有随机森林,决策树多了,也就变成了森林

用户头像
杜吉普
关注
发布于: 2 小时前
白话机器学习(8):世界上本没有随机森林,决策树多了,也就变成了森林

本文适合人群:对机器学习 Machine Learning 与数据感兴趣的学习者

同步更新公众号:持续学习的杜吉普


温馨提示:阅读本文之前,需对以下内容进行了解并掌握

白话ML:什么是机器学习模型?ML Model

白话ML(3):理解机器学习中的Bias与Variance

白话ML(7):人类最好理解的预测模型-决策树Decision Tree


本文白话什么:

一堆决策树 Decision Tree 组成的随机森林 Random Forest


本文提纲:

  • 什么是随机森林?

  • 随机森林的原理

  • Bagging

  • 为什么森林比单棵树好?

  • Feature Importance

  • 商业应用场景


注:全文无编程,只含有少量计算,文章内容全部尽量通俗易懂化,请尽情享用。


什么是随机森林


如果你已经学习过了白话 ML(7)决策树的内容,那么你看到下图就会很轻松的了解到什么是随机森林,随机森林就是一堆决策树组成的一个模型。最终的预测结果不依照任何一个单独的树,而是依靠所有的树的投票(Voting)来决定的。而随机森林的建立,其实是解决了决策树模型过拟合问题。鉴于决策树容易过拟合的缺点,随机森林采用多个决策树的投票机制来改善决策树。



随机森林的原理


首先我们来聊聊建立随机森林的过程

1.   建立 Bootstrap 数据集,Bootstrap 用人话讲就是从原始数据集中随机选取部分数据(放回选取,可以重复选取相同的 data record),组成新的数据集。如下图所示,我们通过随机选取数据从左侧的原始数据中选取数据,得到右侧的 Bootstrap 数据集。

 


2.     利用右侧的 Bootstrap 数据集建立一个决策树模型,但是注意!!我们不使用全部的四个变量来建模,我们只使用 Bootstrap 中全部变量中的部分变量作为训练集训练模型。至于选多少个 subset of variables 变量之后会详细说明。



在这里,我们随机选择 2 个变量来建立决策树。如下图所示,我们现在已经建立了第一个决策树模型。



3.     接着我们重复第一步,从原数据集中建立新的 Bootstrap 数据集,接着使用新的 Bootstrap 数据集中的 2 个变量作为训练集来建立新的决策树模型。重复多次,我们就会产生若干个各不一样的决策树模型。一般来说,我们会建立几百个决策树模型来组成我们的随机森林。



4.     对 Out-of-bag 数据集进行预测。什么是 Out-of-bag 数据集?就是我们之前步骤 1 中建立 Bootstrap 数据集时那些没有被选入 Bootstrap 被用作训练集训练单独决策树的模型。我们把这些“孤儿”数据凑到一起就成为了 Out-of-bag 数据集。(也就是在袋子之外的数据)

 

接着,我们将 Out-of-bag 数据中的每一个 record 都被所有的决策树模型进行预测。如下图,我们预测的是 Heart Disease,每一个决策树模型预测的结果很可能存在不同,我们要记录下来每个人的结果,最后少数服从多数,确定最终的结果,那么这个结果就是随机森林所预测出的结果。

 


在这行数据中,我们可以看到,最终的投票为 Yes5 票,No1 票,所以最终少数服从多数的结果为 YES。



5.     评价模型,最终我们会通过这种投票的方式获得数据的预测结果。大部分 Out-of-bag 数据会被预测正确,但是还是会有一些数据被预测错误,那些被预测错误的数据所占总数据的比例就叫做 Out-of-bag error,这是评价模型准确率的重要指标。比如总共 Out-of-bag 数据集有 10 条数据,其中两条预测错误,那么 Out-of-bag error 就是 80%。

 

6.     优化模型,在步骤 2 中,我们在 Bootstrap 中选择了 2 个变量作为训练集训练决策树,那么 2 个变量是否是一个合适的数字呢?如何找到最佳的 subset 变量数量呢?答案很简单,我们分别选择 1,2,3 作为变量个数,重复上面的步骤建立随机森林模型,最终计算三个 RF(Random Forest 随机森林)模型的 Out-of-bag error。谁的 error 小,自然就选谁。



最终的模型就是变量 subset 数量最优的 RF 模型。


Bagging


还记得白话 ML(3)Bias 与 Variance 最后提到的 Bagging 吗?Bagging 是解决 Bias 与 Variance 平衡问题的一大方法。上面随机森林模型所建立的过程其实就是 Bagging 的全部含义。通过建立 Bootstrap 数据集的方式来产生随机性,通过随机性的简历的多个模型进行投票来降低 Variance,以此来找到 Bias 与 Variance 的平衡点。这种思路就是 Bagging。下图就很好的揭示了 Bagging 的思维。



为什么森林比单棵树好?


随机森林解决了随机树容易过拟合不稳定的情况。当数据条件改变时(例如用 18 年的银行数据预测是否违约行为,但是当相同模型遇到 19 年,20 年的数据时,预测稳定性就会降低),用训练集训练出的决策树很可能无法的很好的进行预测(Variance 过高),所以我们要避免这种 Variance 过高的情况。

 

随机森林在训练每棵子树时,通过随机采样和随机抽特征的方式生成训练数据,避免生成太相似的树。差异性大的多棵决策树构成的随机森林,相当于增强了模型的多样性,也就导致其有较强的 robust。所以关键点就是“随机”。

 

Feature Importance


与 decision tree 决策树相同,所有的 Tree-based model 都可以利用不同变量在模型中出现决策的次数设立规则产生各自的重要性 Importance。随机森林 RF model 的 Feature Importance 也非常容易理解。

 

以下图为例,假设我们的 RF 随机森林模型只有两棵决策树组成,那么 1,2,3,4 号变量的特征重要程度:两棵树一共分裂了 6 次(算上 root 的分裂),x1 出现了 3 次,x2 出现 4 次,x3 出现 3 次。那么:

x1 特征重要度 = 3/6 = 1/2

x2 的特征重要度= 4/6 = 2/3

x3 的特征重要度= 3/6 = 1/2



应用场景


所有的树模型应用场景与之前的决策树都一样,所有的树模型 Tree-based model 都有一个特点,不是黑盒模型。我们能够知道模型做判断的依据是什么。这些模型都是可以被可视化成我们今天文章中所看到的树形图。所以这给我们分析研究商业分析提供了很好的依据。

 


比如上图中的简单例子,银行通过决策树预测用户是否具有贷款偿还能力。获得预测结果是一个模型的基本能力,但决策树的额外能力是我们可以通过这棵树来研究银行客户画像,拥有房产是判断偿还能力的主要因素,其次是结婚,再其次才是月收入;这与我们普遍认知的工资越高偿还能力越强是背道而驰的。并且除了分析思路,我们可以通过 feature importance 来针对性的改变商业方案,以此来达到我们想要的商业目的。



本文参考信息来源:

SateQuest

CSDN:https://blog.csdn.net/zwqjoy/article/details/97259891

CSDN:https://blog.csdn.net/ddydavie/article/details/82687522

https://subscription.packtpub.com/

---------------------


白话 ML 就到这里,下期预告:用户精细化管理背后的秘密:K-means 聚类模型


PS:有任何疑问欢迎留言,本文完全个人浅薄理解,如有不足欢迎评论区指正。


我是杜吉普,致力于 数据+数据技术+商业场景=商业价值

欢迎关注公众号持续学习的杜吉普,让我们共同持续成长。

发布于: 2 小时前阅读数: 3
用户头像

杜吉普

关注

数据智能场景落地与持续价值探索 2021.04.06 加入

知名技术咨询公司Data&AI业务线分析师、Kaggle Top5%、exIBM

评论

发布
暂无评论
白话机器学习(8):世界上本没有随机森林,决策树多了,也就变成了森林