StatQuest生物统计学专题 - 决策树(2)
前情回顾——二分类数据的决策树构建数值数据及多分类数据的决策树构建决策树构建的二个遗留问题
前情回顾——二分类数据的决策树构建
上一周我们接触到了“是否”型二分类数据的决策树构建,简要回顾就是:
可以把决策树的数据变量分为两种:类比函数可以将他们分为“自变量”和“因变量”,也就是说,决策树就是通过多个自变量的信息,最终得出因变量的分类。
对于如下示意的“是否”决策树,A、B、C就是自变量,分类1和分类2是因变量结果。
决策树就是通过各个自变量的信息去预测因变量的分类。如根据胸痛、血液循环和动脉阻塞来判断是否为心脏病等就是决策树的应用。
决策树的计算方法是先确定根节点,也就是上图中A的位置,再逐一确定各个分支中的节点,也就是B、C。
其方法就是逐一带入,看最佳。
如首先确定根节点,就把A、B、C分别依次带入,看此时谁的分类效果最佳,然后将其作为根节点(如A)。接着固定A最佳为根节点,使用同样的方法确定二级、三级节点。
分类效果的评价指标有多个,可以使用Gini值。Gini用于衡量每一个决策树的impurity(不纯净度),Gini值越低越好,它的计算非常简单:
Gini impurity=1-(1-probability of "Yes")^2-(1-probability of "No")^2
然后再对左侧Gini impurity和右侧Gini impurity根据样本数量加权平均即可。
数值数据及多分类数据的决策树构建
上述决策树的构建是使用的“是否”型二分类数据,那么其他类别的数据如何构建决策树?
数值型数据
如对于如下数值型数据,应如何对其进行决策树构建?
其实关键在于找到最佳cutoff值,将其分为二部分,如此一来就同“是否”型二分类数据了。
如何找到最佳cutoff值?
非常简单,如下图所示:排序、计算中值、计算中值Gini值即可。
从图中可以看出,最佳Gini值为0.27,因此以205为最佳cutoff值,也就是将Weight分为两类:Weight>205和Weight<205,于是数值数据就可以转变成二分类数据了。
二分类数据的决策树构建见上周的“决策树(1)”部分。
多分类数据
多分类数据分为两种:等级资料或无序多分类。
等级资料,也就是有序多分类,如无效、缓和、治愈。
无序多分类,如红、黄、蓝、绿。
先看看如何解决等级资料。
假如有一个等级资料,它是表征的笑话的好笑程度,其值域为0-4,那么我们只需要将其所有的分类情况的Gini值全部求解即可。
也就是,Joke Rank<=1、Joke Rank<=2、Joke Rank<=3共三种情况下的Gini值,此时是不需要计算Joke Rank<=4的,因为此时的分类将包括所有人。
假如此时计算出的最佳Gini值为Joke Rank=3,那么就根据Joke Rank=3将其分为两类,就可以将其转变为二分类数据了。
同样的道理,无序多分类数据的决策树构建方法如下
有如下无序多分类数据Color Choice,其数值为Green、Blue、Red,那么就先对所有的单值或组合计算Gini值,找到最佳情况。
也就是说,计算Green、Blue、Red、Green或Blue、Blue或Red、Green或Red共6种情况下的Gini值,找到最佳分类方案,如此就将数据转化为二分类数据了。
决策树构建的二个遗留问题
决策树的过拟合
决策树还是很容易出现“过拟合”的。
我们应该还记得,上周“决策树(1)”中的最终的决策树:
如图中红框位置所示,我们并没有进一步的使用Chst Pn数据做进一步的区分,而是根据使用Blocked得出最终的结果分类(叶节点)。
为何会这样呢?
其实这是筛选的结果,此时可以将Chst Pn数据作为一个节点,计算此时的Gini值为0.29,然而直接根据Blocked的结果得到的Gini值为0.20。由于加入Chst Pn后,Gini值升高,那自然是没必要做进一步的分类了。
直接根据Blocked的结果计算Gini值:
1-(13/115)^ 2-(102/115)^ 2 = 1-0.01-0.79 = 0.20
更进一步的,由于决策树的“过拟合”倾向,在实际计算中,应该考虑只有当加入一个新的分类变量使得Gini值下降到一定程度时(如下降超过0.1)才将其加入到决策树中。
缺失值如何处理
最一般的情形下,缺失值数据处理方法是被直接忽略或者整条数据删除不用了。
其实缺失值处理是可以有进一步的处理的,分为两种情况:分类数据还是数值数据。
如果数据为分类数据
那么可以将缺失值设定为根据当前变量的众数,如Blocked变量中“是”出现的次数多,那么Blocked中的缺失值就使用“是”来填补。
或者找到同Blocked变量的相关变量,根据相关变量的值来确定缺失值。假定Chst Pn同Blocked高度正相关,那么如果同缺失值对应的Chst Pn为“是”,那么就将缺失值设定为“是”即可。
如果数据为数值数据
同样的方法,可以将缺失值设定为当前变量的均值或中位数。
或者找到同当前变量高度相关的变量,做一个拟合,使用拟合值填补缺失值。
专题以往文章
参考资料
StatQuest课程:https://statquest.org/video-index/
猜你喜欢
生信菜鸟团-专题学习目录(6)
生信菜鸟团-专题学习目录(7)
还有更多文章,请移步公众号阅读
▼ 如果你生信基本技能已经入门,需要提高自己,请关注下面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。
▼ 如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。