StatQuest系列之Decision Trees

视频来自B站:StatQuest - Decision Trees

一、建立决策树

现在有一组数据,是病人的健康程度,即胸痛、血液循环、动脉阻塞,以及该病人是否有心脏病,现在我们要用这组数据建立一个决策树,来预测一个人是否有心脏疾病,数据如下:

StatQuest系列之Decision Trees

决策树是由许多的yes/no节点组成的树状分类器,该例子中病人有三个健康因素,这三个因素可以都可以组成节点,每个节点的统计方式是,例如chest pain,判断病人是否有胸痛,其中有144个样本通过yes,即有胸痛统计到左叶子节点,有159个样本通过no,即无胸痛统计到右叶子节点,在144个有胸痛的样本中,有105个样本有心脏病,39个无心脏病,在159个无胸痛的样本中,有34个有心脏病,125个无心脏病,其他节点统计结果如下:
StatQuest系列之Decision Trees
注意:chest pain 、good blood circulation、blocked arteries三个因素的总数不同,因为一些病人可能同时没有三种测量数据。

二、基尼系数

观察发现,三种节点,没有一个节点可以100%的用来判断是否有心脏疾病,这种节点是"impure",为了判断哪种节点更好,我们需要来比较各个节点的“impurity”程度,当然有很多种方法来测量这种“impurity”程度,这里使用基尼系数(Gini)
下面我们来计算chest pain节点左叶的基尼系数:
StatQuest系列之Decision Trees
采用同样的方式,计算chest pain节点右叶的基尼系数:
G i n i _ r i g h t _ l e a f = 1 − ( 34 34 + 125 ) − ( 125 34 + 125 ) = 0.336 \begin{aligned} Gini\_right\_leaf &= 1 - ( \frac{34}{34 + 125})- ( \frac{125}{34 + 125}) \\ &= 0.336 \end{aligned} Gini_right_leaf​=1−(34+12534​)−(34+125125​)=0.336​
那么chest pain节点的基尼系数怎么计算呢,整个节点的基尼系数是左右leaf的基尼系数的加权平均值,即
StatQuest系列之Decision Trees
如果,我们来假设chest pain是个很"pure"的节点,即144个有胸痛的病人都有心脏病,159个无胸痛的病人都没有心脏病,那么这样"pure"的节点的基尼系数是:
G i n i _ l e f t _ l e a f = 1 − ( 144 144 + 0 ) − ( 0 144 + 0 ) = 0 \begin{aligned} Gini\_left\_leaf &= 1 - ( \frac{144}{144 + 0})- ( \frac{0}{144 + 0}) \\ &= 0 \end{aligned} Gini_left_leaf​=1−(144+0144​)−(144+00​)=0​
G i n i _ r i g h t _ l e a f = 1 − ( 0 0 + 159 ) − ( 159 0 + 159 ) = 0 \begin{aligned} Gini\_right\_leaf &= 1 - ( \frac{0}{0 + 159})- ( \frac{159}{0 + 159}) \\ &= 0 \end{aligned} Gini_right_leaf​=1−(0+1590​)−(0+159159​)=0​
G i n i = 0 Gini = 0 Gini=0
发现,基尼系数越小,节点纯度越大。

这样,我们可以得到三个节点的基尼系数:
StatQuest系列之Decision Trees

三、决策树左分支

计算后发现,Good Blood Circulation的基尼系数最小,因此我们使用Good Blood Circulation作为决策树的根节点root

决策树有了根节点后,就可以开始第一个节点的比较,通过判断病人是否血液循环良好,我们发现,有164个循环好,其中127个没有心脏病,37个有心脏病,133个血液循环不好,其中100个有心脏病,33个没有心脏病,如下图:
StatQuest系列之Decision Trees
接下来,就需要chest painblocked arteries 来进一步区分,对于节点Good Circ的左叶子节点,共164个样本,我们需要针对这164个样本,分布计算chest pain和blocked arteries的基尼系数,如下图
StatQuest系列之Decision Trees
通过比较二者的基尼系数,发现blocked arteries的基尼系数最小,因此blocked arteries节点连接到根节点的左叶子节点上
StatQuest系列之Decision Trees
现在左分支上就剩下chest pain了,因此将chest pain连接到Blocked的左叶子节点上,发现,chest pain 表现很好,
StatQuest系列之Decision Trees
但是在Blocked的右叶子节点是,发现计算chest Pain的基尼系数时,发现为0.29,而计算13/102叶子节点的基尼系数是,为0.2,也就是在13/102叶子节点后面加入chest Pain节点,反而增加了节点的"impurity"的程度,因此该节点到这里结束,
StatQuest系列之Decision Trees
我们完成了决策树左分支的建立,
StatQuest系列之Decision Trees

四、决策树的建立

用同样的方法,将决策树的右节点建立起来
StatQuest系列之Decision Trees

上一篇:mysql表ERROR 144 (HY000)Table 'dede_archives' is marked


下一篇:codewars —6 kyu —Are they the “same“?