CART回归树

1 什么是CART

CART,又名分类回归树,是在ID3的基础上进行优化的决策树,学习CART记住一下关键点:

(1) CART既能是分类树,又能是回归树

(2) CART是分类树时,采用GINI指数作为节点分裂的依据;当CART是回归树时,采用样本的最小方差作为节点分裂的依据。

(3) CART是一棵二叉树

分类树的作用是通过一个对象的特征来预测该对象所属的类别,而回归树的目的是根据一个对象的信息预测该对象的属性,并以数值表示。

CART既能是分类树,也能是回归树。预测一个人是否已婚,则是分类树;预测一个人的年龄,则是回归树。

2 CART如何选择分裂的属性

分裂的目的是为了能够让数据变纯洁,使决策树输出的结果更接近真实值。如果是分类树,CART采用GINI指数衡量节点纯度;如果是回归树,采用样本方差衡量节点纯度。

GINI指数:

回归方差:

方差越大,表示该节点的数据越分散,预测的效果就越差,如哦一个节点的所有数据都相同,那么方差就为0。因此,无论是分类树还是回归树,CART都选择使得GINI或回归方差最小的属性作为分裂方案。

3 例子讲解

接下来将以一个实际的例子对CART进行介绍:

分类树和回归树是怎么做决策的,假设我们构建了两颗决策树分别预测用户是否已婚和实际的年龄:

图1是一棵分类树,图2是一棵回归树

CART如何分裂成一棵二叉树:

节点的分裂分为两种情况,连续型的数据和离散型的数据。

CART对连续型属性的处理与C4.5差不多,通过最小化分裂后的GINI指数或者样本方差寻找最优分割点,将节点一分为二。

对于离散型属性,理论上有多少个离散值就应该分裂成多少个节点。但是CART是一棵二叉树,每一次分裂,只会产生两个节点,怎么办?很简单,只要将其中一个离散值独立作为一个节点,其他的离散值生成另外一个节点即可。

https://blog.csdn.net/beauty0522/article/details/82726866

4 回归树的生成

训练回归树其实和训练分类树没有本质不同,也是自上而下,不断分裂节点的过程。不同之处在于对节点分裂的分裂准则和分裂值的选择方法上。

设有训练数据集D = \{(X_1, y_1), (X_2, y_2), \dots, (X_n, y_n)\}。我们直到决策树最终将数据元组划分到了多个叶子节点中,比如分类树的每个叶子就有一个类标号,作为元组的预测类。回归树的思路类似,我们将数据空间划分成了m个区域\{R_1, R_2, \dots, R_m\},实际上就是将训练元组的分区。然后赋予每个区域一个固定的代表值C_i(类似于分类树中的类标号),这样,回归树的模型可以表示成如下形式:

f(X) = \sum_{i = 1}^m C_i I(X \in R_i)

其中I(X \in R_i) = 1,如果X \in R_i;否则,I(X \in R_i) = 0。公式含义是:先判断X属于哪个区域,然后返回这个区域的代表值。这样,我们可以写出对于某个区域R_i回归模型的损失函数:

J(C) = \sum_{X_j \in R_i} (f(X_j) - g_i)^2

其中,g_i为这个区域的代表值(这里用g_i而不用C_i的原因是因为g_i是分裂中间的某个区域的代表制,而C_i是最终完成分裂之后的叶子节点的代表值),g_i的计算方法一般是这个区域中的元组的y值的均值,(取均值时,损失函数达到最优)

g_i = \frac{1}{N_i} \sum_{X_j \in R_i} y_i

其中N_i为这个区域内数据元组的总数。初始时,所有的数据元组都在一个区域内,计算损失函数,如果计算得到的误差值太大,不能满足要求,则寻找最佳的分裂准则(属性)和分裂值将数据集一分为二。这里的关键在于怎样的分裂准则和分裂值对于回归树来说是最佳的。“最佳”指我按照这样的属性和属性值将数据集一分为二后,使得分裂得到的两个子区域的误差和最小。

综上所述,回归树的计算步骤如下:

1 初始时,将所有训练元组放置于根节点中,计算损失函数得到误差值,倘若误差大于事先定好的参数,那么执行下面2-4步子;

2 选择用于分裂区域的属性A和对应的属性值s,将当前节点的数据元组划分到以下两个区域R_1,R_2中。

R_1 = \{X|x_i \leq s\}; ~~~~ R_2 = \{X|x_i > s\};

其中x_i为元组X中属性A的值。而选择分裂属性A以及属性值s的依据是使得分裂后的子区域误差值的和最小。即:

\min \sum_{X_j \in R_1} (f(X_j) - y_1)^2 + \sum_{X_j \in R_2} (f(X_j) - y_2)^2

这一步具体执行的时候,我们遍历所有的属性以及每个属性的所有可能的划分值,分别计算他们划分数据元组之后的两个子区域的代表制y_1,y_2,这样就可以计算R_1,R_2的误差和,最终选择误差和最小的属性A和属性s,作为分裂依据。

3 剪枝。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值