CART的全称是Classification And Regression Tree,于1984年由Breiman等人提出,顾名思义它可用于分类和回归,本文只讲它在回归上的应用。
对于回归树有要这么几点认识:
- 可以捕获Y对Xi的依赖性,上图的结果显示Y对X7和X8没有依赖。也可以充实我们对自变量之间关系的认识。
- 树的形式简洁、高效。
- 节点的每次分裂都把原样本空间划分为互不相交的两个子集。每次都根据某个局部标准,选择最好的划分,因此它是一种贪心的爬山算法。
- 越往树的底层深入,节点覆盖的样本越少,即随着树的生长,估计越来越不可靠。
- 叶节点同样覆盖了一定数目(1个或多个)的样本。
- 回归树估计的准确率很大程序上依赖于样本的质量。
- 因素Xi可以是连续值,也可以是离散值 。
- 回归树拟合出来的是一个分段零阶函数。
上面也说了每次节点分裂时依据某个局部标准选择最好的划分,一种常用的标准就是:最小平方误差(LS)。
n是样本个数,<x
i
,y
i
>是一个数据点,r是预测值。
如果叶节点值取常数,为了使LS最小,应赋予它该叶节点所覆盖的t个样本的目标值的平均值。
D
t
是叶节点所覆盖的样本集合。
关于划分,本文只介绍二元划分的情况,即生成的回归树是二叉树。
我们定义节点t的拟合误差是该节点中实例的Y值与节点常量k
t
的平方差的平均值。
我们定义划分s的误差为子节点误差的加权平均。
令S为候选划分的集合,最佳的划分s*来自于S,它使得下式最大化:
将上式展开,推导可得,目标函数等价于最大化:
候选的划分S又有哪些呢?在连续变量和离散变量上有不同的求法。
对于连续变量Xv:
1.按X
v
从小到大的顺序对样本进行排序
2.除了X
i,v
==X
i+1,v
的地方不需要进行切割尝试外,在其他地方进行切割都是可选的划分方式。
对于离散变量:
决策树本来就擅长处理离散值的情况,方法很多:
(2)对变量的每种可能值都产生一个分枝。ID3决策树中就是这么做的。这会增加训练样本划分,导致不可靠估计的速度比二元划分更快。(3)下面举例详述。假如某个节点上覆盖的样本有:
Xv Y 绿 83 黄 24 红 90 蓝 65 红 5 绿 61 蓝 11 黄 66 红 92 对于X v 的每种取值,求y的平均值。
从小到大排序:最佳划分一定从下列划分中取得(不要问我为什么,这个方法是由Breiman发明的):
过分追求叶节点对训练数据拟合的准备率会导致树很大,并且存在过拟合(overfitting the training data),对新数据的预测准确度反而降低。树停止生长的规则很多:当叶节点覆盖的样本数小于给定阈值时就停止分裂;如果当前节点的误差率高于根节点的误差率的某一个比值就停止分裂。