该算法由Brieman, Friedman, Olshen和Stone 在1984年提出
1.CART即分类回归树。如果目标变量是离散变量,则是classfication Tree,如果目标是连续变量,则是Regression Tree。
2.CART树是二叉树。 二叉树有什么优点?不像多叉树那样形成过多的数据碎片
3.树的生长及变量处理
(1)对于离散变量X(x1…xn),分别取X变量各值的不同组合,将其分到树的左枝或右枝,并对不同组合而产生的树,进行评判,找出最佳组合。如变量年纪,其值有“少年”、“中年”、“老年”,则分别生产{少年,中年}和{老年},{上年、老年}和{中年},{中年,老年}和{少年},这三种组合,最后评判对目标区分最佳的组合。
(2)对于连续变量X(x1…xn),首先将值排序,分别取其两相邻值的平均值点作为分隔点,将树一分成左枝和右枝,不断扫描,进而判断最佳分割点。
4. 变量和最佳切分点选择原则
树的生长,总的原则是,让枝比树更纯,而度量原则是根据不纯对指标来衡量,对于分类树,则用GINI指标、Twoing指标、Order Twoing等;如果是回归树则用,最小平方残差、最小绝对残差等指标衡量
(1)GINI指标(Gini越小,数据越纯)——针对离散目标
(2)最小平方残差——针对连续目标
其思想是,让组内方差最小,对应组间方差最大,这样两组,也即树分裂的左枝和右枝差异化最大。
(3)通过以上不纯度指标,分别计算每个变量的各种切分/组合情况,找出该变量的最佳值组合/切分点;再比较各个变量的最佳值组合/切分点,最终找出最佳变量和该变量的最佳值组合/切分点
5. 目标值的估计
(1)分类树:最终叶子中概率最大的类
(2)回归树:最终叶子的均值或者中位数
6. 树的剪枝
(1)前剪枝( Pre-Pruning)
通过提前停止树的构造来对决策树进行剪枝,一旦停止该节点下树的继续构造,该节点就成了叶节点。一般树的前剪枝原则有:
a.节点达到完全纯度
b.树的深度达到用户所要的深度
c.节点中样本个数少于用户指定个数
d.不纯度指标下降的最大幅度小于用户指定的幅度
(2)后剪枝( Post-Pruning)
首先构造完整的决策树,允许决策树过度拟合训练数据,然后对那些置信度不够的结点的子树用叶结点来替代。CART 采用Cost-Complexity Pruning(代价-复杂度剪枝法),代价(cost) :主要指样本错分率;复杂度(complexity) :主要指树t的叶节点数,(Breiman…)定义树t的代价复杂度(cost-complexity):
注:参数α:用于衡量代价与复杂度之间关系,表示剪枝后树的复杂度降低程度与代价间的关系,如何定义α?
对t来说,剪掉它的子树s,以t中最优叶节点代替,得到新树new_t。 new_t可能会比t对于训练数据分错M个,但是new_t包含的叶节点数,却比t少:
CCP剪枝步骤:
第一步:
–
–
–
第二步:
–
–
–