决策树(三):CART算法

决策树原理对比:ID3、C4.5、CART 3 大算法核心差异与 Scikit-learn 实现 本文深入解析了决策树算法中ID3、C4.5和CART的核心差异,包括信息增益、信息增益率和基尼指数等关键概念,并通过Scikit-learn实现展示了它们的实际应用。文章详细对比了三种算法在连续值处理、缺失值处理和剪枝技术等方面的不同,帮助读者在机器学习项目中做出更优选择。 阅读详情

CART(分类与回归树),也就是说CART算法既可以用于分类,也可以用于回归,它是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法,其也和回归树一样是二叉树。

是CART算法,也是分为:特征选择,树的生成,树的剪枝。其实感觉前两步可以合并为一步,因为树的生成过程中就是不断的进行特征的选择。

李航《统计学习方法》中说,决策树生成阶段,生成的决策树要尽可能的大,也就是生成阶段,模型要复杂。为什么这么说,我觉得因为后面还是剪枝的过程,在复杂的模型上剪枝优化得到最优模型,这是最合理也是最有可能得到最优模型的方式。

1.回归树的生成

回归树的生成方式可以参考我的另一篇文章《决策树(二):回归树和模型树》中的回归树的生成方式,这里不再赘述。

2.分类树的生成

CART算法生成的是二叉树,而分类树适用的是标称型数据,每个特征有好多个特征值,所以怎么生成二叉树是个问题。之前计算分类树某个节点的划分标准的时候是计算某个特征的信息增益,而CART中计算每个特征值的基尼系数,找出基尼系数最小的,即选择最优特征,作为划分值,等于那个特征对应的特征值放到左子树,其余的放到右子树。

假设有K个分类,样本点数据第k类的概率为pk,则概率分布的基尼指数定义为:

所以对于给定的样本集合D,其基尼指数为:

其中Ck是D中属于第k类的样本子集,K是类的个数。

下面一段话及公式是李航书的原来内容,我感觉不太好理解:

如果样本集合D根据特征A是否取某一可能值a被分割成D1和D2两部分,即

则在特征A的条件下,集合D的基尼指数定义为

。

怎么理解上述公式?我们其它文章介绍过,条件信息熵是针对整个特征求的熵,而基尼指数是需要计算某个特征的某个特征值的基尼指数,所以我们这里就不要考虑特征值之间的关系了。假设我们根据特征A的某个特征值a,将整个数据集分为D1和D2两个部分,D1是特征A是a的数据集合,而D2是特征A不是a的集合;|D1|/|D|就是特征A的值是a的数据集个数占总集合个数的比例,|D2|/|D|亦然;再看基尼指数的计算公式Gini(D1)=1-,其中K是集合D1中分类结果的总个数,即有多少种分类结果,相当于Y的个数,|D1|是集合D1中元素的个数,|Ck|是第k个分类中元素的个数;对于D2集合的理解亦同理;

其实从上面我么就可以看出和信息增益算法的区别:信息增益如果选择了某个特征分类,是按照所有兄弟种类分的,而CART算法因为是二叉树,所以会选择某个特征的某个值去分,所以分的子集是特征值是a的分一个子集,特征值不是a的是一个子集。

这里有个容易忽略的点,看李航书中的CART生成算法第(3)步,有这么一句话:对两个子节点递归调用(1),(2),直至满足停止条件。所以说特征值等于a的分出来的子集还是需要进行再切分的;另外书上没有说停止条件,但是前面我们说过生成树尽可能要复杂,可以参考这个条件,怎么复杂我觉得可以自己把握,例如基尼指数都小于某个阈值什么的。

3.CART剪枝

CART算法的第一阶段我们得到的是一个比较复杂的决策树,所以第二步我们就需要对生成的决策树进行剪枝,从而得到泛化能力更强的决策树。

CART剪枝算法会生成好多个子树{T1,T2,T3,…,Tn},然后用交叉验证的方式选出损失最少的决策树,作为最终的决策树。

