决策树之CART(分类回归树)详解

article/2025/10/31 4:36:51

决策树之CART(分类回归树)详解

  • 主要内容
    • CART分类回归树简介
    • CART分类回归树分裂属性的选择
    • CART分类回归树的剪枝

1、CART分类回归树简介
  CART分类回归树是一种典型的二叉决策树,可以做分类或者回归。如果待预测结果是离散型数据,则CART生成分类决策树;如果待预测结果是连续型数据,则CART生成回归决策树。数据对象的属性特征为离散型或连续型,并不是区别分类树与回归树的标准,例如表1中,数据对象 xi x i 的属性A、B为离散型或连续型,并是不区别分类树与回归树的标准。作为分类决策树时,待预测样本落至某一叶子节点,则输出该叶子节点中所有样本所属类别最多的那一类(即叶子节点中的样本可能不是属于同一个类别,则多数为主);作为回归决策树时,待预测样本落至某一叶子节点,则输出该叶子节点中所有样本的均值。

表1
表1

2、CART分类回归树分裂属性的选择
   2.1 CART分类树——待预测结果为离散型数据
  选择具有最小 Gain_GINI G a i n _ G I N I 的属性及其属性值,作为最优分裂属性以及最优分裂属性值。 Gain_GINI G a i n _ G I N I 值越小,说明二分之后的子样本的“纯净度”越高,即说明选择该属性(值)作为分裂属性(值)的效果越好。
  对于样本集 S S GINI计算如下:
这里写图片描述
其中,在样本集 S S 中,Pk表示分类结果中第 k k 个类别出现的频率。
对于含有N个样本的样本集 S S ,根据属性A的第 i i 个属性值,将数据集S划分成两部分,则划分成两部分之后, Gain_GINI G a i n _ G I N I 计算如下:
这里写图片描述
其中, n1 n 1 n2 n 2 分别为样本子集 S1 S 1 S2 S 2 的样本个数。
  对于属性 A A ,分别计算任意属性值将数据集划分成两部分之后的Gain_GINI,选取其中的最小值,作为属性 A A 得到的最优二分方案:
这里写图片描述

对于样本集S,计算所有属性的最优二分方案,选取其中的最小值,作为样本集 S S 的最优二分方案:
这里写图片描述
所得到的属性A及其第 i i 属性值,即为样本集S的最优分裂属性以及最优分裂属性值。
   2.2 CART回归树——待预测结果为连续型数据
  区别于分类树,回归树的待预测结果为连续型数据。同时,区别于分类树选取 Gain_GINI G a i n _ G I N I 为评价分裂属性的指标,回归树选取 Gain_σ G a i n _ σ 为评价分裂属性的指标。选择具有最小 Gain_σ G a i n _ σ 的属性及其属性值,作为最优分裂属性以及最优分裂属性值。 Gain_σ G a i n _ σ 值越小,说明二分之后的子样本的“差异性”越小,说明选择该属性(值)作为分裂属性(值)的效果越好。
  针对含有连续型预测结果的样本集 S S ,总方差计算如下:
σ(S)=(ykμ)2
其中, μ μ 表示样本集 S S 中预测结果的均值,yk表示第 k k 个样本预测结果。
对于含有N个样本的样本集 S S ,根据属性A的第 i i 个属性值,将数据集S划分成两部分,则划分成两部分之后, Gain_σ G a i n _ σ 计算如下:
这里写图片描述

  对于属性 A A ,分别计算任意属性值将数据集划分成两部分之后的Gain_σ,选取其中的最小值,作为属性 A A 得到的最优二分方案:
这里写图片描述

