CART 代价复杂度CCP剪枝

  • 1.CCP算法
    • 1.1 代价复杂度函数
    • 1.2 决策树子树剪枝
    • 1.3 算法详细步骤
  • 2.举例说明
    • 2.1 第一次迭代
    • 2.2 第二次迭代
    • 2.3 第三次迭代
  • 参考文献

CART(Classification and Regression Trees)利用基尼指数来生成决策树,它既可以用于分类,也可用于回归。本文以classification分类为例,来描述其后剪枝CCP算法。
这里选择的是misclassification rate(分类错误率) 作为指标。

1.CCP算法

代价复杂度剪枝(CCP)是决策树的一种后剪枝算法。

1.1 代价复杂度函数

● Rα(T)=R(T)+α⋅∣f(T)∣R_\alpha (T) = R(T) + \alpha \cdot | f(T) |Rα​(T)=R(T)+α⋅∣f(T)∣

  • R(T)R(T)R(T):决策树T的训练/学习错误率
  • ∣f(T)∣|f(T)|∣f(T)∣:决策树T的叶子结点个数

● R(T)=∑t∈f(T)r(t)⋅p(t)=∑t∈f(T)R(t)R(T)=∑_{t∈f(T)}r(t)⋅p(t)=∑_{t∈f(T)}R(t)R(T)=∑t∈f(T)​r(t)⋅p(t)=∑t∈f(T)​R(t)

  • ∑t∈f(T)R(t)∑_{t∈f(T)}R(t)∑t∈f(T)​R(t):各叶子结点分类错误率之和
  • r(t)=1−max⁡kp(Ck−t)r(t)=1−\max_{k} p_{(C_k−t)}r(t)=1−maxk​p(Ck​−t)​:各叶子结点分类错误率
  • p(t)=n(t)np(t) = \cfrac{n(t)}{n}p(t)=nn(t)​: n(t)n(t)n(t)为叶子结点t的样本个数;n为决策树的所有样本数

1.2 决策树子树剪枝

对子树TtT_tTt​进行剪枝:

● Rα(T−Tt)−Rα(T)R_α(T−T_t)−R_α(T)Rα​(T−Tt​)−Rα​(T):代价复杂度函数的变化量(variation)

● Rα(T−Tt)−Rα(T)=R(T−Tt)−R(T)+α(∣f(T−Tt)∣−∣f(T)∣)=R(t)−R(Tt)+α(1−∣f(Tt)∣)R_\alpha(T - T_t) - R_\alpha(T) \\= R(T - T_t) - R(T) + \alpha ( | f(T - T_t) | - |f(T)| ) \\= R(t) - R(T_t) + \alpha ( 1 - |f(T_t)| )Rα​(T−Tt​)−Rα​(T)=R(T−Tt​)−R(T)+α(∣f(T−Tt​)∣−∣f(T)∣)=R(t)−R(Tt​)+α(1−∣f(Tt​)∣)

● α=R(t)−R(Tt)∣f(Tt)∣−1\alpha = \cfrac{R(t) - R(T_t)}{|f(T_t)| - 1}α=∣f(Tt​)∣−1R(t)−R(Tt​)​

以下图为示例,解释下第二个公式:

  • 决策树TTT中减掉 子树TtT_tTt​之后,只有一个结点和2个叶子结点组成的决策树,故R(T−Tt)=R(t)R(T-T_t)= R(t)R(T−Tt​)=R(t);
  • R(Tt)R(T_t)R(Tt​)定义为子树 TtT_tTt​(根节点为结点t的子树)的分类错误率,易知R(T)=R(Tt)R(T)= R(T_t)R(T)=R(Tt​);
  • ∣f(T−Tt)∣| f(T - T_t) |∣f(T−Tt​)∣=2;∣f(T)∣=1+∣f(Tt)∣|f(T)|=1+|f(T_t)|∣f(T)∣=1+∣f(Tt​)∣,所以有:∣f(T−Tt)∣−∣f(T)∣=1−∣f(Tt)∣| f(T - T_t) | - |f(T)| =1 - |f(T_t)|∣f(T−Tt​)∣−∣f(T)∣=1−∣f(Tt​)∣
  • α\alphaα为参数。

1.3 算法详细步骤

▼初始化

  • 有一棵已经生成好的决策树T1T^1T1;
  • 参数α1=0\alpha^1=0α1=0。