CART剪枝算法中用到的损失函数,和其它剪枝算法的损失函数的基本表达式是一样的:Cα(T) = C(T)+α|T|,其中C(T)是基本的损失函数,参考决策树生成过程中的误差计算概念,我们可以理解为数据的混乱程度(如基尼指数,信息熵),|T|是树的叶子节点的个数,是模型的复杂度(叶子节点越多,模型越复杂),α>=0是参数,权衡训练数据的拟合程度与模型的复杂程度。

当α固定时,则一定存在一棵树,损失是最小的,用Tα表示;当α较大时,|T|较小的话整体损失就会达到一个较大的值,所以偏向选择模型较简单(叶子节点较少)的模型;当α较小时,|T|取到较大的值,所以偏向选择模型相对复杂(叶子节点较多)的模型。

CART算法对于一个子树来说需要定义两个损失函数:

  1. 对于树内部的任意节点t,以t为单节点数的损失函数是:,这个损失函数是假设对子树进行剪枝后,就只保留一个这个子树的根节点的损失函数。
  2. 以t为根节点的子树Tt的损失函数是:,这个损失函数是假设不剪枝的损失函数。

当α=0及α充分小时,有不等式,当α增大时,在某一α有。李航《统计学习方法》一书上是这么写的,为什么说这么说,没太明白。以下是个人理解:

就拿以t为根节点的子树来说,所有分到t节点的样本,对于这个子树来说就是这个子树的所有样本,也就是还没有开始往下分类的样本。对于这个子树来说,较小的α偏向选择较复杂的模型,也就是有一定的叶子节点(非根节点t),那么就是对于根节点t来说就是有分支结构的,那么就是更加细分了,整体损失就更小了,就会有;当α变大的时候,因为根节点的|T|=1,而这颗子树的|T| > 1,所以子树的整体损失增加较快,α到达一定程度的时候,就会有,此时由于剪枝前后损失相同,并且只有根节点t,模型偏向简单,所有只保留根节点比保留以t为根节点的子树更加可取,就进行剪枝。

所以根据以上等式,我们可以得到

我们要保证α从小到大增加,所以对CART第一阶段生成的树的每个节点计算上述值,然后选择最小的α,然后将其对应的子树剪枝,得到子树T1,然后在T1基础上再重复上述过程,直到剪枝到根节点。最后得到一系列子树T1,T2,T3,…,Tn并且对应一些列参数α1,α2,α3,…,αn。得到这些子树后,采用交叉验证的方式在一系列子树中选取最优子树Tα。

 

通过以上过程,我们可以看到CART剪枝比一般剪枝算法还是复杂一些的;最起码普通的剪枝算法,不需要生成那么多的树,只需要在一棵树上不断计算剪枝前后的误差,然后决定是否剪枝,思路也相对好理解,CART剪枝就不那么好理解了。

 

 

机器学习之决策树CART算法 接上期: 文章目录一、理论知识1.0、特征选择:基尼指数1.1、决策树的生成1.2、CART剪枝二、python实战 一、理论知识 CART算法是给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假设决策树是二叉树,内部节点取值为“是”或“否”。这样的决策树等价于递归地二分每个特征,将特征空间划分为有限个单元,并在这些单元上确定预测的概率分布即输入给定的条件下输出的条件概率分布。 1.0、特征选择:基尼指数 分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点。 分类问题中假 阅读详情

相关推荐

决策树--CART算法

文章目录1.Crat算法(分类树)1.1基尼系数1.2连续型特征处理1.3CART算法1.5 举例说明1.5 代码2.回归树 1.Crat算法(分类树) 1.1基尼系数 CART是基于基尼(Gini)系数最小化准则来进行特征选择,生成二叉树。 基尼系数代表了模型得不纯度,基尼系数越小,则不纯度越低,特征越好。这点和信息增益是相反的。 在分类问题中,假设有K各类别,第k个类别概率为pkp_{k}pk​,则基尼系数的表达式为: Gini(D)=1−∑k=1Kpk2Gini(D)=1-\sum_{k=1}^{K}

