zoukankan      html  css  js  c++  java
  • CART剪枝

    1. CART剪枝介绍

    CART 剪枝算法从完全生长的决策树的底端剪去一些子树,使决策树变小(模型简单),从而能够对未知数据有更准确的预测。CART剪枝算法由两步组成:首先从生成算法产生的决策树(T_0)底端开始不断剪枝,直到(T_0)的根节点,形成一个子序列({T_0,T_1,T_3,.....T_n}),然后通过交叉验证在独立的验证集上对子树序列进行测试,从中选择最优子树。

    2. 剪枝的两个过程

    2.1 剪枝,形成一个子树序列

    在剪枝过程中,计算子树的损失函数$$C_{alpha}(T) = C(T) + alpha|T|$$
    其中,T为任意子树,(C(T))为对训练数据的预测误差(如基尼系数),(|T|)为子树叶节点个数,(alpha >= 0),(C_{alpha}(T))为参数是(alpha)时的子树(T)的整体损失,参数(alpha)权衡训练数据的拟合程度与模型的复杂度。
    对于每一个给定的(alpha),都有唯一的最优子树(T_{alpha})使得(C_{alpha}(T))最小。
    下面是通过(alpha)的变化来解释树的复杂度

    (alpha)比较大的时候,最优子树(T_{alpha})偏小
    (alpha)比较小时,最优子树(T_{alpha})偏大
    (alpha = 0)时,最优子树为未剪枝的(T_0)
    (alpha ightarrow+infty),最优子树为根结点树

    具体的,从整体树(T_0)开始剪枝,对(T_0)的的任意内部结点(t),以(t)为单结点树的损失函数为$$C_{alpha}(t) = C(t) + alpha$$
    (t)为根结点的子树(T_t)的损失函数是$$C_{alpha}(T_t) = C(T_t) + alpha|T_t|$$
    (alpha=0)或充分小时,有不等式$$C_{alpha}(T_t) < C_{alpha}(t)$$
    (alpha)增大时,必在某一点有$$C_{alpha}(T_t) = C_{alpha}(t)$$
    此时可以计算得到$$alpha = frac{C(t) - C_{alpha}(T_t)}{|T_t| - 1}$$
    (alpha)继续增大时,不等式反向,只要(alpha = frac{C(t) - C_{alpha}(T_t)}{|T_t| - 1})(T_t)(t)有相同的损失函数值,而(t)的结点少,因此(t)(T_t)更可取,对(T_t)进行剪枝。
    通过上述方法,我们可以计算出({(alpha_0,T_0),(alpha_1,T_1),....(alpha_n,T_n)})

    2.2 在剪枝得到的子树序列({T_0,T_1,T_2,...T_n})中通过交叉验证选取最优子树(T_{alpha})

    具体地,利用独立的验证数据集,测试子树序列(T_0,T_1,....T_n)中各棵子树的平方误差或基尼指数。依据平方误差或基尼指数最小来选择其中最优的决策树,其相应的(alpha)也就确定了,得到最优决策树(T_{alpha})

  • 相关阅读:
    64最长和谐子序列(594)
    63找到字符串中所有字母异位词(438)
    62有效的数独(36)
    10.10
    9.27作业
    9.27
    9.26
    9.25
    9.18学习内容
    9.17作业
  • 原文地址:https://www.cnblogs.com/lpworkstudyspace1992/p/8030186.html
Copyright © 2011-2022 走看看