决策树---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值最小化,因为GINI值越大,代表节点越不纯。我们再来看看样本方差的计算公式吧:
如果方差越大,就表示预测的值与真实值相差越大,反之,则预测的值越接近真实值。综上所述,我们可以知道,不论是分类树还是回归树,我们如果要选择分裂属性的话,就需要选择GINI值或者样本方差最小的那个属性。
CART在连续型的数据处理是和C4.5差不多的,我们可以参考上一篇博文,里面有介绍。在离散型数据的处理上,就有一些不同的地方。现在我们来一起计算一下如何计算GINI值和样本方差。
我们以今日股票涨跌为栗子,来看一下如果这10组股票数据是分类树,预测明日股票的涨跌:
我们再来看看用今日股票涨跌来预测明日的上证指数,这个例子就是一个回归树,我们来把今日股票数据的涨跌分开:
今日股票涨跌 | 上证指数 | 涨跌幅 | 明日股票涨跌 |
---|---|---|---|
- | 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 | + |
这时我们可以计算这个回归树的样本方差:
所以我们可以根据不同的分类来计算各自的GINI值和样本方差,最后取最小的值的那种划分方法,上述只是做一个GINI值和样本方差计算的例子。
上述就是我们所说的决策树CART算法,可以运用到分类树和回归树中,希望这篇文章能对您有所帮助,本人能力有限,文章中如有纰漏,请各位朋友轻喷,不吝指教,如有转载,也请表明出处,谢谢。