对于样本集S,计算所有属性的最优二分方案,选取其中的最小值,作为样本集 S S 的最优二分方案:
这里写图片描述
所得到的属性A及其第 i i 属性值,即为样本集S的最优分裂属性以及最优分裂属性值。
3、CART分类回归树的剪枝
  由于决策树的建立完全是依赖于训练样本,因此该决策树对训练样本能够产生完美的拟合效果。但这样的决策树对于测试样本来说过于庞大而复杂,可能产生较高的分类错误率。这种现象就称为过拟合。因此需要将复杂的决策树进行简化,即去掉一些节点解决过拟合问题,这个过程称为剪枝。
  剪枝方法分为预剪枝和后剪枝两大类。预剪枝是在构建决策树的过程中,提前终止决策树的生长,从而避免过多的节点产生。预剪枝方法虽然简单但实用性不强,因为很难精确的判断何时终止树的生长。后剪枝是在决策树构建完成之后,对那些置信度不达标的节点子树用叶子结点代替,该叶子结点的类标号用该节点子树中频率最高的类标记。后剪枝方法又分为两种,一类是把训练数据集分成树的生长集和剪枝集;另一类算法则是使用同一数据集进行决策树生长和剪枝。常见的后剪枝方法有CCP(Cost Complexity Pruning)、REP(Reduced Error Pruning)、PEP(Pessimistic Error Pruning)、MEP(Minimum Error Pruning)。其中,悲观错误剪枝法PEP(Pessimistic Error Pruning)在 “决策树之C4.5算法详解”中有详细介绍,感兴趣的小童鞋可以了解学习。这里我们详细介绍CART分类回归树中应用最广泛的剪枝算法——代价复杂性剪枝法CCP(Cost Complexity Pruning)。
  代价复杂性剪枝法CCP(Cost Complexity Pruning)主要包含两个步骤:(1)从原始决策树 T0 T 0 开始生成一个子树序列 {T0,T1,...,Tn} { T 0 , T 1 , . . . , T n } ,其中, Ti+1 T i + 1 Ti T i 产生, Tn T n 为根节点。(2)从第1步产生的子树序列中,根据树的真实误差估计选择最佳决策树。
   CCP剪枝法步骤(1)
  生成子树序列 {T0,T1,...,Tn} { T 0 , T 1 , . . . , T n } 的基本思想是从 T0 T 0 开始,裁剪 Ti T i 中关于训练数据集误差增加最小的分枝来得到 Ti+1 T i + 1 。实际上,当1棵树 T T 在节点t处剪枝时,它的误差增加直观上认为是 R(t)R(Tt) R ( t ) − R ( T t ) ,其中, R(t) R ( t ) 为在节点 t t 的子树被裁剪后节点t的误差, R(Tt) R ( T t ) 为在节点 t t 的子树没被裁剪时子树Tt的误差。然而,剪枝后, T T 的叶子数减少了L(Tt)1,其中, L(Tt) L ( T t ) 为子树 Tt T t 的叶子数,也就是说, T T 的复杂性减少了。因此,考虑树的复杂性因素,树分枝被裁剪后误差增加率由下式决定:
这里写图片描述
其中,R(t)表示节点 t t 的子树被裁剪后节点t的误差, R(t)=r(t)p(t) R ( t ) = r ( t ) ∗ p ( t ) r(t) r ( t ) 是节点 t t 的误差率,p(t)是节点 t t 上的样本个数与训练集中样本个数的比例。R(Tt)表示节点 t t 的子树没被裁剪时子树Tt的误差,即子树 Tt T t 上所有叶子节点的误差之和。
   Ti+1 T i + 1 就是选择 Ti T i 中具有最小 α α 值所对应的剪枝树。
   例如:图1中 ti t i 表示决策树中第 i i 个节点,A、B表示训练集中的两个类别,A、B之后的数据表示落入该节点分别属于A类、B类的样本个数。
这里写图片描述

