决策树之CART算法

前提

决策树算法详解(一)

连接

在前面介绍的决策树算法中,其特征的取值是离散的。就比如人的性别这个属性,只分为男女两个离散的值。在这样的情况下,决策树算法就无法应用到连续值上面去。为了将前面讲到的决策树算法应用到连续值上去。那么我们能想到的一种的思想就是:根据连续值中的一个值将特征划分为两类。而这正是CART算法的核心思想。

核心思想

假设决策树是二叉树,内部节点特征的取值为“是”与“否”。左分支取值为“是”,右分支取值为“否”。这样决策树就等价于递归地二分每个特征,将输入空间划分为了有限个单元。

回归树

特征选择依据

平方误差最小化准则

思想

我们知道决策树是对输入空间的一个划分,同时在每个划分空间对应一个输出值。对于每一个空间划分Rm,其上面的输出值Cm,通过回归树模型可以表示为:
在这里插入图片描述在上式中:
I(x∈R_m):指示函数,表示一个数据x是否属于空间划分Rm

有了上式,我们想要知道一个划分空间的最优输出值。而我们知道特征选择依据是平方差最小化准则。其实这时候一个划分空间的最优输出值就是在这个划分空间内的所有数据的输出值的均值。

现在:我们已经知道了每个划分空间的最优输出值了,那么我们现在要做的就是对决策树的特征选择。我们知道CART的核心思想是:将连续值通过一个固定值将其一分为二。那么此时的特征选择就是计算每个特征的每个划分点的最优损失函数。根绝损失函数最小化来选择特定的特征,并且特定的划分值将特征一分为二。

算法步骤

在训练数据集所在的输入空间中,递归的将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树

  1. 选择最优切分变量(最优特征)j与切分点(划分值)s,求解:(也就是最小化损失函数,C是划分空间内所有数据的均值)
    在这里插入图片描述
  2. 用选定的(j,s)划分区域并决定相应的输出值:
    在这里插入图片描述
  3. 继续对两个子区域调用步骤1和步骤2,循环递归,知道满足停止条件。
  4. 将输入空间划分为了M个空间,输出决策树

分类树

特征选择依据

基尼指数最小化准则

基尼系数

假设有K个类,样本点属于第K类的概率为P,则概率分布的基尼系数定义为:
在这里插入图片描述在某个条件上被划分下基尼系数为:(比如特征A将数据集划分为两部分)
在这里插入图片描述
基尼系数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经过A=a分割后集合D的不确定性。基尼指数值越大,样本集合的不确定性就越大。

算法步骤

  1. 设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。即:测试灭个每个特征上的每个可以能的取值,根据该取值将数据集划分为两部分,计算该特征下数据集的基尼系数
  2. 在所有的特征中以及他们所有可能的切分点中,选择基尼系数最小的特征及其对应的切分点作为最优特征和最优切分点。依据此将数据集划分为两部分
  3. 递归调用步骤1,步骤2,直至满足停止条件
  4. 生成CART决策树

算法停止条件:

  1. 结点中的样本个数小于预定阈值;
  2. 样本集的基尼系数小于预定阈值
  3. 没有更多特征

算法剪枝

损失函数:
在这里插入图片描述式子中:
第一项:训练数据集中的训练误差
第二项:决策树的叶子结点树,表示模型的复杂度

从式子中,我们知道:
当α大的时候,最优树偏小,即树的叶子节点较少;当α小的时候,最优树偏大,即树的节点较多;极端情况下,当α=0时,整体书最优,即不剪枝;当α=∞时,根节点组成的单节点树最优

递归对树进行剪枝

将α从小增大时,0=a1<a2<…<an<+∞时,产生一系列的区间[ai,ai+1),,剪枝得到的子数{T0,T1,T2,…,Tn},序列中的子数是相互嵌套的。

详细解读

从整体书T0开始剪枝,对T0的任意内部结点t,以t为单节点的损失函数是:
在这里插入图片描述以t为根节点的子树Tt的损失函数是:
在这里插入图片描述当 a = 0 及a充分小的时候,有不等式:
在这里插入图片描述
解释:当a=0时,即不考虑模型的复杂度,这时候肯定是决策树划分得越细,其误差越小
当a逐渐增大时,到达某一个值时,有:
在这里插入图片描述
当a再增大时,上面得不等式就会反向,只要:
在这里插入图片描述Tt与t就有相同的损失函数,而以t为单节点的树结点少,因此更加可取,对Tt进行剪枝。

因此:对T0中的任一内部结点,计算:
在这里插入图片描述它表示剪枝后,整体损失函数的减少程度。在T0
中剪去g(t)最小的Tt,将得到的子数作为T1,同时将最小的g(t)设为a1,T1为区间[a1,a2)的最优子树

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值