▼step 1

  • 选择决策树T1T^1T1中的所有节点t(t∈T1t \in T^1t∈T1,如上图节点数为2),使得:
    min⁡g1(t)=R(t)−R(Tt1)∣f(Tt1)∣−1\qquad \min g_1(t)=\cfrac {R(t)-R(T^1_t)}{ |f(T_t^1)|-1}ming1​(t)=∣f(Tt1​)∣−1R(t)−R(Tt1​)​
  • 若t1t_1t1​就是使得g1(t)g_1(t)g1​(t)取得最小值的节点,令:
    α2=g1(t1),T2=T1−Tt11\qquad \alpha^2=g_1(t_1),T^2=T^1-T_{t_1}^1α2=g1​(t1​),T2=T1−Tt1​1​

▼step i

  • 选择决策树TiT^iTi中的所有节点t(t∈Tit \in T^it∈Ti),使得:
    min⁡gi(t)=R(t)−R(Tti)∣f(Tti)∣−1\qquad \min g_i(t)=\cfrac {R(t)-R(T^i_t)}{ |f(T_t^i)|-1}mingi​(t)=∣f(Tti​)∣−1R(t)−R(Tti​)​
  • 若tit_iti​就是使得gi(t)g_i(t)gi​(t)取得最小值的节点,令:
    αi+1=gi(ti),Ti+1=Ti−Ttii\qquad \alpha^{i+1}=g_i(t_i),T^{i+1}=T^i-T_{t_i}^iαi+1=gi​(ti​),Ti+1=Ti−Tti​i​

▼重复进行,直至只剩下根节点。

▼输出结果

  • 决策树序列:T1⊇T2⊇...⊇Tk⊇...⊇TrootT^1\supseteq T^2\supseteq...\supseteq T^k\supseteq...\supseteq T_{root}T1⊇T2⊇...⊇Tk⊇...⊇Troot​
  • 参数α\alphaα序列:α1≤α2≤...≤αk≤...\alpha^1\le\alpha^2\le...\le\alpha^k\le...α1≤α2≤...≤αk≤...

2.举例说明

设有如下决策树,它有三个节点。

2.1 第一次迭代

INPUT:α1=0\alpha^1=0α1=0,T1={t1,t2,t3}T^1=\{t_1,t_2,t_3\}T1={t1​,t2​,t3​}

OUTPUT:
α2=min⁡g1(t)=18,t=t2或t3\alpha^2=\min g_1(t)=\cfrac{1}{8},t=t_2或t_3α2=ming1​(t)=81​,t=t2​或t3​
当取得最小值的节点数≥2\ge 2≥2时,对拥有节点数少的节点进行剪枝(这一点有的地方是说,选择∣f(T)∣|f(T)|∣f(T)∣即叶子结点个数最多的节点进行剪枝,貌似sklearn里的剪枝算法也是这样,有机会再深入验证吧),这里即对t3t_3t3​剪枝;
剪枝结果如下:

2.2 第二次迭代

INPUT:α2=18\alpha^2=\cfrac{1}{8}α2=81​,T2={t1,t2}T^2=\{t_1,t_2\}T2={t1​,t2​}

OUTPUT:
α3=min⁡g2(t)=18,t=t2\alpha^3=\min g_2(t)=\cfrac{1}{8},t=t_2α3=ming2​(t)=81​,t=t2​
对t2t_2t2​进行剪枝;
剪枝结果如下:

2.3 第三次迭代

INPUT:T3={t1}T^3=\{t_1\}T3={t1​}
OUTPUT:
α4=g3(t1)=8/16−4/162−1=14\alpha^4=g_3(t_1)=\cfrac{8/16-4/16}{2-1}=\cfrac{1}{4}α4=g3​(t1​)=2−18/16−4/16​=41​

这样就得到了决策树序列以及参数序列。

参考文献

[1] Cost-Complexity Pruning
[2] https://www.jianshu.com/p/b90a9ce05b28
[3] 统计学习方法 第5章 决策树