图1,决策树中训练样本总个数为80。对于节点t4,其中,A类样本46个,B类样本4个,根据大多数原则,则节点 t4 t 4 中样本为A类,故节点 t4 t 4 的子树( t8 t 8 t9 t 9 )被裁剪之后 t4 t 4 的误差为: 4505080=480 4 50 ∗ 50 80 = 4 80 。节点 t4 t 4 的子树( t8 t 8 t9 t 9 )被裁剪之前 t4 t 4 的误差为: 1454580+25580=380 1 45 ∗ 45 80 + 2 5 ∗ 5 80 = 3 80 。故 α(t4)=48038021=0.0125 α ( t 4 ) = 4 80 − 3 80 2 − 1 = 0.0125 。类似过程,依次得到所有节点的误差增加率,如表2:
表2
这里写图片描述

  从表2可以看出,在原始树 T0 T 0 行,4个非叶节点中 t4 t 4 α α 值最小,因此,裁剪 T0 T 0 t4 t 4 节点的分枝得到 T1 T 1 ;在 T1 T 1 行,虽然 t2 t 2 t3 t 3 α α 值相同,但裁剪 t2 t 2 的分枝可以得到更小的决策树,因此, T2 T 2 是裁剪 T1 T 1 中的 t2 t 2 分枝得到的。
   CCP剪枝法步骤(2)
  如何根据第1步产生的子树序列 {T0,T1,...,Tn} { T 0 , T 1 , . . . , T n } ,选择出1棵最佳决策树是CCP剪枝法步骤(2)的关键。通常采用的方法有两种,一种是V番交叉验证(V-fold cross-validation),另一种是基于独立剪枝数据集。此处不在过分赘述,感兴趣的小童鞋,可以阅读参考文献[1][2][3]等。

参考文献
[1] 魏红宁. 决策树剪枝方法的比较[J]. 西南交通大学学报, 2005, 40(1):44-48.
[2] 张宇. 决策树分类及剪枝算法研究[D]. 哈尔滨理工大学, 2009.
[3] Breiman L, Friedman J H, Olshen R, et al. Classification and Regression Trees[J]. Biometrics, 1984, 40(3):358.


http://chatgpt.dhexx.cn/article/dTKpfs0h.shtml

相关文章

CART模型

(一)简介 1.CART(classification and regression tree)是应用广泛的决策树学习方法,既可以用于分类也可以用于回归; 2.CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并…

免费前端网站页面模板

分享几个好的前端的免费模板的网站链接: 免费HTML5链接 网站展示: 网站模板链接2 模板网站3 网站展示: 精品插件以及模板 展示如下:

简洁实用的前端模板

好用的前端模板: 给兄弟萌推荐一个好用的前后端分离里面用到的前端的模板项目,使用Vue2.xElementUI写的。是一个非常可以值得借鉴的后台管理系统的前端模板。需要的同学可以下载之后,在此基础上修改,然后用到自己的项目中。 git…

web前端基础——背景图片

作用:设置背景图片大小 语法:background-size: 宽度 高度 取值: 取值场景数字px简单方便,常用百分比相对于当前盒子自身的宽高百分比contain包含,将背景图片等比例缩放,直到不会超出盒子的最大范围cover…

html+css+js实现的前端模板

代码功能 实现一个为用户提供能够快速制作主流表情包的网站。提供丰富的模板和在线自定义图片功能。可以对图片添加文字、水印和图片等功能。丰富的动画效果搭配颜值的前端模板,可以用来学习学习。 话不多说,上图片 有需要的可以去下载。 https://do…

前端案例:飞机大战( js+dom 操作,代码完整,附图片素材)

目录 一、案例效果 二、实现思路 三、完整代码详细注释 四、涉及要点 五、案例素材 一、案例效果 二、实现思路 创建游戏背景板;创建我方战机,鼠标进入游戏面板后其随鼠标轨迹运动; onmousemove创建子弹,让子弹周期性的在战…

博客前端模板

文章目录 序言效果展示菜单栏实现内容布局底部代码 序言 一直后端开发写接口,时间久了,把前端知识忘得一干二净了。最近公司项目不是很忙,想写一个博客练练手。模仿别人博客用bootstrap写了一个博客模板记录下。 效果展示 首页大屏效果&am…

前端设计类网站汇总

设计前端类网站汇总 一、素材类 1、图片 其实国内对图片版权保护这块的意识不是很够,在免费的素材库和收费素材库都能找到同一张图片,但作者署名却都不一样。所以小编现在基本不用国内这些图库网,跟大家推荐几个免费又没有版权纠纷的图库网站…

前端的你平时都在哪找免费的可商业用的图片素材?

周末好!有段时间没有更新了,最近遇到找素材的苦恼,所以总结了一篇文章。前端中少不了与素材打交道,UI设计就更用说了,但能白嫖就白嫖,嘿嘿!!!下面推荐一下有关能免费的可…

