R语言中自编基尼系数的CART回归决策树的实现

这里的想法是使距离最大化:想法是区分,所以我们希望样本尽可能不独立。要计算基尼系数。

 本文为了说明回归树的构造(使用CART方法),考虑以下模拟数据集,

具有一个因变量(感兴趣的变量)和两个连续的自变量( 变量​ 和​)。


热门课程

R语言数据分析挖掘必知必会

面对扑面而来的数据浪潮,包含Google、Facebook等国际企业,都已采用R语言进行数据分析

探索课程

理论分区如下

在这里,可以将样本绘制在下方(请注意,第一个变量在上方的y轴上,在下方的x轴上),蓝色点   等于1,红色点等于0,

为了构造树,我们需要一个分区critera。最标准的可能是Gini的索引,当将s分为两类时,可以写出该索引,  在此表示 

或  将分为三类时,表示为 

等等,这里​ 只是属于分区的观测值的计数,  ​ 其   取值为​。但是可以考虑其他标准,例如卡方距离,

在传统上,当我们考虑两个等级时,或者在三个等级的情况下。

同样,这里的想法是使距离最大化:想法是区分,所以我们希望样本尽可能不独立。要计算基尼系数,请考虑

我们只需构造列联表,然后计算上面给出的数量。首先,假设只有一个解释变量。我们将样本一分为二,并使用所有可能的分割值​,即

然后,我们为所有这些值计算基尼系数。结是使基尼系数最大化的值。有了第一个节点后,我们将继续保留(从现在开始将其称为​)。

我们通过寻找最佳第二选择来重申:给定一个根节点,考虑将样本一分为三的值,并给出最高的基尼系数,因此,我们考虑以下分区

或这个

也就是说,我们在上一个结的下方或上方分割。然后我们进行迭代。代码可以是这样的,

第一步,基尼系数的值如下:

最高约为0.3。然后,我们尝试分三部分构造一个分区(拆分为0.3以下或以上)。我们得到以下基尼系数图(作为第二个节点的函数)

 当样本在0.6左右分裂(这成为我们的第二个节点)时最大。等,现在,让我们将代码与标准R函数进行比较,

我们确实获得了类似的结:第一个为0.302,第二个为0.584。因此,构造树并不难…

现在,如果我们考虑两个解释变量,该怎么办?保持不变,除了分区的编写现在变得更加复杂。为了找到第一个节点,我们考虑了两个分量的所有值,然后再次保持最大化基尼指数的值,

这些图如下所示并获得了右侧的分区,

或者我们分割第二个分区(然后得到以下分区),

在这里,最好先分割第二个变量。实际上,我们回到了前面讨论的一维情况:正如预期的那样,最好在0.3左右进行分割。以下代码已确认这一点,

对于第二个结,应考虑四种情况:在第二个变量上再次分裂(再次),在上一个结之上或之下(请参见左下方)或在第一个变量分裂。然后在上一个结的下方或上方设置一个分区(请参见右下方),

为了使树可视化,代码如下

注意,我们也可以可视化该分区。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498