CART算法采用的是一种二分递归分割的技术,将当前样本分成两个子样本集,使得生成的非叶子节点都有两个分支。因此CART实际上是一颗二叉树。当CART是分类树的时候,采用GINI值作为分裂节点的依据,当CART作为回归树的时候,使用样本的最小方差作为分裂节点的依据

1 回归树

1.1 算法原理

输入:训练数据集D
输出:回归树回归树sklearn 回归树模型原理_回归树sklearn
在训练数据集所在的输入空间中,递归得将每一个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树:
(1)选择最优切分变量j和切分点s,求解

回归树sklearn 回归树模型原理_回归树sklearn_02

遍历变量j,对固定的切分变量j扫描切分点s,选择使上式达到误差最小的变量(j,s),其中回归树sklearn 回归树模型原理_决策树_03回归树sklearn 回归树模型原理_回归树sklearn_04表示的是划分之后的空间。
(2)用选定的(j,s)划分区域并决定响应的输出值

回归树sklearn 回归树模型原理_数据挖掘_05

回归树sklearn 回归树模型原理_机器学习_06

(3)继续对两个子区域调用步骤(1),(2),直到满足停止条件
(4)将输入空间划分为M个区域回归树sklearn 回归树模型原理_决策树_03,回归树sklearn 回归树模型原理_回归树sklearn_04,回归树sklearn 回归树模型原理_决策树_09回归树sklearn 回归树模型原理_回归树sklearn_10,生成决策树:

回归树sklearn 回归树模型原理_数据挖掘_11

1.2 示例

下面我们将利用以下数据对年龄进行预测

回归树sklearn 回归树模型原理_回归树sklearn_12

首先将j的属性选为职业,则有三种划分情况{“老师”,“学生”}、{“上班族”}以及{“老师”,“上班族”}、{“学生”},最后一种为{“学生”,“上班族”}、{“老师”}

(1)第一种情况回归树sklearn 回归树模型原理_决策树_03={“学生”},回归树sklearn 回归树模型原理_回归树sklearn_04={“老师”,”上班族”}

回归树sklearn 回归树模型原理_可视化_15

此时有

回归树sklearn 回归树模型原理_数据挖掘_16

回归树sklearn 回归树模型原理_机器学习_17

回归树sklearn 回归树模型原理_数据挖掘_18

回归树sklearn 回归树模型原理_回归树sklearn_19

最小平方误差计算得:

回归树sklearn 回归树模型原理_机器学习_20

2 分类树

2.1 算法原理

输入:训练数据集D,停止计算的条件
输出:CART决策树
具体步骤:
(1)计算现有特征对该数据集的基尼指数,对于每一个特征A,可以对样本点A是否为a可以将数据集D分成数据集回归树sklearn 回归树模型原理_可视化_21,回归树sklearn 回归树模型原理_决策树_22
(2)对于所有的特征A和所有可能的切分点a,选择基尼指数最小的特征以及相对应的切分点作为最优特征和最佳切分点。
(3)对最优子树递归调用(1)(2),直到满足停止条件。
(4)生成CART分类树。

2.2 示例

在下图中,属性有3个,分别是有房情况,婚姻状况和年收入,其中有房情况和婚姻状况是离散的取值,而年收入是连续的取值。拖欠贷款者属于分类的结果。

回归树sklearn 回归树模型原理_机器学习_23

假设现在来看有房情况这个属性,那么按照它划分后的Gini指数计算如下

回归树sklearn 回归树模型原理_数据挖掘_24


而对于婚姻状况属性来说,它的取值有3种,按照每种属性值分裂后Gini指标计算如下

回归树sklearn 回归树模型原理_回归树sklearn_25

最后还有一个取值连续的属性,年收入,它的取值是连续的,那么连续的取值采用分裂点进行分裂。如下

回归树sklearn 回归树模型原理_机器学习_26