m0_51456926的博客 1万+

决策树损失函数

决策树损失函数一.决策树的损失函数二.如何理解 在学习决策树的过程中,会存在损失函数。损失函数是什么呢?如何理解? 一.决策树的损失函数 为了避免出现过拟合的现象,我们要对决策树进行剪枝。 决策树的剪枝类似一种参数正则化的过程,其选择正则化的参数是树的叶子节点的个数。 设决策树 T 的叶子节点个数为 |T|,t 是树 T 的叶子节点,该叶节点有 Nt 个样本点,其中 k 类的样本点有 Ntk 个,...

weixin_45834072的博客 2456

决策树之CART算法

在之前介绍过决策树的ID3算法实现,今天主要来介绍决策树的另一种实现,即CART算法。   Contents      1. CART算法的认识    2. CART算法的原理    3. CART算法的实现     1. CART算法的认识      Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实

ACdreamer 8万+

机器学习基础 - 决策树算法

机器学习基础 - 决策树算法 1. 本章的主要学习内容为 决策树:决策树、信息熵与最优划分、基尼系数、CART 实现:决策树实现 2. 初始决策树 决策树是一个非常有意思的模型,它的建模思路是尽可能模拟人做决策的过程。因此决策树几乎没有任何抽象,完全通过生成决策规则来解决分类和回归问题。因为它的运行机制能很直接地被翻译成人类语言,即使对建模领域完全不了解的非技术人员也能很好地理解它。因此在学术...

weixin_45516016的博客 1641

决策树—ID3、C4.5、CART

