Machine_Learning_2019_Task 10 CART

Machine_Learning_2019_Task 10 CART

要求

  • 学习Gini指数
  • 学习回归、分类树
  • 剪枝

CART树

  • 目标变量是类别型——分类树:Gini指数
  • 目标变量是连续型——回归树:平方误差最小化(前期Task8已解释)
  • 算法
    • 决策树生成
    • 决策树剪枝

CART与ID3的异同点

二元划分

  • 二叉树不易产生数据碎片,精确度往往也会高于多叉树。

选择变量的不纯度

  • 分类型目标:Gini指数。
  • 连续型目标:最小平方残差。

CART生成算法

输入:训练数据集D,停止计算条件

输出:CART决策树

从根结点,递归对每个结点操作:

    1. 设结点数据集为D,对每个特征A,对其每个值a,根据样本点对A=a的测试为是或否,将D分为D1,D2,计算A=a的Gini指数;
    1. 在所有的特征A以及所有可能的切分点a中,选择Gini指数最小的特征和切分点,将数据集分配到两个子结点中;
    1. 对两个子结点递归调用1,2步骤;
    1. 生成CART树。

剪枝过程

  • 用预剪枝或后剪枝对训练集生长的树进行剪枝。
    1. 形成子树序列:从生成算法产生的决策树T0底端开始不断剪枝,直到T0的根结点,形成子树序列{T0,T1…Tn};

      剪枝过程中,计算子树的损失函数:
      C α ( T ) = C ( T ) + α ∣ T ∣ C_{\alpha}(T)=C(T)+\alpha|T| Cα(T)=C(T)+αT
      对固定的a一定存在损失函数最小的子树,表示为Ta,当a变大时,最优子树Ta偏小,a=0时,整体树最优,a趋近无穷大,单结点最优;

      将a从小增大,
      o = α 0 < α 1 < ⋯ < α n < + ∞ \mathrm{o}=\alpha_{0}<\alpha_{1}<\dots<\alpha_{n}<+\infty o=α0<α1<<αn<+
      最有字数序列:
      { T 0 , T 1 , ⋯   , T n } \left\{T_{0}, T_{1}, \cdots, T_{n}\right\} {T0,T1,,Tn}
      从T0开始剪枝,以t为单结点树的损失函数:
      C α ( t ) = C ( t ) + α C_{\alpha}(t)=C(t)+\alpha Cα(t)=C(t)+α
      以t为根结点的子树Tt的损失函数:
      C α ( T t ) = C ( T t ) + α ∣ T t ∣ C_{\alpha}\left(T_{t}\right)=C\left(T_{t}\right)+\alpha\left|T_{t}\right| Cα(Tt)=C(Tt)+αTt
      当a=0及a很小时,
      C α ( T i ) < C α ( t ) C_{\alpha}\left(T_{i}\right)<C_{\alpha}(t) Cα(Ti)<Cα(t)
      不断增大a,当
      C α ( T t ) = C α ( t ) α = C ( t ) − C ( T t ) ∣ T t ∣ − 1 C_{\alpha}\left(T_{t}\right)=C_{\alpha}(t) \quad \alpha=\frac{C(t)-C\left(T_{t}\right)}{\left|T_{t}\right|-1} Cα(Tt)=Cα(t)α=Tt1C(t)C(Tt)
      Tt与t有相同损失函数值,但t结点更少,所以剪枝Tt。

      对T0中每个内部结点t,计算:
      g ( t ) = C ( t ) − C ( T t ) ∣ T t ∣ − 1 g(t)=\frac{C(t)-C\left(T_{t}\right)}{\left|T_{t}\right|-1} g(t)=Tt1C(t)C(Tt)
      在T0中剪去g(t)最小的Tt,将得到的子树作为T1,同时将最小的g(t)设为a1,T1为区间[a1,a2) 的最优子树;

      直到根节点,不断增加a的值,产生新的区间。

    1. 通过交叉验证法在独立的验证数据集上对子树序列{T0,T1…Tn}进行测试,从中选择最优子树Ta;

      即,利用独立的验证数据集,测试子树序列中各子树的平方误差或基尼指数,最小的决策树就是最优决策树。

树建立

  • 如果目标变量是标称的,并且是具有两个以上的类别,则CART可能考虑将目标类别合并成两个超类别(双化);
  • 如果目标变量是连续的,则CART算法找出一组基于树的回归方程来预测目标变量。

CART之分类树的生成(Gini指数)

  • 分类问题中,假设有k个类,样本点属于k的概率Pk,则概率分布的基尼指数:
    Gini ⁡ ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 \operatorname{Gini}(p)=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2} Gini(p)=k=1Kpk(1pk)=1k=1Kpk2

  • 二分类问题:
    Gini ⁡ ( p ) = 2 p ( 1 − p ) \operatorname{Gini}(p)=2p(1-p) Gini(p)=2p(1p)

  • 对给定的样本集合D,基尼指数:
    Gini ⁡ ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 \operatorname{Gini}(D)=1-\sum_{k=1}^{K}\left(\frac{\left|C_{k}\right|}{|D|}\right)^{2} Gini(D)=1k=1K(DCk)2

  • 如果样本集合D根据特征A是否为a被分割成D1和D2,即:
    D 1 = { ( x , y ) ∈ D ∣ A ( x ) = a } , D 2 = D − D 1 D_{1}=\{(x, y) \in D | A(x)=a\}, \quad D_{2}=D-D_{1} D1={(x,y)DA(x)=a},D2=DD1

  • 则在特征A的条件下,集合D的基尼指数:
    Gini ⁡ ( D , A ) = ∣ D 1 ∣ ∣ D ∣ Gini ⁡ ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ Gini ⁡ ( D 2 ) \operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)

你可能感兴趣的:(Gini,Index,CART,Decision,Tree,机器学习,学习笔记)