
ID3与C4.5两种决策树都是用于解决分类问题的,而CART算法则不止能分类,还能将决策树用于解决回归问题。即输出值可以为连续变量。CART算法本质上输出的是给定输入集合
1. CART回归树的生成
显然,不论是用于回归还是分类,在CART算法中最重要的是如何选择二分特征值的点。首先来看回归树的情况。前文中已经说过,最终生成的回归树的每一条“枝干”或者路径都代表了对输入空间的一种划分。假定最终共将整个输入空间划分成了
这里的
为了优化决策树的性能,在每一个划分空间中都可以用最小平方误差
既然已经有了求取最优输出值的方法,接下来就要考虑最重要的问题:如何划分特征了。我们的目的是从属性集中的所有属性中选取一个最优属性以及其切分点,那就可以遍历所有的属性,假设某一属性
此时,对这两个空间分别求空间中输出值的均值
- 对于输入空间
,遍历属性集中的每个特征,并在特征上扫描切分点
。通过求解
确定使该式达到最小值的一对
- 用这一对
划分输入空间,并将相应的输出值设为输出均值
- 继续对两个子空间递归调用上述算法,直至满足停止条件。
生成CART回归树的停止条件有多种选择方式,可以是结点中样本数少于某阈值,或者是结点上的最小平方误差小于某阈值,或者是没有特征可以再分。
2. CART分类树的生成
CART分类树既然和回归树同属一个算法,其思路自然相差不多。事实上,回归树采用最小二乘法进行最优属性选择,而分类树则使用基尼指数。除此之外二者的生成方式并无太大区别。
首先给出基尼系数的定义如下:
假设在分类问题中输出空间共有
对于二分类问题,不难计算如果取正类概率为
对于给定的样本集合,一般用
基尼系数值所表示的其实也是样本空间的不确定性。如果一个样本空间的基尼系数很大,说明空间中样本可以取的类别非常多,即空间中样本分布杂乱。而如果空间中所有样本都属于同一类,则不难计算基尼系数可以取到最小值0。
如果样本空间
概括CART分类树的生成算法如下:
- 对于输入空间
,遍历属性集中的每一个特征
,对其可能取的所有值测试样本点是否取该值,从而将
分为两个子空间。计算
的基尼系数。
- 选取使基尼系数最小的特征
和切分用值
作为最优特征和最优切分点。并依据此生成两个子空间。
- 对每个子空间递归调用上述算法直至满足停止条件。
3. CART剪枝算法
CART的剪枝比较类似于之前讲到过的后剪枝。首先在生成完整的决策树之后,获取该决策树的所有子树序列。对于任意的一个子树都可以用如下方式计算其代价函数:
式中的
首先对完整的生成树
以
以
当
随着
将上面两数直接带入就可以解出此时
由上,我们可以对完全生成树
此时,利用独立的一个验证用数据集,对序列中的所有子树进行测试,计算其平方误差或者基尼系数。取误差最小的子树为最优决策树,对应的参数值也就是最优参数值。至此CART的剪枝完成。