机器学习之CART树

2023-11-08

1、Cart树介绍

分类回归树(CART,Classification And Regression Tree)算法是一种决策树分类方法。
它采用一种二分递归分割的技术,分割方法采用基于最小距离的基尼指数估计函数,将当前的样本集分为两个子样本集,使得生成的的每个非叶子节点都有两个分支。因此,CART算法生成的决策树是结构简洁的二叉树。
其核心思想与ID3和C4.5相同,主要的不同处在于CART在每一个节点上都采用二分法,即每个节点都只能有两个子节点,最后构成的是二叉树。
Cart算法步骤:
1.决策树的生成:基于训练数据集生成决策树,生成的决策树要尽量大。
2.决策树的剪枝:用验证数据集对以生成的树进行剪枝并选择最优子树。这时用损失函数最小作为剪枝标准。

2、Cart树生成

决策树的生成就是递归地构建二叉决策树的过程,对回归树用平方误差最小准则,对分类树用基尼指数最小化原则,进行特征选择,生成二叉树。

3、回归树

如果目标是连续变量,则是Regression Tree回归树。CART树是二叉树,不像多叉树那样形成过多的数据碎片。
对于连续变量X(x1…xn)如何处理?
首先将值排序,分别取其两相邻值的平均值点作为分隔点,将树一分成左枝和右枝,不断扫描,进而判断最佳分割点。特征值小于分裂值就走左子树,或者就走右子树。

下面从数学层面做推导:
假设X与Y分别为输入和输出变量,并且Y是连续变量,给定训练数据集:
在这里插入图片描述

考虑如何生成回归树。
一个回归树对用着一个特征空间的一个划分及在划分单元上的是输出值。假设已输入特征空间划分为M个单元R1,R2…Rm,并且在每个单元上有一个固定的输出类别Cm,于是我们把回归树表示为:
在这里插入图片描述

损失函数:
在这里插入图片描述

表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。我们考虑特征空间的第m个单元上的的最优值,它是上的所有输入实例对应输出的的均值:(连续值通常的最优值都是取均值)
在这里插入图片描述

问题是怎么样对输入空间进行划分,我们采用启发式的方法;选择第j个变量和它取的值s,作为切分变量(splitting variable)和切分点(splitting point),并定义两个区域:
在这里插入图片描述
然后我们需要寻求切分变量j和最有优切分点s,求解如下方程:
在这里插入图片描述
对固定输入变量j可以寻找最优切分点s:
在这里插入图片描述
遍历所有的输入变量,找到最优的切分变量j,构成一个对(j,s),依次将输入空间划分为两个区域。
接着对每个区域重复上述过程,直到满足停止条件为主。这样就生成了一颗回归树,也称为最小二乘回归树(least square regression tree)。
为什么是平均值?
均方误差的目标函数最优值(取定值)是均值
在这里插入图片描述

4、分类树

4.1 分类树原理

如果目标变量是离散变量,则是classfication Tree分类树。
分类树是使用树结构算法将数据分成离散类的方法。
(1) 分类树两个关键点:
将训练样本进行递归地划分自变量空间进行建树
用验证数据进行剪枝。
(2)对于离散变量X(x1…xn)处理:
分别取X变量各值的不同组合,将其分到树的左枝或右枝,并对不同组合而产生的树,进行评判,找出最佳组合。如果只有两个取值,直接根据这两个值就可以划分树。取值多于两个的情况就复杂一些了,如变量年纪,其值有“少年”、“中年”、“老年”,则分别生产{少年,中年}和{老年},{上年、老年}和{中年},{中年,老年}和{少年},这三种组合,最后评判对目标区分最佳的组合。因为CART二分的特性,当训练数据具有两个以上的类别,CART需考虑将目标类别合并成两个超类别,这个过程称为双化。这里可以说一个公式,n个属性,可以分出(2^n-2)/2种情况。

4.2 分类树算法步骤

CART分类树生成算法:
输入:训练数据集D,停止计算的条件;
输出:CART决策树
根据训练数据集,从根节点开始,递归地对每个节点进行以下操作,构建二叉决策树:
(1)设结点的训练数据集为D,计算现有特征对该数据集的基尼指数,此时对每一个特征A,对其可能取得每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1和D2两部分,利用集合的基尼指数公式计算A=a的基尼指数。
在这里插入图片描述
(2)在所有可能的特征A(切分变量)以及他们的所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依照最优特征和最优切分点,从现结点生成两个子节点,将训练数据集依特征分配到两个子节点中去。
(3)对两个子节点递归地调用(1),(2),直到满足停止条件。
(4)生成CART决策树。

