决策树的可视化解读

浏览过网上的其他帖子,发现大多都是进行环境的配置,并没有对结果进行分析。故写此文(其他文章写过的内容,我就不赘述了)。

环境:Python 3.6
源代码:https://gitee.com/zhyantao/DeepLearning/tree/master/DecisionTree

使用工具Graphviz可视化决策树后,可以得到如下所示的一个PDF文件:
决策树的可视化解读_第1张图片

与之对应的CSV表格如下所示:

RID age income student credit_rating class_buys_computer
1 youth high no fair no
2 youth high no excellent no
3 middle_aged high no fair yes
4 senior medium no fair yes
5 senior low yes fair yes
6 senior low yes excellent no
7 middle_aged low yes excellent yes
8 youth medium no fair no
9 youth low yes fair yes
10 senior medium yes fair yes
11 youth medium yes excellent yes
12 middle_aged medium no excellent yes
13 middle_aged high yes fair yes
14 senior medium no excellent no

解析

信息熵(entropy)作为不确定性的度量,其值越大,代表不确定性越强。因此当entropy=0时,表明结果是一个确定值。

对于决策树,利用 sklearn 自带的方法,确定了 age 可作为根节点,

下面分析这个树下面的各个参数都是什么意思:

首先,看最容易的参数 samples:

第一次分流,样本总数为 14 ,故 samples 等于 14。根据 age 属性是否等于 middle_aged 分成两类,等于 middle_aged 的样本总数为 4 ,不等于 middle_aged 的样本总数为 10 。因此左右子孩子的 samples 分别为 4 和 10 。

第二次分流,首先删掉第一次分流中等于 middle_aged 的个体。然后根据 student 属性是否为 yes 分成两类,等于 yes 的个体为 5 ,等于 no 的个体为 5 。因此左右孩子的 samples 分别为 5 和 5 。

然后,再分析 values 属性:

看根节点,根据标签值,也就是 class_buys_computer 属性的取值, yes 的个数为 5 , no 的个数为 9 ,因此 values=[5, 9] 。
同理,根节点的左孩子的标签值,yes 的个数为 5 , no 的个数为 5 ,因此 values=[5, 5] 。右孩子的标签值, 4个标签值全部都是 yes ,故 values=[0, 4]。

然后,再分析 entropy 属性:

对根节点来说,计算其信息熵,可以根据 values 中的两个值:

下面的节点和根节点一样的计算方式。

 

注解:为什么把 age 作为根节点?(详细步骤省略了,只给出计算方式)

构造这个树,是根据信息增益来计算的。

决策树的可视化解读_第2张图片

把信息增益最大的作为根节点, 所以,选择 age 作为第一个根节点 。

 

 

你可能感兴趣的:(决策树的可视化解读)