1. 前言
分类与回归树(Classification and Regression Trees, CART)是由四人帮Leo Breiman, Jerome Friedman, Richard Olshen与Charles Stone于1984年提出,既可用于分类也可用于回归。本文将主要介绍用于分类的CART。CART被称为数据挖掘领域内里程碑式的算法。
不同于C4.5,CART本质是对特征空间进行二元划分(即CART生成的决策树是一棵二叉树),并能够对标量属性(nominal attribute)与连续属性(continuous attribute)进行分裂。
2. CART生成
前一篇提到过决策树生成涉及到两个问题:如何选择最优特征属性进行分裂,以及停止分裂的条件是什么。
特征选择
CART对特征属性进行二元分裂。特别地,当特征属性为标量或连续时,可选择如下方式分裂:
An instance goes left if CONDITION, and goes right otherwise
即样本记录满足CONDITION则分裂给左子树,否则则分裂给右子树。
标量属性
进行分裂的CONDITION可置为不等于属性的某值
;比如,标量属性Car Type
取值空间为{Sports, Family, Luxury}
,二元分裂与多路分裂如下:
连续属性
CONDITION可置为不大于
Annual Income
,
![](https://i-blog.csdnimg.cn/blog_migrate/2a4eb6652f99224dd4478e5886d7b116.png)
取属性相邻值的平均值,其二元分裂结果如下:
接下来,需要解决的问题:应该选择哪种特征属性及定义CONDITION,才能分类效果比较好。CART采用Gini指数来度量分裂时的不纯度,之所以采用Gini指数,是因为较于熵而言其计算速度更快一些。对决策树的节点
,Gini指数计算公式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/548af84237e736bec5c58d110f461c04.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5946ac4ddf024c90425c78bbce6ceae4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c092d008f8086733dc7fd9d30f9131f9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5946ac4ddf024c90425c78bbce6ceae4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df17f08a61522e75bb7b78c6cac59d5d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/40827a6398fcec6b551562eca003ceb9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2918013f651930d37d12461f46ef48e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3b6f9759a7abbac935c652e71dc068f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1d353f4eb3430d1be8f5ab01444de2e6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9f56581a9a5046f5b91412b0d2521481.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6bd562a8a8a936339a0a125e6b4c0c53.png)
![](https://i-blog.csdnimg.cn/blog_migrate/32b872421c39024c9af6ba7daa73f28a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f9a754f299fb97260010ce70a4f5f8c4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9f56581a9a5046f5b91412b0d2521481.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df17f08a61522e75bb7b78c6cac59d5d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b283dda68754c3de4bff12d9bae674a8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83b735baca293efb604041e83fafa479.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2918013f651930d37d12461f46ef48e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
Gini指数即为
![](https://i-blog.csdnimg.cn/blog_migrate/f9a754f299fb97260010ce70a4f5f8c4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9f56581a9a5046f5b91412b0d2521481.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/94c8576b4bacc9c98e63c49444c05d73.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74c49f24599d94568fd54d3aead4779c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e4d0c2d175b6f129da1e05e452d03f9e.png)
;分裂后的Gini指数定义如下:
![](https://i-blog.csdnimg.cn/blog_migrate/548af84237e736bec5c58d110f461c04.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4705aa4ed4b67dc207476fabd1c4cc78.png)
![](https://i-blog.csdnimg.cn/blog_migrate/94c8576b4bacc9c98e63c49444c05d73.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/40827a6398fcec6b551562eca003ceb9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74c49f24599d94568fd54d3aead4779c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/548af84237e736bec5c58d110f461c04.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5946ac4ddf024c90425c78bbce6ceae4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c092d008f8086733dc7fd9d30f9131f9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5946ac4ddf024c90425c78bbce6ceae4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74c49f24599d94568fd54d3aead4779c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6f76ad74e4e3523c5effb945aaa077a6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e4d0c2d175b6f129da1e05e452d03f9e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/548af84237e736bec5c58d110f461c04.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5946ac4ddf024c90425c78bbce6ceae4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c092d008f8086733dc7fd9d30f9131f9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5946ac4ddf024c90425c78bbce6ceae4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba6f553e9cd1e39b4b3df325c5495dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e4d0c2d175b6f129da1e05e452d03f9e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/14dfee35b05e4e5a4f35539d54abc9a9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
其中,
表示样本集合的记录数量。如上图中的表格所示,当Annual Income的分裂值取87时,则Gini指数计算如下:
![](https://i-blog.csdnimg.cn/blog_migrate/7bfc97dbbdccbcac5621ef7608906afd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2918013f651930d37d12461f46ef48e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9526014231cb300f9a18b572ec0a0cf5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9d021d35b6e8f33242e41f033671584b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2918013f651930d37d12461f46ef48e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3b6f9759a7abbac935c652e71dc068f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2918013f651930d37d12461f46ef48e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bfc97dbbdccbcac5621ef7608906afd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83b735baca293efb604041e83fafa479.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3b6f9759a7abbac935c652e71dc068f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8abf2272e4fb5fbcabd85544aab70113.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bfc97dbbdccbcac5621ef7608906afd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83b735baca293efb604041e83fafa479.png)
![](https://i-blog.csdnimg.cn/blog_migrate/008cfd520826dd4b22ba3785e3cfdf1b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6f76ad74e4e3523c5effb945aaa077a6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df0a4dd3909b42076fea1bb7b2d04641.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2918013f651930d37d12461f46ef48e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9526014231cb300f9a18b572ec0a0cf5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9d021d35b6e8f33242e41f033671584b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2918013f651930d37d12461f46ef48e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3b6f9759a7abbac935c652e71dc068f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/14dfee35b05e4e5a4f35539d54abc9a9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df0a4dd3909b42076fea1bb7b2d04641.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83b735baca293efb604041e83fafa479.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3b6f9759a7abbac935c652e71dc068f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bfc97dbbdccbcac5621ef7608906afd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df0a4dd3909b42076fea1bb7b2d04641.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83b735baca293efb604041e83fafa479.png)
![](https://i-blog.csdnimg.cn/blog_migrate/008cfd520826dd4b22ba3785e3cfdf1b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/40827a6398fcec6b551562eca003ceb9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9526014231cb300f9a18b572ec0a0cf5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c07423d870c1baa0abbb30064948b4c0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bfc97dbbdccbcac5621ef7608906afd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2918013f651930d37d12461f46ef48e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fe118915deb21d2baf40e4552b6ed1fb.png)
CART算法
CART算法流程与C4.5算法相类似:
- 若满足停止分裂条件(样本个数小于预定阈值,或Gini指数小于预定阈值(样本基本属于同一类,或没有特征可供分裂),则停止分裂;
- 否则,选择最小Gini指数进行分裂;
- 递归执行1-2步骤,直至停止分裂。
3. CART剪枝
CART剪枝与C4.5的剪枝策略相似,均以极小化整体损失函数实现。同理,定义决策树
的损失函数为:
![](https://i-blog.csdnimg.cn/blog_migrate/5fc13cb22af6a54e1bf88db96219fc8d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3380be97e60633593d2def0456a81b52.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c3797902781130dc0f0a0f915f3097c5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/40827a6398fcec6b551562eca003ceb9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1e430f54e6908120049a97db8bdb2954.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c3797902781130dc0f0a0f915f3097c5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6f76ad74e4e3523c5effb945aaa077a6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/180fa0e6afc83453244f14091aeb3771.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c3797902781130dc0f0a0f915f3097c5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea9a2d81b5b44bd195fe6c3dc5e24b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8abf2272e4fb5fbcabd85544aab70113.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
其中,
![](https://i-blog.csdnimg.cn/blog_migrate/180fa0e6afc83453244f14091aeb3771.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c3797902781130dc0f0a0f915f3097c5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bbd8a060df0534aaa474a54c90dab235.png)
为模型的复杂度。
CART算法采用递归的方法进行剪枝,具体办法:
- 将
![](https://i-blog.csdnimg.cn/blog_migrate/9526014231cb300f9a18b572ec0a0cf5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/40827a6398fcec6b551562eca003ceb9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/180fa0e6afc83453244f14091aeb3771.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ad747e7f399d6ac91fabb49da56e63ed.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd714c590810363d802a32d32ab0ef71.png)
![](https://i-blog.csdnimg.cn/blog_migrate/180fa0e6afc83453244f14091aeb3771.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5afff27d9a807ba051985c56928d4f50.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd714c590810363d802a32d32ab0ef71.png)
![](https://i-blog.csdnimg.cn/blog_migrate/180fa0e6afc83453244f14091aeb3771.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83b735baca293efb604041e83fafa479.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd714c590810363d802a32d32ab0ef71.png)
![](https://i-blog.csdnimg.cn/blog_migrate/57df00824fa8929374afebd739d9e0fa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd714c590810363d802a32d32ab0ef71.png)
![](https://i-blog.csdnimg.cn/blog_migrate/180fa0e6afc83453244f14091aeb3771.png)
![](https://i-blog.csdnimg.cn/blog_migrate/62edeb113aac23e86a5b0f4224420d35.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6bd562a8a8a936339a0a125e6b4c0c53.png)
![](https://i-blog.csdnimg.cn/blog_migrate/180fa0e6afc83453244f14091aeb3771.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5dd6ad9677a32c1c974a5401b7307d2e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4705aa4ed4b67dc207476fabd1c4cc78.png)
![](https://i-blog.csdnimg.cn/blog_migrate/180fa0e6afc83453244f14091aeb3771.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5dd6ad9677a32c1c974a5401b7307d2e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bc892b316a31902c1d30b96f3d9e685f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5afff27d9a807ba051985c56928d4f50.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ed0afb572bef457b579d4cf61879e9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c3797902781130dc0f0a0f915f3097c5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5dd6ad9677a32c1c974a5401b7307d2e.png)
- ;
- 从最优子树序列
- 选出最优的(即损失函数最小的)。
如何计算最优子树为
呢?首先,定义以为单节点的损失函数为
以
为根节点的子树的损失函数为
令
,则得到
此时,单节点
与子树有相同的损失函数,而单节点
的模型复杂度更小,故更为可取;同时也说明对节点
的剪枝为有效剪枝。由此,定义对节点
的剪枝后整体损失函数减少程度为
剪枝流程如下:
- 对输入决策树
;选择最小的
作为
,并进行剪枝得到树
,其为区间
- 对应的最优子树。
- 对树
,再次自上而下计算内部节点的
;……
……
- ……
- 如此递归地得到最优子树序列,采用交叉验证选取最优子树。
关于CART剪枝算法的具体描述请参看[1],其中关于剪枝算法的描述有误:
(6)如果T不是由根节点单独构成的树,则回到步骤(4)
应改为
回到步骤(3)
,要不然所有均一样了。
-----------------------------------------------Update ------------------------------------------------------
李航老师已经在勘误表给出修改了。
4. 参考资料
[1] 李航,《统计学习方法》.
[2] Pang-Ning Tan, Michael Steinbach, Vipin Kumar, Introduction to Data Mining.
[3] Dan Steinberg, The Top Ten Algorithms in Data Mining.