写点什么

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

用户头像
杜吉普
关注
发布于: 2 小时前
白话机器学习(7):人类最好理解的预测模型-决策树Decision Tree

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

文章同步公众号:持续学习的杜吉普


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

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

白话ML(2):产品经理都在用的线性回归模型


本文白话什么:

人类最好理解的预测模型-决策树 Decision Tree


本文提纲:

  • 什么是决策树?

  • 一些决策树模型的术语

  • 决策树模型如何建立?

  • 连续变量决策树建立

  • Feature Importance

  • 商业应用场景


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


什么是决策树?


决策树,一颗用于决策的树。先上一个最简单的决策树例子。

下图就是一个决策树,在每一个树的 brand(树枝)上都会问一个 True or FALSE 的问题,如果回答 True,那么决策就使用左边的,如果回答 FALSE,决策就使用右边。如果一个人的静息心率大于 100bpm,那么他就要看医生,如果没有大于,那么就不需要担心。



通过这样的决策树路径,我们能够很好的了解决策的思维路径。接着我们来一个更为复杂的决策树,首先判断年龄界限,如果大于 40 岁,我们往左走,如果大于 40 岁同时我们来判断静息心率,如果静息心率大于 100bpm 我们接着往左走,如果 40 岁以上,静息心率大于 100,同时还经常吃甜甜圈,那么我们最终的决策是可以吃甜甜圈,但是也要注意运动。



所以通过一个简单的例子我们能够得到,决策树其实就是通过蓝色方块上的条件判断,来最后确定我们的决策结果(绿色方块)。

 

通过决策树模型,我们能够很清晰了解到一个问题获取答案的思路是什么样的,这种思路过程能够为解决商业问题提供很不错的支持。

 

一些决策树术语


Root:最上边 Top 的决策树方块

Nodes:除了 root 之外所有的条件判断蓝色方块

Leaf Nodes/Leaf:就是最终我们的绿色方块的判断,leaf 就是决策树的终点。

 

决策树如何建立?


还是依旧以案例的形式为大家展现,我们目前得到了很多病人的数据,数据记录了病人的胸痛,血液循环状态,动脉受阻状态以及是否患有心脏病。我们使用前三个变量来预测病人是否患有心脏病。

 

1.     决定 root 是谁

为了建立决策树模型,我们的目标是将合适的 root,node 和 leaf 放到合适的位置。那么我们最开始要决定谁是 root?现在有三个变量都可以作为 root,那么谁当这个 root 最合适?就需要一个准则。



选 root 的准则是什么?就是看看这三个候选变量谁当 root 这个模型会更好。我们分别使用这几个候选变量做 root 来建立一个只有一层的决策树,最终来比较预测解决的纯净度(Purity)。如下图所示,红线框内的部分就是我们建立一层决策树的预测结果。



如何衡量纯净度?使用 GINI impurity 系数。我们以 Chest Pain 作为 root 的一层 decision tree model 为例,基尼系数的计算过程如下图(无需我们计算,选择 root 的过程是计算机自动实现的)。Gini impurity 系数越低说明纯净度越高,我们选择 Gini impurity 最低的那个变量作为 Root。



最终我们算出了这三个变量分别作为 root 的模型的 Gini impurity。通过对比我们可以得出下图的第二个模型,也就是 Good Blood Circulation 血液流通情况作为 root 的模型系数最低,纯净度最高。所以我们的 root 就会选择 Good Blood Circulation。



2.  决定每一个 Node

现在我们已经决定了最上边的 root,我们该填充剩下的 node 了,剩下的 node 我们将会使用除了 root 之外的变量作为候选变量,填充至对应的蓝色方格中。那么 node 的选择准则又是什么呢?依旧是 Gini Impurity但是这次我们计算 Gini impurity 所用的数据是被 root 分开后剩余的数据。如下图,就是使用 37+127=164 个数据量来计算 Chest Pain 作为 node 和 Blocked Arteries 作为 node 的 Gini Impurity。最终得到 Blocked Arteries 作为该 node。



3.     什么时候停止增加 Node 而变成 Leaf?

很简单,还是比较 Gini Impurity。如果加入 Node 之后的 Gini Impurity 要低于不加 Node 的,那么就加上新的 Node,如果高于不加 Node,那么就到此为止。如下图所示,如果在红色圆圈处加上新的 Chest Pain Node,那么得分是 0.29,但是如果不加,只用 13/102 这个结果来计算,得分是 0.2。于是乎,我们决定不继续增加 node,选择在这里进行完结,确定最终的决策,建立 Leaf。



连续型变量决策树

上边的案例都是 categorical 的变量,要是我们的变量是连续型的,我们如何选择判断条件的界限呢?就如同下面图中 weight 该小于多少才是我们的判断条件呢?


 

长话短说,分为几个步骤:

1.     计算变量数值之间的平均值,如上图红圈所示。

2.     将每一个平均值带入判断条件,计算 Gini Impurity

3.     对比 Impurity,找到 Gini Impurity 最小的数值所对应的 weight,那么这个 weight 就是该 node 或者 root 的判断条件。核心依旧是 Gini impurity 的对比。



建模过程总结

总结一下,决策树的思维就是通过不同变量的条件 True/False 选择来延续决策路线。每一个 Root,Node,leaf 的选择都来自于 Gini Impurity 的对比。


特征重要性 Feature Importance


特征重要程度 Feature Importance 是什么?指的就是每一个变量对于模型预测的重要性。我认为这是所有 tree-based 模型最有用的一个东西。基本思路如下:


如果一个特征被选为分割点的次数越多,那么这个特征的重要性就越强。Feature importance 这个指标是能够为我们带来无比巨大的商业价值的,因为他可以让我们知道影响目标值的变量重要性,那么我就可以针对最重要的特征进行相应的调整,以提升目标值的表现。


整个 feature importance 的计算及排序依旧会由计算机自动为我们得到,就如同下图所示,我们能够很清晰的得到不同变量对于目标值的价值。

 


应用场景


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



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

 

总结一下,树模型能够为 Customer & Marketing 部门带来很大的价值,他们能够通过决策树的 feature 的优先性以及 importance 来指导为银行获得更优质的客户。

 

本文参考信息来源:

SateQuest

IBM Developer: https://developer.ibm.com/zh/articles/ba-1507-decisiontree-algorithm/

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


白话 ML 就到这里,下期预告:一堆决策树组成的随机森林 Random Forest


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


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

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

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

杜吉普

关注

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

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

评论

发布
暂无评论
白话机器学习(7):人类最好理解的预测模型-决策树Decision Tree