目录 一、决策树模型与学习 1、决策树模型 2、决策树学习     二、特征选择 1、信息增益 2、信息增益率 三、决策树的生成 1、ID3算法 2、C4.5算法 3、CART算法 四、决策树停止分裂的条件 五、连续值和损失值处理 决策树(decision tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程,可以认为...

choven_meng的博客 2万+

数据挖掘十大算法之CART详解

在2006年12月召开的 IEEE 数据挖掘国际会议上,与会的各位专家选出了当时的十大数据挖掘算法( top 10 data mining algorithms ),本博客的十大数据挖掘算法系列文章已经介绍了其中的六个,本文主要讨论CART,即分类回归树(Classification And Regression Tree),一个具体的例子将帮助大家更好地理解相关内容

白马负金羁 5万+

决策树的损失函数公式详细说明和例子说明

详细介绍了决策树的损失函数的每个部分,加权的经验熵衡量了整个决策树的分类效果和正则化项控制树的复杂度,通过一个分类的例子一步步计算出了损失函数值。

彬彬侠的博客 2120

告别wx.showActionSheet:微信小程序自定义底部弹框的5种实现方式对比

本文深入对比了微信小程序中替代原生wx.showActionSheet的五种自定义底部弹框实现方案。从基础视图层模拟到组件化封装,再到利用第三方UI库、CSS3动画及Page-Meta组件,详细分析了各方案的优缺点与适用场景,旨在帮助开发者根据项目需求,选择最合适的方案以实现高度定制化、交互丰富的弹框效果。

weixin_29005499的博客 190

CART剪枝以及决策树剪枝中α相关问题

CART剪枝以及决策树剪枝中α相关问题CART剪枝过程问题1:$g(t)$的含义:问题2:为什么选择$g(t)$最小的$T_t$进行剪枝?问题3:剪枝过程中选取的$α$为什么一定是递增的?问题4:为什么CART剪枝过程中的子树序列$T_1,T_2,…,T_n$分别是区间$α∈[α_i , α_{(i+1)} )$的最优子树?问题5:$α$在一般决策树剪枝过程中的意义 CART剪枝过程 CART的剪...

球场恶汉的博客 1746

车企常用架构、通信设计、需求管理工具全汇总

车辆技术是个系统工程,比较大,需要多人协作。“协作”往往需要工具参与,才能保证协作过程的高效、有条不紊。 【文章系转载,出处见图片水印】 今天我们就来捋一捋汽车行业常用的架构、网络开发工具~ Preevision 大名鼎鼎的Preevision,来自大名鼎鼎的Vector。 个人觉得,它是Vector公司最牛逼、最神秘、最高高在上的产品,犹如空谷回响、千里传音,但是很少看到它真正落地。 它最引以为傲的,或许是在给客户做介绍的时候,说“我们甚至能够精确到每一根线束的长度”,但是反观.

MaveDiao的博客 3484

uniapp原生安卓插件开发之路

声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正

Jone's Area 1万+

cart算法_决策树学习笔记(三):CART算法,决策树总结

点击上方“Python数据科学”,选择“星标公众号”关键时刻,第一时间送达!作者:xiaoyu介绍:一个半路转行的数据挖掘工程师推荐导读:本篇为树模型系列第三篇,旨在从最简单的决策树开始学习,循序渐进,最后理解并掌握复杂模型GBDT,Xgboost,为要想要深入了解机器学习算法和参加数据挖掘竞赛的朋友提供帮助。▍前情回顾前两篇介绍了决策树主要的三个步骤,以及ID3和C4.5算法:决策树学...

weixin_39938935的博客 1281

FREERTOS+LWIP+IAP实现TCP、HTTP、网页访问并固件升级、更新配置 (三)lwip实现httpd服务并在web访问

在前两篇文章中配置freeRTOS和,并实现了TCP、UDP的通信协议,现在终于轮到重头戏lwip的httpd服务,LWIP官方例程中是有很多自带的网页的,但是远远不够满足实际项目的使用需求,因此我也是踩了很多坑,从前端网页制作,到网络通信的实现,到后端数据处理,从头开始学起,也是学习到了很多没接触过的东西,本章将搭建LWIP的HTTP服务使得浏览器可以访问WEB。

wangjiaheng0716的博客 2964

cart算法 java_决策树学习笔记(三):CART算法,决策树总结

本篇将继续介绍决策的第三种算法:CART算法,它可以说是学习决策树的核心了。高级集成学习很多复杂框架都是基于CART的。下面将详细介绍CART算法的来龙去脉。CART生成算法CART剪枝算法CART算法小结决策树算法优缺点总结▍CART生成算法为什么叫CART算法呢?这还要从它的英文单词说起。CART是 "Classification and Regression Trees" 的缩写,意思是 "...

weixin_29556943的博客 721

[Godot][入门] 安装与版本选择:3.x 还是 4.x?(按项目类型一键决策)

摘要: Godot引擎版本选择需根据项目需求权衡3.x与4.x。Godot4.x(如4.2)适合3D开发和新项目,支持Vulkan和GDScript2.0,但生态尚不成熟;Godot3.x(如3.5.3)则更适合稳定2D开发、Web导出及依赖现有插件/教程的场景。安装方式极简,官网下载解压即可运行。新手建议:短期高效选3.x,长期探索选4.x,旧项目勿盲目迁移。附版本对比表及决策树,助开发者快速匹配需求。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 910

【WRF安装第三期(Ubuntu)】搭建WRF编译所需系统-第三方依赖库安装

WRF安装第三期:搭建WRF编译所需系统-第三方依赖库安装

WW、forever的博客 3137

决策树学习笔记(三):CART算法,决策树总结

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。 作者:xiaoyu数据挖掘工程师,数据爱好者个人公众号:Python数据科...

简书博客搬家测试账号 1026

【Android面试八股文】Android Application为什么是单例?

这道题相对简单,就是考察大家是否了解application的创建流程。的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个。为空的时候,才会创建,从而保证了它是一个单例对象。一样有自己的生命周期,但是它并没有那么复杂,因为。对象的创建过程,找出它为什么是单例的原因。全局进行一些配置,比如配置插件。的时候才会创建,所以说可以在。凭什么是单例,我们查看下。启动的时候都会创建一个。是怎么一步步创建的。是一个单例,即每一个。

字节卷动 531

c4.5决策树算法 c语言,决策树(三):C4.5算法和CART算法

ID3选择属性的依据是信息增益:![Information Gain][equtation][equtation]: http://latex.codecogs.com/svg.latex?g_r(D,A)=H(D)-H(D|A)ID3算法在选择根节点和内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息。因此...

weixin_36198878的博客 1143

【YOLO系列】YOLOv8详解:模型结构、损失函数、训练方法及代码实现

YOLOv8是Ultralytics团队2023年推出的高效目标检测框架,在速度与精度平衡、多任务支持和易用性方面实现突破。模型采用改进的CSPDarknet主干网络、C2f模块和SPPF加速结构,结合PAN-FPN特征融合和解耦检测头设计,支持目标检测、实例分割和关键点检测任务。创新性地使用CIoU定位损失、Focal Loss置信度损失和动态样本分配策略,显著提升检测性能。实验表明,YOLOv8较前代模型mAP提升5-10%,在TensorRT加速下可达1000FPS,提供5种尺寸灵活选择,成为实时目标

一碗白开水一 2779

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

一文读懂决策树:ID3、C4.5、CART三大核心算法详解

决策树是机器学习中经典的分类与回归模型,通过树状结构模拟人类决策过程。文章深入解析了ID3、C4.5和CART三大核心算法:ID3基于信息增益选择特征但易过拟合;C4.5引入信息增益率解决取值偏好问题;CART使用基尼系数并支持回归任务。针对过拟合问题,介绍了预剪枝和后剪枝两种优化方法。对比显示CART综合性能最优,是工业界首选。决策树模型直观易懂,为理解更复杂的集成学习奠定了基础。

F_leshy_的博客 1046

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

实战解析决策树:ID3、C4.5、CART 三大算法原理到电信客户流失预测实战

基尼指数衡量数据集的 “不确定性”,基尼指数越小,数据的纯度越高,与熵的趋势一致。数据集D的基尼指数:​其中为数据集D中第类样本的占比,二分类场景下可简化为:为其中一类的占比)。特征A划分后数据集D的基尼指数:CART 算法选择基尼指数最小的特征作为最优划分特征。

