决策树---CART算法的理解

前面两篇博文我们介绍了一下决策树的ID3和C4.5算法,现在我们一起来看看CART算法吧,CART是英文Classification And Regression Tree的缩写,也就是分类回归树,顾名思义,CART可以用作分类也可以用作回归。比如说拿前两篇博文中的股票数据来说,我们可以构建CART决策树来预测明日股票的涨跌,这是分类;也可以通过CART决策树预测明日股票的涨跌幅度,这是回归。所以说CART也是在ID3和C4.5算法基础上优化的决策树,并且CART是二叉树。当CART是分类树的时候,节点分裂的依据是GINI值;当CART是回归树的时候,节点分裂的依据是样本的最小方差。为了后续的计算,我们再把前两篇博文中的我自己编的股票数据拿出来,方便使用。

今日股票涨跌 上证指数 涨跌幅 明日股票涨跌
+ 2983 +1.2 -
- 2962 -6.6 +
+ 3008 +7.0 -
- 2966 -3.2 -
+ 3018 +5.7 +
- 2995 -2.2 +
+ 2899 +1.7 -
- 3065 -0.6 +
+ 2888 +0.2 -
- 3112 -9.3 +

在我们节点分裂的过程中,节点分裂是为了让数据更加纯,条理更加清晰,使得决策树的输出更加接近真实的值。我们在CART中如何评价节点的纯度呢,如果CART是分类树的时候,我们可以用GINI值来衡量;如果CART是回归树的时候,我们可以用节点的样本方差来衡量。我们来看一下GINI值的计算公式:

GINI=1iIpi2

我们要尽量将GINI值最小化,因为GINI值越大,代表节点越不纯。我们再来看看样本方差的计算公式吧:
σ=iI(xiμ)2=iIxi2nμ2

如果方差越大,就表示预测的值与真实值相差越大,反之,则预测的值越接近真实值。综上所述,我们可以知道,不论是分类树还是回归树,我们如果要选择分裂属性的话,就需要选择GINI值或者样本方差最小的那个属性。
Gain=iIpiGinii(classification)Gain=iIσi(regression)

CART在连续型的数据处理是和C4.5差不多的,我们可以参考上一篇博文,里面有介绍。在离散型数据的处理上,就有一些不同的地方。现在我们来一起计算一下如何计算GINI值和样本方差。
我们以今日股票涨跌为栗子,来看一下如果这10组股票数据是分类树,预测明日股票的涨跌:
决策树---CART算法的理解
Gain=iIpiGinii=12(1((15)2+(45)2))+12(1((15)2+(45)2))=0.32

我们再来看看用今日股票涨跌来预测明日的上证指数,这个例子就是一个回归树,我们来把今日股票数据的涨跌分开:

今日股票涨跌 上证指数 涨跌幅 明日股票涨跌
- 2962 -6.6 +
- 2966 -3.2 -
- 2995 -2.2 +
- 3065 -0.6 +
- 3112 -9.3 +
今日股票涨跌 上证指数 涨跌幅 明日股票涨跌
+ 2983 +1.2 -
+ 3008 +7.0 -
+ 2899 +1.7 -
+ 2888 +0.2 -
+ 3018 +5.7 +

这时我们可以计算这个回归树的样本方差:

Gain=iIσi=29622+29662+29952+30652+311225×30202+29832+30082+28992+28882+301825×2959.22=254.763

所以我们可以根据不同的分类来计算各自的GINI值和样本方差,最后取最小的值的那种划分方法,上述只是做一个GINI值和样本方差计算的例子。
上述就是我们所说的决策树CART算法,可以运用到分类树和回归树中,希望这篇文章能对您有所帮助,本人能力有限,文章中如有纰漏,请各位朋友轻喷,不吝指教,如有转载,也请表明出处,谢谢。