4.3 案例

在这里插入图片描述
应用上述数据集,应用CART算法生成决策树。
分析:首先计算各特征的基尼指数,选择最优特征以及其最优切分点。我们以A1,A2,A3,A4表示年龄、有工作、有自己的房子和信贷4个特征,并以1,2,3表示年龄的值为青年、中年、老年,以1、2表示有工作和有自己的房子的值为是和否,以1、2、3表示信贷情况的值为非常好、好和一般。
求特征A1的基尼指数:
在这里插入图片描述
优于Gini(D,A1=1)和Gini(D,A1=3)相等,且最小,所以A1=1和A1=3都可以选作最优切分点。
求特征A2和A3的基尼指数:
在这里插入图片描述
由于A2和A3只有一个切分点,所以他们就是最优切分点。
求解特征4的基尼指数:
在这里插入图片描述
Gini(D,A4=3)最小,所以A4=3为A4的最优切分点。
在A1,A2,A3,A4几个特征中,Gini(D,A3=1)=0.27最小,所以选择A3为最优特征,A3=1为其最优切分点。于是根节点生成两个子节点,一个是叶节点,对另一个结点继续使用以上方法在A1,A2,A3中选择最优特征及其最优切分点,结果是A2=1,依次计算得知,所有结点都是叶节点。
该例子按照CART算法和ID3算法生成的决策树完全一致的。下图我们只拿A3和A2作为最优划分来切分数据集。
在这里插入图片描述

5、Cart树总结

创建分类树递归过程中,CART每次都选择当前数据集中具有最小Gini信息增益的特征作为结点划分决策树。ID3算法和C4.5算法虽然在对训练样本集的学习中可以尽可能多地挖掘信息,但其生成的决策树分支多、规模较大,CART算法的二分法可以简化决策树的规模(叶子结点个数),提高生成决策树的效率。对于连续特征,CART也是采取和C4.5同样的方法处理。为了避免过拟合(Overfitting),CART决策树需要剪枝(后剪枝)。预测过程当然也就十分简单,根据产生的决策树模型,延伸匹配特征值到最后的叶子节点即得到预测的类别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习之CART树 的相关文章

  • WSL安装教程

    wsl安装教程 引言 前期准备工作 安装wsl 第一步 第二步 检测系统版本 第三步 确定虚拟机特性 第四步 下载Linux内核的更新包 第五步 设置WSL 2作为默认版本 第六步 选择Linux发行版本并设置Linux账号 小TIPS 引
  • CocoaPods导入第三方库,提示找不到头文件的解决方法

    最近一直在了解MVVM架构模式 也知道了ReactiveCocoa框架对MVVM实现的便利与优雅 但是CocoaPods导入ReactiveCocoa框架后 却出现一个问题 就是引入头文件的时候说找不到头文件 如下图 解决方法如下 1 找到
  • Fragment详解

    Fragment有自己的生命周期 Fragment依赖于Activity Fragment通过getActivity 可以获取所在的Activity Activity通过FragmentManager的findFragmentById 或f

