• 它同样由特征选取、树的生成、剪枝组成。
      • 它既可用于分类,也可用于回归。
    1. CART 假设决策树是二叉树:

      • 内部结点特征的取值为 。其中:左侧分支取 ,右侧分支取
      • 它递归地二分每个特征,将输入空间划分为有限个单元。
    2. CART 树与ID3 决策树和 C4.5 决策树的重要区别:

      • CART 树是二叉树,而后两者是N 叉树。

        由于是二叉树,因此 CART 树的拆分不依赖于特征的取值数量。因此CART 树也就不像ID3 那样倾向于取值数量较多的特征。

      • CART 树的特征可以是离散的,也可以是连续的。

        而后两者的特征是离散的。如果是连续的特征,则需要执行分桶来进行离散化。

    3. CART算法分两步:

      • 决策树生成:用训练数据生成尽可能大的决策树。
      • 决策树剪枝:用验证数据基于损失函数最小化的标准对生成的决策树剪枝。
    1. 生成算法有两个生成准则:

      • CART 回归树:用平方误差最小化准则。
      • CART 分类树:用基尼指数最小化准则。

    5.1.1 CART 回归树

    5.1.1.1 划分单元和划分点
    1. 一棵CART 回归树对应着输入空间的一个划分,以及在划分单元上的输出值。

      设输出 为连续变量,训练数据集 五、CART 树 - 图1

      设已经将输入空间划分为 个单元 五、CART 树 - 图2,且在每个单元 上有一个固定的输出值 五、CART 树 - 图3。则CART 回归树模型可以表示为:

      其中 五、CART 树 - 图4 为示性函数。

    2. 如果已知输入空间的单元划分,基于平方误差最小的准则,则CART 回归树在训练数据集上的损失函数为:

      根据损失函数最小,则可以求解出每个单元上的最优输出值 五、CART 树 - 图5 为 : 上所有输入样本 五、CART 树 - 图6 对应的输出 的平均值。

      即:五、CART 树 - 图7 ,其中 表示单元 五、CART 树 - 图8 中的样本数量。

    3. 定义 上样本的方差为 五、CART 树 - 图9,则有: 。则CART 回归树的训练集损失函数重写为:五、CART 树 - 图10 ,其中 为训练样本总数。

      定义样本被划分到 五、CART 树 - 图11 中的概率为 ,则 五、CART 树 - 图12 。由于 是个常数,因此损失函数重写为:

      五、CART 树 - 图13

      其物理意义为:经过输入空间的单元划分之后,CART 回归树的方差,通过这个方差来刻画CART 回归树的纯度。

    4. 问题是输入空间的单元划分是未知的。如何对输入空间进行划分?

      设输入为 维: 五、CART 树 - 图14

      • 选择第 维 五、CART 树 - 图15 和它的取值 作为切分变量和切分点。定义两个区域:

      五、CART 树 - 图16

      • 然后寻求最优切分变量 和最优切分点 五、CART 树 - 图17 。即求解:

        其意义为:

        • 首先假设已知切分变量 五、CART 树 - 图18 ,则遍历最优切分点 ,则到:

          五、CART 树 - 图19

          其中 和 五、CART 树 - 图20 分别代表区域 和 五、CART 树 - 图21 中的样本数量。

        • 然后遍历所有的特征维度,对每个维度找到最优切分点。从这些(切分维度,最优切分点) 中找到使得损失函数最小的那个。

    5. 依次将输入空间划分为两个区域,然后重复对子区域划分,直到满足停止条件为止。这样的回归树称为最小二乘回归树。

    5.1.1.2 生成算法
    1. CART 回归树生成算法:

      • 输入:

        • 训练数据集
        • 停止条件
      • 输出: CART回归树 五、CART 树 - 图22

    5.1.2 CART 分类树

    5.1.2.1 基尼系数
    1. CART 分类树采用基尼指数选择最优特征。

    2. 假设有 个分类,样本属于第 五、CART 树 - 图23 类的概率为 。则概率分布的基尼指数为:

      五、CART 树 - 图24

      基尼指数表示:样本集合中,随机选中一个样本,该样本被分错的概率。基尼指数越小,表示越不容易分错。

      样本被选错概率 = 样本被选中的概率 * 样本被分错的概率 五、CART 树 - 图25

    3. 对于给定的样本集合 ,设属于类 五、CART 树 - 图26 的样本子集为 ,则样本集的基尼指数为:

      五、CART 树 - 图27

      其中 为样本总数, 五、CART 树 - 图28 为子集 的样本数量。

    4. 对于最简单的二项分布,设 五、CART 树 - 图29,则其基尼系数与熵的图形见下图。

      • 可以看到基尼系数与熵一样,也是度量不确定性的度量。

      • 对于样本集 , 五、CART 树 - 图30 越小,说明集合中的样本越纯净。

    5. 若样本集 五、CART 树 - 图31 根据特征 是否小于 五、CART 树 - 图32 而被分为两个子集: 和 五、CART 树 - 图33,其中:

      则在特征 五、CART 树 - 图34 的条件下,集合 的基尼指数为:

      五、CART 树 - 图35

      其中 为样本总数, 五、CART 树 - 图36 分别子集 的样本数量。它就是每个子集的基尼系数的加权和,权重是每个子集的大小(以子集占整体集合大小的百分比来表示)。

    5.1.2.2 划分单元和划分点
    1. 一棵CART 分类树对应着输入空间的一个划分,以及在划分单元上的输出值。

      设输出 五、CART 树 - 图37 为分类的类别,是离散变量。训练数据集 。

      设已经将输入空间划分为 五、CART 树 - 图38 个单元 ,且在每个单元 五、CART 树 - 图39 上有一个固定的输出值 。则CART 分类树模型可以表示为:

      五、CART 树 - 图40

      其中 为示性函数。

    2. 如果已知输入空间的单元划分,基于分类误差最小的准则,则CART 分类树在训练数据集上的损失函数为:

      五、CART 树 - 图41

      根据损失函数最小,则可以求解出每个单元上的最优输出值 为 : 五、CART 树 - 图42 上所有输入样本 对应的输出 五、CART 树 - 图43 的众数。

      即: 。

    3. 问题是输入空间的单元划分是未知的。如何对输入空间进行划分?

      类似CART 回归树, 分类树遍历所有可能的维度 五、CART 树 - 图44 和该维度所有可能的取值 ,取使得基尼系数最小的那个维度 五、CART 树 - 图45 和切分点 。

      即求解:五、CART 树 - 图46

    5.1.2.3 生成算法
    1. CART 分类树的生成算法:

      • 输入:

        • 训练数据集
        • 停止计算条件
      • 输出: CART 决策树

      • 步骤:

        • 选择最优切分维度 五、CART 树 - 图47 和切分点 。

          即求解:五、CART 树 - 图48

          它表示:遍历所有可能的维度 和该维度所有可能的取值 五、CART 树 - 图49 ,取使得基尼系数最小的那个维度 和切分点 五、CART 树 - 图50

        • 用选定的 划分区域并决定响应的输出值:

          五、CART 树 - 图51

          其中 和 五、CART 树 - 图52 分别代表区域 和 五、CART 树 - 图53 中的样本数量。

        • 对子区域 递归地切分,直到满足停止条件。

        • 最终将输入空间划分为 五、CART 树 - 图54 个区域 ,生成决策树:五、CART 树 - 图55

    5.1.3 其它讨论

    1. CART 分类树和CART 回归树通常的停止条件为:

      • 结点中样本个数小于预定值,这表示树已经太复杂。
      • 样本集的损失函数或者基尼指数小于预定值,表示结点已经非常纯净。
      • 没有更多的特征可供切分。
    2. 前面讨论的CART 分类树和CART 回归树都假设特征均为连续值。

      • 实际上CART 树的特征可以为离散值,此时切分区域定义为:

      • 连续的特征也可以通过分桶来进行离散化,然后当作离散特征来处理。

    5.2 CART 剪枝

    1. CART 树的剪枝是从完全生长的CART 树底端减去一些子树,使得CART 树变小(即模型变简单),从而使得它对未知数据有更好的预测能力。

    5.2.1 原理

    1. 定义CART 树 的损失函数为(五、CART 树 - 图56): 。其中:

      • 五、CART 树 - 图57 为参数是 时树 五、CART 树 - 图58 的整体损失。
      • 为树 五、CART 树 - 图59 对训练数据的预测误差。
      • 为子树的叶结点个数。
    2. 对固定的 五、CART 树 - 图60 ,存在使 最小的子树,令其为 五、CART 树 - 图61 。可以证明 是唯一的。

      • 五、CART 树 - 图62 大时, 偏小,即叶结点偏少。
      • 五、CART 树 - 图63 小时, 偏大,即叶结点偏多。
      • 五、CART 树 - 图64 时,未剪枝的生成树就是最优的,此时不需要剪枝。
      • 当 时,根结点组成的一个单结点树就是最优的。此时剪枝到极致:只剩下一个结点。
    3. 可以证明:

      • 五、CART 树 - 图65 及充分小时,有 。即此时倾向于选择比较复杂的 五、CART 树 - 图66,因为正则化项的系数 太小。
      • 五、CART 树 - 图67 增大到某个值时,有 。
      • 五、CART 树 - 图68 再增大时,有 。即此时倾向于选择比较简单的 五、CART 树 - 图69,因为正则化项的系数 太大。
    4. 五、CART 树 - 图70 ,此时 与 五、CART 树 - 图71 有相同的损失函数值,但是 的结点更少。

      因此 五、CART 树 - 图72 比 更可取,于是对 五、CART 树 - 图73 进行剪枝。

    5. 对 内部的每一个内部结点 五、CART 树 - 图74 ,计算 。

      它表示剪枝后整体损失函数增加的程度(可以为正,可以为负)。则有:

      五、CART 树 - 图75

      因为 是个内部结点,所以 五、CART 树 - 图76,因此有:

      • 时,五、CART 树 - 图77 ,表示剪枝后,损失函数增加。
      • 时,五、CART 树 - 图78 ,表示剪枝后,损失函数不变。
      • 时,五、CART 树 - 图79 ,表示剪枝后,损失函数减少。
    6. 对 内部的每一个内部结点 五、CART 树 - 图80 ,计算最小的 :

      五、CART 树 - 图81

      设 对应的内部结点为 五、CART 树 - 图82,在 内减去 五、CART 树 - 图83 ,得到的子树作为 。

      五、CART 树 - 图84 ,对于 ,有:五、CART 树 - 图85

      对于 ,有:

      • 对于 五、CART 树 - 图86 剪枝,得到的子树的损失函数一定是减少的。

        它也是所有内部结点剪枝结果中,减少的最多的。因此 是 五、CART 树 - 图87 内的最优子树。

      • 对任意一个非 内部结点的剪枝,得到的子树的损失函数有可能是增加的,也可能是减少的。

        如果损失函数是减少的,它也没有 五、CART 树 - 图88 减少的多。

    7. 如此剪枝下去,直到根结点被剪枝。

      • 此过程中不断产生 的值,产生新区间 五、CART 树 - 图89
      • 此过程中不断产生 最优子树
      • 其中 五、CART 树 - 图90 是由 产生的、五、CART 树 - 图91 内的最优子树; 是由 五、CART 树 - 图92 产生的、 内的最优子树;…
    8. 上述剪枝的思想就是用递归的方法对树进行剪枝:计算出一个序列 五、CART 树 - 图93,同时剪枝得到一系列最优子树序列 五、CART 树 - 图94 是 时的最优子树。

    9. 上述剪枝的结果只是对于训练集的损失函数较小。

      • 需要用交叉验证的方法在验证集上对子树序列进行测试,挑选中出最优子树。

        交叉验证的本质就是为了挑选超参数 五、CART 树 - 图95

      • 验证过程:用独立的验证数据集来测试子树序列 中各子树的平方误差或者基尼指数。

        由于 五、CART 树 - 图96 对应于一个参数序列 ,因此当最优子树 五、CART 树 - 图97 确定时,对应的区间 也确定了。

    5.2.2 算法

    1. CART剪枝由两步组成:

      • 从生成算法产生的决策树 五、CART 树 - 图98 底端开始不断的剪枝:

        • 每剪枝一次生成一个决策树

        • 这一过程直到 五、CART 树 - 图99 的根结点,形成一个子树序列 。

      • 用交叉验证的方法在独立的验证集上对子树序列进行测试,挑选中出最优子树。
    2. CART剪枝算法:

      • 输入:CART算法生成的决策树 五、CART 树 - 图100

      • 输出: 最优决策树

      • 算法步骤:

        • 初始化: 五、CART 树 - 图101

        • 自下而上的对各内部结点 计算 :五、CART 树 - 图102

        • 自下而上地访问内部结点 : 若有五、CART 树 - 图103 ,则进行剪枝,并确定叶结点 的输出,得到树 五、CART 树 - 图104

          • 如果为分类树,则叶结点 的输出采取多数表决法:结点 五、CART 树 - 图105 内所有样本的标记的众数。
          • 如果为回归树,则叶结点 的输出为平均法:结点 五、CART 树 - 图106 内所有样本的标记的均值。
        • 令 。

        • 五、CART 树 - 图107 不是由根结点单独构成的树,则继续前面的步骤。

        • 采用交叉验证法在子树序列 中选取最优子树 五、CART 树 - 图108

    3. CART剪枝算法的优点是:不显式需要指定正则化系数 。

      • CART 剪枝算法自动生成了一系列良好的超参数 五、CART 树 - 图109 ,然后利用验证集进行超参数选择。