机器学习算法——决策树之CART树

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guangyacyb/article/details/83719564

CART 树

分类与回归树(classification and regression tree)是一种决策树模型,可用于分类与回归。

CART 在分类和回归时,采用不同的最优化策略:CART回归生成树用平方误差最小化策略(MMSE),CART 分类生成树采用基尼系数最小化策略。

CART回归树

树模型

训练集数据:

一棵回归树,对应输入空间(特征空间)的一个划分,以及在划分单元上的输出。

假设一个回归树将输入空间划分为M个单元 ,且在单元 上的输出值为,则回归树模型表示为:

预测误差为平方误差:

用平方误差最小准则求最优输出。

在一个单元中的最优值 是 上所有输入实例 xi 对应输出yi的均值:

回归树生成方式

用“启发式”方法,假设选择了第j个属性为切分变量,以它的取值s作为切分点,则可以定义两个区域:

目标是寻找最优切分变量j 和最优切分点s,即求解:

对每个固定j,可以找到使上式最小的s;遍历所有输入的特征j,找到最优的(j,s)对,将输入空间分为两个区域。然后重复此过程,直到满足条件为止。这样的回归树,也称为“最小二乘归回树”

最小二乘回归树生成算法

过程:输入训练集D,在D所在的空间中,递归的将每个区域划分为两个子区域,并计算子区域输出值,得到回归树。

步骤:

  1. 遍历特征j,对每个j扫描切分点s,选用能使 

    最小的切分位置(j,s)
  2. 用选定的(j,s)划分区域,并计算区域输出值

  3. 继续对两个子区域执行步骤1,2,知道满足条件
  4. 将输入空间划分为M个子区域  ,生成决策树:

CART 分类树

树模型

分类树的模型和回归树类似:

,不过这里的cm应该是:

,ck 表示第k个类别。

分类树生成算法

过程:输入训练集D,和停止计算条件;用基尼系数选择最优特征和最优切分点,递归运行的到分类树

步骤:

  1. 对每个特征A,及其可能的取值a,根据样本是否满足A=a,将D分割为D1和D2两部分,计算分割后的基尼系数
  2. 在所有可能的(A,a)对中,选择基尼系数最小的组合,作为最优特征和切分点,将现节点分为两个子节点,将训练集分配至子节点中。
  3. 对两个子节点递归调用1,2,知道满足条件
  4. 生成分类树

CART 树剪枝

过程:从完整的树底端剪去一些子树,是决策树变小(模型简化),从而提高泛化性能

分两步:先从完整树T0底端开始剪枝,直到根节点,形成一个子树序列:T0,T1,……,Tn;然后用交叉验证法选择最优子树。

1.剪枝,获得子树序列

最优子树

定义子树T的损失函数:

为训练集的预测误差(如基尼系数), 为子树叶节点树, 为参数,负责权衡模型对训练集的拟合程度,与模型复杂度的关系。

对固定的 ,定存在使得损失函数最小的子树,将其表示为。可验证这样的最优子树是唯一的。

 大时, 偏小(模型简单);当小时,偏大(模型复杂);当 =0,就是完整的树。当 是根节点组成的单节点树。

最优子树序列

用递归方法对树剪枝。将 从小增大,,产生一系列区间 ;剪枝得到的子树序列对应区间 的最优子树序列 ,序列中的子树是嵌套的(包含)。

具体如下:

从整体树T0开始剪枝。对T0内任意内部节点t,以t为单节点树的损失函数是:

(这里的损失函数,是t一个节点的损失函数,不是t作为一个节点前提下整棵树的损失函数!而且用于计算损失函数的样本,只是整棵树分配到t节点的样本,不是整个数据集D)

以t为根节点的子树Tt的损失函数是:

 及 充分小时,有:

 增大时,在某一个 有:

继续增大,则:

因此,只要有:

与t有相同的损失函数值,而t的节点少,因此t更好,对进行剪枝,对叶节点t以多数表决法决定其类别。

这里,可以总结出最优子树序列的获得方法:

对整棵树T0的每一个内部结点t,计算

表示剪枝后整体损失函数减少程度。将g(t)从小到大排序,这个序列就是上面要找的序列。

在T0中减去g(t)最小的Tt,将得到的子树作为T1,同时将最小的g(t)设为。T1位区间的最优子树。如此剪枝直到根节点。而在剪枝过程中,被剪枝的节点,对后续节点其实没有影响,这样后续节点的g(t)就保持不变了。(这里还不确定,每次剪枝完成后,g(t)是否要重新算????

2.在剪枝得到的子树序列  中通过交叉验证选取最优子树

利用独立的验证数据集,测试子树序列中各棵子树的平方误差或者基尼系数,值最小的作为最优决策树。同时也确定了对应的

 

遗留问题:

1、书本的步骤貌似没有重复计算g(t),但其他博客有不同看法,哪个为准?

参考:

《统计学习方法》

决策树之剪枝原理与CART算法

cart树ccp剪枝详细介绍

决策树之CART(分类回归树)详解

经典算法详解--CART分类决策树、回归树和模型树

决策树之CART算法原理及python实现

决策树系列(五)——CART

决策树之CART算法

决策树算法原理(下)

CART 分类与回归树

猜你喜欢

转载自blog.csdn.net/guangyacyb/article/details/83719564