CCP剪枝

作者: 7NIC7 | 来源:发表于2019-05-11 17:29 被阅读0次

    在一棵树生长完成后,往往需要剪枝,这是因为一颗完整的决策树往往容易过拟合。
    CCP即为基于复杂度的剪枝(cost complexity pruning).

一 概念

    在介绍CCP剪枝的原理之前,我们先来介绍一下什么是剪枝以及剪枝所用的评价指标。
1.什么是剪枝?如图,显示了对节点t进行剪枝的过程。

prun.png

2.如何计算整棵决策树的误判率?
    整棵树的误判率被定义为各个叶子节点误判率的加权平均,权重是该叶子节点的样本数的占比。
R(T) = \sum_{t \in \tilde{T}} p(t) r(t)
其中,\tilde{T}代表叶子节点,p(t)是节点t处的样本比例,r(t)是节点t处的误判率。r(t)=1- \max_j p(c_j|t)

二 CCP原理

    CCP的基本形式是找到一个子树使得下式最小:
\min_T R_\alpha(T) = \min_T (R(T) + \alpha |\tilde{T}|)
\alpha是一个复杂度参数,当\alpha较小时,倾向于选择一个较大的树,增大\alpha的值,会减小树的大小。|\tilde{T}|代表所有叶子节点的个数。
    在正式介绍CCP之前,大家可以先想一下以下两个问题并带着这两个问题进行接下来的阅读。

    1. 子树的选择是唯一的吗?换句话说,如果有两种剪枝方式,使得最后的评估指标R是一样大时,该选择哪种剪枝方式呢?
    1. 在剪枝的过程中,如获得的子树分别是{T_1, T_2,...,T_8,...,T_{11},...},那么T_{11}这个更小的子树是否会包含在T_8中?

    先来回答问题1,我们可以对最终选取的子树T(\alpha)做如下定义:
T(\alpha) = \arg \min_{T } R_\alpha(T),若另一个子树T使得R_\alpha(T) = R_\alpha(T(\alpha)),则必然有T(\alpha) \leq T
按照这样的定义选出的子树T(\alpha)是存在且唯一的。这个定义的意思就是如果有两个子树得到的误判率R是相同的,则选取较小的子树作为最终的决策树。

    问题2的答案就在下面的内容中,为了使得后产生的子树包含在之前的子树内,我们采取序贯剪枝的策略。

2.1 子树的产生

    在对CCP有了大概的认识之后,需要找到一系列子树。为什么要产生这些子树呢?
    为了回答这个问题,再回到上面那张剪枝图中,虚线下方的所有节点称为T_t

prun2.png

    下面列出剪枝前后的决策树误判率的相对值,为什么称作相对值呢?因为除了被裁剪的部分,其他节点的误判率和节点个数并不会发生改变,因此我们在这里只关注剪枝的部分。

  • 剪枝前:R_{before} = R(T_t) + \alpha |\tilde{T}|
  • 剪枝后:R_{after} = R(t) + \alpha

    当R_{after} > R_{before},即剪枝后误差增大时不会进行剪枝操作,解出\alpha < \frac{R(t) - R(T_t)}{|\tilde{T}| - 1 },且不等号右边的值大于零。
    原则上\alpha是可以取任意连续值,但是可以想象,随着\alpha的缓慢增大,并不一定需要剪枝,只有当\alpha增大到某个值时,我们发现剪枝减小的叶子节点个数已经可以弥补误判率的增高时,才会去剪枝。也就是在真实情况下,\alpha其实是一个离散的序列,下面介绍的弱连接可以帮助我们找到这些需要进行剪枝操作的\alpha序列。

2.2 Weakest-link弱连接

    \min_t g(t) = \frac{ R(t) - R(T_t)}{|\tilde{T}| - 1 }就是弱连接的定义,就是在树中找到一个节点t使得g(t)最小,也就是达到了剪枝的临界点,可以将节点t以下的节点剪除,继而在这个新的树中再重新寻找弱连接,这样下一次剪枝是在上一次剪枝的基础之上即为序贯剪枝。对完整的决策树T,根据弱连接找\alpha序列,下面是具体过程,

  • 1.在所有的非根节点的节点中,寻找weak-link t,得到\alpha_1,得到子树{T - T_t}。
  • 2.对1中得到的子树重复操作1这一过程。

从而得到一系列的子树{T_1,T_2,...},以及\alpha序列{\alpha_1, \alpha_2,...}。\alpha_i的不同取值对应着不同的子树T_i,当\alpha_k < \alpha < \alpha_{k+1}时,最小化R_\alpha(T)的子树是T_k

\alpha 的选取

    主流做法就是交叉验证。下面给出找出最优\alpha的伪代码。


for \alpha do
    for i in 1,2,...k do
        D 分为D^{(i)}D^i,D^{(i)}=D - D^i
        用D^{(i)}产生T_{max}
        根据CCP产生一系列的子树,找到\alpha对应的子树T_{\alpha}
        计算D^iT_\alpha上的误判率,记为R_i
    R_\alpha = 1/k \sum R_i
arg\min_\alpha E_\alpha


相关文章

  • CCP剪枝

    在一棵树生长完成后,往往需要剪枝,这是因为一颗完整的决策树往往容易过拟合。CCP即为基于复杂度的剪枝(cost c...

  • 寻找CCP

    电视剧巳播完!

  • 决策树的剪枝、连续与缺失

    剪枝处理 剪枝是决策树学习算法对付“过拟合”的主要手段。剪枝的基本策略有预剪枝和后剪枝两种。预剪枝是指在决策树生成...

  • 使用SpreadJS 开发在线问卷系统,构筑CCP(云数据采集)

    什么是CCP(云数据采集)平台? 图片来自于网络 CCP(云数据采集)平台诞生于大数据时代的背景下,通过实时数据挖...

  • 剪枝

    我知道 那些树木早就等着我 所有的枝桠平静的等待生与死 一只蚂蚁仰望了一下天空毅然穿过它的海洋 一只鸟站在去年的旧...

  • 剪枝

    初 去往教学楼的一条小道上,有一排紫薇,枝条的末端会开上一簇簇暗紫色的小小的花,落了之后,留下泥黄色的略微脱皮的枝...

  • 剪枝

    路径搜索里面有一个词叫做“剪枝”。我们把搜索过程可以看做是在是走迷宫,而剪枝则是为了避免避免走入死胡同而设计的一种...

  • 剪枝

    搬了新家之后,特别希望看到一个春意盎然的阳台。于是在四月的时候买了不少绿植。买来的是时候自然是光鲜亮丽花枝招展的姿...

  • 剪枝

    繁茂如林的思念 爱过春风 爱过冬雪 遗忘四季轮换的记忆 修剪俏丽 婉约出阁 白天进入黑夜 任光明肆虐 撕碎记忆 不...

  • 剪枝

    昨天晚上,爸爸来家里坐了坐,说如果明天不下雨,就到大姐家给大姐门前的几颗桔树和桃树剪剪枝,说剪枝就要早点剪,早剪营...

网友评论

      本文标题:CCP剪枝

      本文链接:https://www.haomeiwen.com/subject/kjvcgqtx.html