随机推荐

  • QT5.15以及QT VS TOOL安装教程

    QT5 15以及QT VS TOOL安装教程 1 QT5 15下载安装教程 点击这个链接 https download qt io 在official release online installers目录下选择exe文件下载windows
  • vue重新进页面重新加载mounted或者created中的内容

    vue的项目中 如果再次进入当前页面需要重新加载mounted方法可以使用 activated 这个方法内就可以执行需要进入页面重新加载的方法来替代mounted或者created方法 这样就可以满足不重新加载页面就可以直接将方法重新执行一
  • 打印机错误0x00000bc4的解决办法

    共享打印机在使用过程中难免会出现一些问题 比如连接共享打印机错误 提示代码0x00000bc4 这该如何解决 共享打印机出现问题是件非常麻烦的事 下面就来看看小编整理的解决办法吧 Win11连接共享打印机错误0x00000bc4解决方法 1
  • RabbitMQ:work结构

    gt 只需要在消费者端 添加Qos能力以及更改为手动ack即可让消费者 根据自己的能力去消费指定的消息 而不是默认情况下由RabbitMQ平均分配了 生产者不变 正常发布消息到默认的exchange gt 消费者指定Qoa和手动ack 生产
  • 2023Web前端面试题及答案(一)

    答案仅供参考 每人的理解不一样 文章目录 1 简单说一说事件流原理 事件流 1 事件流是指页面 接收事件的顺序 2 假设页面中的元素都具备相同的事件 并且这些个元素之间是相互嵌套的 关系 3 那么在触发一个元素的事件时候 会触发其他的元素
  • 华为od机考真题-HJ105-记负均正II(较难)

    非负数缓存 data lst 负数个数 count 0 while 1 try data int input if data gt 0 data lst append
  • 卷积核大小不一样的卷积

    这种不是33而是51的 参考这个https blog csdn net qq 37541097 article details 102926037 也就是说把中间写成 3 5 就可以了
  • Open3D:Win10 + VS2017配置Open3D(C++、python)

    累了就要打游戏 2020 08 25 15 13 10 3350 收藏 25 分类专栏 Open3D 文章标签 点云 Open3D C 版权 Open3D 专栏收录该内容 5 篇文章1 订阅 订阅专栏 20200825 今天七夕 呱呱呱 O
  • 苹果开发者账号申请教程

    只有苹果开发者账号才能上架App Store 苹果开发者需要年费 是苹果公司收的 公司 政府和企业账号申请比较复杂 如果不想麻烦 或没有visa银行卡 可以联系他们技术代申请 如果只是安装ios应用到自己手机测试 现在只需要注册一个普通的苹
  • CSDN自带编辑器语法

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Sma
  • FlatBuffers使用简介

    tools flatbuffers opensource 概述 Google在今年6月份发布了跨平台序列化工具FlatBuffers 提供了C Java Go C 接口支持 这是一个注重性能和资源使用的序列化类库 相较于Protocol B
  • POI高级使用法则

    各位兄台 想必经过昨日好梦 早已精神饱满 请允许小编接听上回 讲解POI进阶功法 昨日奇闻 POI搞定电子表格 我们经过昨日的学习 懂得了POI基本的读写操作 今日让我们进一步看一下POI的高级使用方法 壹 我们知道对于Excel是含有03
  • 论文笔记:Mystique: Efficient Conversions for Zero-Knowledge Proofs with Applications to Machine Learnin

    论文笔记 Mystique Efficient Conversions for Zero Knowledge Proofs with Applications to Machine Learning 论文介绍 ZK在人工智能上的应用讨论 现
  • Sqlite3 导出/导入SQL语句

    前言 Sqlite3 提供了较轻便的数据库操作 速度非常快 也比较稳定 在嵌入式产品中用的非常广泛 但嵌入式产品往往由于不稳定性因素非常多 备份是必不可少的 直接拷贝 db 文件并不是太好的主意 所以引出本文所要讲的主题 Sqlite3 导
  • QAC的CLI 转载文章

    2 静态分析执行 为了方便后续将鸿蒙的静态分析过程部署到持续集成平台上 本文以命令行的方式进行静态分析操作的演示 具体步骤如下 创建QAC工程 命令如下 qacli admin qaf project config qaf project
  • pycharm编写的时候出现的提示框如何关闭

    pycharm编写的时候出现的提示框如何关闭 问题描述 pycharm编写的时候出现的提示框如何关闭 问题原因 错误分析 这个要去Pycharm的 setting里面设置一下 解决方法 pycharm提示框关闭方法 点击settings进入
  • Python描述符(descriptor)解密 属性(property)、以及装饰器(decorator)

    Python描述符 descriptor 解密 慕容老匹夫 2014 年 3 月 27 日 1 条评论 标签 descriptor Python 描述符 25 本文由 极客范 慕容老匹夫 翻译自 Chris Beaumont 欢迎加入极客翻
  • 计算机考研复试汇总

    一 中英文面试 1 为什么考研究生呢 why do you take the postguaduate entrance exanmination 我认为有一下几点 第一 我的本科专业就是计算机科学与技术 已经学习了4年计算机培养出浓厚的兴
  • ES6解构

    ES6解构 1 解构对象案例 var obj a 1 b 2 const a b obj console log a 1 console log b 2 var obj a 1 b 2 const c b obj console log c
  • 机器学习之CART树

    CART树 1 Cart树介绍 2 Cart树生成 3 回归树 4 分类树 4 1 分类树原理 4 2 分类树算法步骤 4 3 案例 5 Cart树总结 1 Cart树介绍 分类回归树 CART Classification And Reg