决策树CART 代价复杂度剪枝相关推荐

  1. 决策树后剪枝算法(一)代价复杂度剪枝CPP

    ​  ​​ ​决策树后剪枝算法(一)代价复杂度剪枝CPP  ​​ ​决策树后剪枝算法(二)错误率降低剪枝REP  ​​ ​决策树后剪枝算法(三)悲观错误剪枝PEP  ​​ ​决策树后剪枝算法(四)最小 ...

  2. cart算法_机器学习十大算法之一——决策树CART算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第23篇文章,我们今天分享的内容是十大数据挖掘算法之一的CART算法. CART算法全称是Classification ...

  3. sklearn决策树怎么使用ccp_alpha进行剪枝

    本站原创文章,转载请说明来自<老饼讲解-机器学习>ml.bbbdata.com 目录 一.CCP后剪枝是什么 二.如何通过ccp_alpha进行后剪枝 (1) 查看CCP路径 (2)根据C ...

  4. 决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点

    决策树ID3.决策树C4.5.决策树CART.CART树的生成.树的剪枝.从ID3到CART.从决策树生成规则.决策树优缺点 目录

  5. 决策树CART、ID3、C4.5原理梳理

    <老饼讲解机器学习>http://ml.bbbdata.com/teach#108 目录 一. 学习决策树原理的顺序 二.CART分类树 (一)分类树模型结构 (二).分类树构建过程 (二 ...

  6. 决策树-CART回归树

    1.什么是CART? CART,又名分类回归树,是在ID3的基础上进行优化的决策树,学习CART记住以下几个关键点: (1)CART既能是分类树,又能是分类树: (2)当CART是分类树时,采用GIN ...

  7. 分类算法之决策树CART算法

    1. CART算法的认识 Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实现,通常决策树主要有三种实现,分别是ID3算法,C ...

  8. 02-23 决策树CART算法

    文章目录 决策树CART算法 决策树CART算法学习目标 决策树CART算法详解 基尼指数和熵 CART算法对连续值特征的处理 CART算法对离散值特征的处理 CART算法剪枝 生成剪枝后的决策树 选 ...

  9. 决策树CART算法、基尼系数的计算方法和含义

    决策树CART算法--基尼系数 决策树的CART算法使用基尼系数来选择划分属性.一个数据集的纯度可以用基尼系数来度量 Gini(D)=∑k=1∣y∣∑k′≠kpkpk′=1−∑k=1∣y∣pk2\be ...

  10. 机器学习第五篇:详解决策树-CART算法

    01|前言: 本篇接着上一篇决策树详解,CART是英文"classification and regression tree"的缩写,翻译过来是分类与回归树,与前面说到的ID3.C ...

最新文章

  1. 腾讯/字节/华为/旷视 2022届实习面经—计算机视觉方向
  2. open AI 在DOTA 5v5 比赛中战胜职业选手
  3. IBM等创建开放虚拟化联盟对抗VMware
  4. 18、Page Object 设计模式
  5. Codeforces Global Round 3 A. Another One Bites The Dust
  6. css伪类元素加在元素前,CSS伪类:before在元素之前 :after 在元素之后实例讲解
  7. optionals_Java Optionals获得更具表现力的代码
  8. java 11:数组作为函数参数,数组做为函数返回值
  9. 【翻转整数考虑溢出】LeetCode 7. Reverse Integer
  10. url安全处理函数+php,php常用的url处理函数汇总
  11. 蓝桥杯2020年第十一届C++省赛第四题-蛇形填数
  12. 【渝粤教育】广东开放大学 建筑设备 形成性考核 (33)
  13. WINDOWS访问SAMBA提示没有权限
  14. 图片显示不出时显示默认图片
  15. 淘宝API 优惠券查询
  16. 字符串匹配算法 之 Aho-Corasick
  17. dmitry -iwnse yuming
  18. Github-谷歌插件gitzip(加速器-不用再忍受几十kb/s的煎熬了)
  19. 蝴蝶效应、青蛙现象、鳄鱼法则
  20. 【Debug】UserWarning: size_average and reduce args will be deprecated, please use reduction=‘sum‘

热门文章

  1. 拼多多数据分析工具有哪些?拼多多数据分析工具介绍
  2. 史上最后一位数学全才——庞加莱
  3. Charles代理设置教程
  4. linux qt 屏幕亮度,调整14.04.1 屏幕亮度
  5. 电容与晶振电容的计算方式
  6. Word2vec 模型构建及可视化
  7. Linux基础命令:awk
  8. wdr7660虚拟服务器设置,TP-LINK WDR7660用手机怎么设置?
  9. java的泛型方法_Java中的泛型方法
  10. ​公司靠的住么 - 携程做四休三