纤纡.的博客 1454

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

决策树算法三剑客对比:ID3/C4.5/CART到底怎么选?

本文深入对比了决策树算法三剑客ID3、C4.5和CART的核心差异,包括信息增益、信息熵和基尼指数等关键概念。通过信用卡审批、医疗诊断等实际案例,提供了清晰的算法选择指南,帮助开发者在不同场景下做出最优决策。

rl6adventurer的博客 815

从原理到实战:一文吃透决策树三大核心算法(ID3/C4.5/CART)

在机器学习领域,决策树是当之无愧的「入门第一课」,更是工业界落地最广泛的算法之一。它不仅逻辑贴合人类的决策思维、模型解释性拉满,更是随机森林、XGBoost、LightGBM 等一众顶流集成模型的核心基石。本文将从底层原理出发,结合经典案例拆解三大决策树核心算法,再通过电信客户流失预测的 Python 实战,带你完成从理论理解到代码落地的全流程闭环。

m0_74398756的博客 2031

数据分析——数据挖掘算法(决策树)

一、决策树(decision tree) 根据一些特点进行分类,每个结点提一个问题,通过判断,将数据分为两类,再继续提问。这些数据是根据已有数据学习出来的,再投入到新数据的时候,就可以将这棵树上的问题,将数据划分到合适的叶子上。 根节点(root node),它没有入边,但又零条或多条出边。 内部结点(internal node),恰有一条入边,和两条或多条出边。 叶节点(left node)或终结点(terminal node),恰有一条入边,没有出边。 决策树通常有三个步骤:特征选择、决策树的生

weixin_45823221的博客 951
上一篇: 决策树(二):回归树和模型树
下一篇: 回归(一)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值