决策树CART 代价复杂度剪枝
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−maxkp(Ck−t)r(t)=1−\max_{k} p_{(C_k−t)}r(t)=1−maxkp(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),使得:
ming1(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−Tt11
▼step i
- 选择决策树TiT^iTi中的所有节点t(t∈Tit \in T^it∈Ti),使得:
mingi(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−Ttii
▼重复进行,直至只剩下根节点。
▼输出结果
- 决策树序列: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=ming1(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=ming2(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 代价复杂度剪枝相关推荐
- 决策树后剪枝算法(一)代价复杂度剪枝CPP
决策树后剪枝算法(一)代价复杂度剪枝CPP 决策树后剪枝算法(二)错误率降低剪枝REP 决策树后剪枝算法(三)悲观错误剪枝PEP 决策树后剪枝算法(四)最小 ...
- cart算法_机器学习十大算法之一——决策树CART算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第23篇文章,我们今天分享的内容是十大数据挖掘算法之一的CART算法. CART算法全称是Classification ...
- sklearn决策树怎么使用ccp_alpha进行剪枝
本站原创文章,转载请说明来自<老饼讲解-机器学习>ml.bbbdata.com 目录 一.CCP后剪枝是什么 二.如何通过ccp_alpha进行后剪枝 (1) 查看CCP路径 (2)根据C ...
- 决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点
决策树ID3.决策树C4.5.决策树CART.CART树的生成.树的剪枝.从ID3到CART.从决策树生成规则.决策树优缺点 目录
- 决策树CART、ID3、C4.5原理梳理
<老饼讲解机器学习>http://ml.bbbdata.com/teach#108 目录 一. 学习决策树原理的顺序 二.CART分类树 (一)分类树模型结构 (二).分类树构建过程 (二 ...
- 决策树-CART回归树
1.什么是CART? CART,又名分类回归树,是在ID3的基础上进行优化的决策树,学习CART记住以下几个关键点: (1)CART既能是分类树,又能是分类树: (2)当CART是分类树时,采用GIN ...
- 分类算法之决策树CART算法
1. CART算法的认识 Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实现,通常决策树主要有三种实现,分别是ID3算法,C ...
- 02-23 决策树CART算法
文章目录 决策树CART算法 决策树CART算法学习目标 决策树CART算法详解 基尼指数和熵 CART算法对连续值特征的处理 CART算法对离散值特征的处理 CART算法剪枝 生成剪枝后的决策树 选 ...
- 决策树CART算法、基尼系数的计算方法和含义
决策树CART算法--基尼系数 决策树的CART算法使用基尼系数来选择划分属性.一个数据集的纯度可以用基尼系数来度量 Gini(D)=∑k=1∣y∣∑k′≠kpkpk′=1−∑k=1∣y∣pk2\be ...
- 机器学习第五篇:详解决策树-CART算法
01|前言: 本篇接着上一篇决策树详解,CART是英文"classification and regression tree"的缩写,翻译过来是分类与回归树,与前面说到的ID3.C ...
最新文章
- 腾讯/字节/华为/旷视 2022届实习面经—计算机视觉方向
- open AI 在DOTA 5v5 比赛中战胜职业选手
- IBM等创建开放虚拟化联盟对抗VMware
- 18、Page Object 设计模式
- Codeforces Global Round 3 A. Another One Bites The Dust
- css伪类元素加在元素前,CSS伪类:before在元素之前 :after 在元素之后实例讲解
- optionals_Java Optionals获得更具表现力的代码
- java 11:数组作为函数参数,数组做为函数返回值
- 【翻转整数考虑溢出】LeetCode 7. Reverse Integer
- url安全处理函数+php,php常用的url处理函数汇总
- 蓝桥杯2020年第十一届C++省赛第四题-蛇形填数
- 【渝粤教育】广东开放大学 建筑设备 形成性考核 (33)
- WINDOWS访问SAMBA提示没有权限
- 图片显示不出时显示默认图片
- 淘宝API 优惠券查询
- 字符串匹配算法 之 Aho-Corasick
- dmitry -iwnse yuming
- Github-谷歌插件gitzip(加速器-不用再忍受几十kb/s的煎熬了)
- 蝴蝶效应、青蛙现象、鳄鱼法则
- 【Debug】UserWarning: size_average and reduce args will be deprecated, please use reduction=‘sum‘