三个漂亮的网页登录页面源码及素材——可用于前端初学者练习HTMLCSS

注:这三个登录页面涉及到的图片素材可自行寻找,字体图标素材可以在阿里字体图标库获取(https://www.iconfont.cn/home/index?spma313x.7781069.1998910419.2),如需原版素材可联系作者QQ(3416252112&#x…

前端素材库网站集合——网站集合

UI矢量图库 1.摄图网 https://699pic.com/ https://699pic.com/tupian/tubiao.html?from215 图片素材图库 1.图库 https://picsum.photos/ 随机获取图片&#xff1a;&#xff08;每次刷新都可以获取一个新的图片&#xff09; http://picsum.photos/360/460?random1<d…

分享三个免费的前端模板网站

1、模板之家 网页模板,网站模板,DIVCSS模板,企业网站模板下载 http://www.cssmoban.com/ 2、站长之家 HTML5模板 HTML5模板免费下载 https://sc.chinaz.com/tag_moban/html5.html 3、jQuery之家 自由分享jQuery、html5、css3的插件库 http://www.htmleaf.com/

前端好用的素材网站分享

前端设计推荐的一些网站&#xff09; 1.[站酷](https://www.zcool.com.cn/)2.[ColorPalette](https://arco.design/palette/list)3.[unDraw](https://undraw.co/illustrations)4.[OUCH](https://icons8.cn/illustrations/style--pale)&#xff08;应该是叫这个吧&#xff09;5.…

前端常用素材网站整理

最近整理了网页收藏夹&#xff0c;将平时遇到与前端相关的素材网站归置归置 注意&#xff1a;有的下载模版需要充值 PPChart 让图表更简单 echarts图表案例 很全 啥图都有 http://www.ppchart.com/#/ ———————————————————————————————————…

Redis可视化管理工具推荐

AnotherRedisDesktopManager 码云地址&#xff1a;https://gitee.com/qishibo/AnotherRedisDesktopManager github地址&#xff1a;https://github.com/qishibo/AnotherRedisDesktopManager/ 很好用。推荐一下。

Redis 管理工具 RedisInsight

Redis 安装好并运行一段时间后&#xff0c;如何清晰的看到 Redis 占了多大内存&#xff0c;有多少个 KEY&#xff0c;所占的网络如何&#xff0c;这个在 RedisInsight 下就是一目了然了&#xff0c;特别方便。 下载也特别简单&#xff0c;到此网站下载你想要的版本就行。 ps&a…

Redis 管理工具 TreeNMS

今日&#xff0c;日月给大家介绍一款redis管理工具TreeNMS.下面我就详细给大家介绍一下treeNMS的安装及各项功能。 1、下载安装 下载地址&#xff1a;http://www.treesoft.cn/dms.html 下载到的是一个zip包&#xff0c;解压到指定的目录即可 windows下&#xff0c;直接双…

在window系统安装reids、并使用Redis可视化工具进行管理

下载地址 https://github.com/tporadowski/redis/releases 选择 Redis-x64-5.0.14.1.msi (微软的安装包 下载 安装好之后 打 开 一 个 cmd 窗 口 使 用 cd 命 令 切 换 目 录 到 安装目录下 D:\Program Files\Redis 执行命令 redis-server.exe redis.windows.conf 接下来…

Redis 可视化工具

Redis 可视化工具 Redis做为现在web应用开发的黄金搭担组合&#xff0c;大量的被应用&#xff0c;广泛用于存储session信息,权限信息&#xff0c;交易作业等热数据。Redis作为业界最好的缓存数据库&#xff0c;过去几年发展很快。相对Memcached&#xff0c;Redis提供了更多种数…

一款可视化的Redis管理工具-Another Redis DeskTop Manager

文章目录 前言项目地址 前言 “ Another Redis DeskTop Manager 是 GitHub 上的一个开源项目&#xff0c;是 Redis 可视化管理的利器&#xff0c;提供在 Windows、MacOS 平台的安装包&#xff0c;体积小&#xff0c;完全免费。” 提供了以可视化的方式管理 Redis 的功能&#…