zoukankan      html  css  js  c++  java
  • cart树剪枝

    当前子树的损失函数:

    $C_a(T) = C(T) + a|T|$, 其中$C(T)$为对训练数据的预测误差,$|T|$为树的叶子结点数目,反映模型的复杂度。对固定的$a$,一定存在使损失函数$C_a(T)$最小的子树,将其表示为$T_a$, 极端情况,当 $a = 0$时,整体树是最优的,当$a -> infty  $时,根节点组成的单节点树是最优的。

    对应于每一个参数alpha,剪枝后的子树是唯一的。在算法中,给定参数alpha,找寻损失函数最小的子树T_{alpha},也就是说<alpha,T_{alpha}>是一一对应的!并不存在一个alpha对应于多个子树。CART剪枝算法中将用到该基本假设。因为当$a$大的时候,最优子树$T_a$偏小,当$a$小的时候,最优子树$T_a$偏大。

    从最宏观的角度去考虑的话,就是利用alpha生成T_{alpha}。CART剪枝算法的核心思想就是说,一个复杂的决策树,不管多复杂,都能生成有限个数的子树,我们记作{T_0,T_1,...,T_n}那么我们只要找寻到对应于每一个子树的alpha,即得到对应的子树!没错,抽象一下,从【有限个数的T_alpha】中找寻对应的【alpha

    alpha =0或者充分小:
    C_{alpha}(T_t) < C_{alpha}(t)
    决策树叶结点越多,不确定性越低。

    当增大alpha时,总有那么一个点,能够使得:
    C_{alpha}(T_t) = C_{alpha}(t)

    当继续增大alpha时,
    C_{alpha}(T_t) > C_{alpha}(t)
    所以我们只要取alpha_1 = frac{C(t)-C(T_t)}{vert T_tvert-1}时,当且仅当alpha ge alpha_1时,剪枝必然发生。

    剪枝已经发生,此时,对应于每一个子结点t会生成不同的alpha我们记作alpha(t),由此得: C_{alpha}(t) = C(t)+alpha(t)
    剪枝的决策树什么时候最优?对于当前参数alpha(t)而言,能够找到这样的t,使得 min_{t}{C(t)+alpha(t)}
    然而在这里为了能够求得alpha的一个序列,直接最小化了
    min_{t}(frac{C(t)-C(T_t)}{vert T_tvert-1})
    找的alpha即找到了子结点t,即完成了剪枝,即找到了最优子树T_1

    有了上述的步骤,为了得到决策树T_0的所有子序列,直接递归下去,直到根节点即可。在这一过程中,不断地增加alpha的值,产生新的区间。

     采用交叉验证法在子树序列中选取最优子树。

    https://www.zhihu.com/question/22697086

  • 相关阅读:
    cf 785#
    hdu 4920 Matrix multiplication
    poj 2443 Set Operation
    bzoj 3687: 简单题
    洛谷 三月月赛 C
    洛谷 三月月赛 B
    洛谷 三月月赛 A
    bzoj 3156: 防御准备
    bzoj 3437: 小P的牧场
    bzoj 3675: [Apio2014]序列分割
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/7464846.html
Copyright © 2011-2022 走看看