决策树(ID3、C4.5、CART)

article/2025/10/31 0:33:34

1. 基本概念

所谓决策树,顾名思义,就是一种树,一种依托于策略抉择而建立起来的树。在机器学习中,决策树是一种预测模型,代表的是一种对象特征属性与对象目标值之间的一种映射关系。决策树仅有单一输出,如果有多个输出,可以分别建立独立的决策树以处理不同的输出。,下图给出了决策树的一个简单例子:

图片名称

决策树分为分类树和回归树两种,分类树对离散变量做决策,输出是样本的预测类别;回归树对连续变量做决策,输出是一个实数 。本文介绍ID3、C4.5和CART这三种构造决策树的算法

2. ID3算法

ID3算法是J. Ross Quinlan于1975提出的一种贪心算法,用来构造决策树。其建立在“奥卡姆剃刀”的基础上,即越是小型的决策树越优于大的决策树。ID3算法中根据特征选择和信息增益评估,每次选择信息增益最大的特征作为分支标准。ID3算法可用于划分标称型数据集,没有剪枝的过程,为了去除过度数据匹配的问题,可通过裁剪合并相邻的无法产生大量信息增益的叶子节点(例如设置信息增益阀值)。使用信息增益其实是有一个缺点,那就是它偏向于具有大量值的属性–就是说在训练集中,某个属性所取的不同值的个数越多,那么越有可能拿它来作为分裂属性,而这样做有时候是没有意义的。此外,ID3不能处理连续分布的数据特征

① 信息熵

熵这个概念最早起源于物理学,在物理学中是用来度量一个热力学系统的无序程度,而在信息学里面,熵是对不确定性的度量。在1948年,香农引入了信息熵(information entropy),将其定义为离散随机事件出现的概率,一个系统越是有序,信息熵就越低,反之一个系统越是混乱,它的信息熵就越高。所以信息熵可以被认为是系统有序化程度的一个度量。

对于有K个类别的分类问题来说,假定样本集合D中第 k 类样本所占的比例为 pk k=1,2,...,K ),则样本集合D的信息熵定义为:

Ent(D)=Kk=1pklog2pk

② 信息增益

在决策树的分类问题中,信息增益(information gain)是针对一个特定的分支标准(branching criteria)T,计算原有数据的信息熵与引入该分支标准后的信息熵之差。信息增益的定义如下:

Gain(D,a)=Ent(D)Vv=1|Dv||D|Ent(Dv)

其中a是有V个不同取值的离散特征,使用特征a对样本集D进行划分会产生V个分支, Dv 表示D中所有在特征a上取值为 av 的样本,即第v个分支的节点集合。 |Dv||D| 表示分支节点的权重,即分支节点的样本数越多,其影响越大。

接下来以天气的例子来说明ID3算法。下图是样本数据集,每个样本包括4个特征“Outlook”,“Temperature”,”Humidity”和“Windy”,模型的分类目标是play或者not play。

这里写图片描述

表中一共包含14个样本,包括9个正样本和5个负样本,并且是一个二分类问题,那么当前信息熵的计算如下:

Ent(D)=914log2914514log2514=0.940286

接下来以表中的Outlook属性作为分支标准,根据sunny、overcast、rain这三个属性值可将数据分为三类,如下图所示:

这里写图片描述

引入该分支标准后,数据被分成了3个分支,每个分支的信息熵计算如下:

H(Dsunny)=25log22535log235=0.970951

H(Dovercast)=44log244=0

H(Drain)=25log22535log235=0.970951

因此,基于该分支标准 T 所带来的信息增益为:
Gain(D,a)=Ent(D)Vv=1|Dv||D|Ent(Dv)=0.9402865140.970951+4140+5140.970951=0.24675

③ 算法思想

ID3算法的基本思想是:首先计算出原始数据集的信息熵,然后依次将数据中的每一个特征作为分支标准,并计算其相对于原始数据的信息增益,选择最大信息增益的分支标准来划分数据,因为信息增益越大,区分样本的能力就越强,越具有代表性。重复上述过程从而生成一棵决策树,很显然这是一种自顶向下的贪心策略。

3. C4.5算法

C4.5算法是对ID3算法的改进,C4.5克服了ID3的2个缺点:

  1. 用信息增益选择属性时偏向于选择分枝比较多的属性值,即取值多的属性
  2. 不能处理连续属性

对于离散特征,C4.5算法不直接使用信息增益,而是使用“增益率”(gain ratio)来选择最优的分支标准,增益率的定义如下:

  • GainRatio(D,T)=GainD,T)IV(T)

其中, IV(T)=Vv=1|Dv||D|log2|Dv||D| ,称作分支标准T的“固有值”(intrinstic value)。作为分支标准的属性可取值越多,则 IV 的值越大。需要注意的是: 增益率准则对可取值数目较少的属性有所偏好,因此C4.5算法并不是直接选择增益率最大的属性作为分支标准,而是先从候选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

C4.5算法处理连续属性的方法是先把连续属性转换为离散属性再进行处理。虽然本质上属性的取值是连续的,但对于有限的采样数据它是离散的,如果有N条样本,那么我们有N-1种离散化的方法: <=vj <script type="math/tex" id="MathJax-Element-17"><=v_j</script>的分到左子树, >vj 的分到右子树。计算这N-1种情况下最大的信息增益率。在离散属性上只需要计算1次信息增益率,而在连续属性上却需要计算N-1次,计算量是相当大的。通过以下办法可以减少计算量:对于连续属性先按大小进行排序,只有在分类发生改变的地方才需要切开。比如对Temperature进行排序:

这里写图片描述

本来有13种离散化的情况,现在只需计算7种。如果利用增益率来选择连续值属性的分界点,会导致一些副作用。分界点将样本分成两个部分,这两个部分的样本个数之比也会影响增益率。根据增益率公式,我们可以发现,当分界点能够把样本分成数量相等的两个子集时(我们称此时的分界点为等分分界点),增益率的抑制会被最大化,因此等分分界点被过分抑制了。子集样本个数能够影响分界点,显然不合理。因此在决定分界点是还是采用增益这个指标,而选择属性的时候才使用增益率这个指标。

4. CART算法

CART(Classification And Regression Tree)算法既可以用于创建分类树,也可以用于创建回归树。CART算法的重要特点包含以下三个方面:

  1. 二分(Binary Split):在每次判断过程中,都是对样本数据进行二分。CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。由于CART算法构成的是一个二叉树,它在每一步的决策时只能是“是”或者“否”,即使一个feature有多个取值,也是把数据分为两部分
  2. 单变量分割(Split Based on One Variable):每次最优划分都是针对单个变量。
  3. 剪枝策略:CART算法的关键点,也是整个Tree-Based算法的关键步骤。剪枝过程特别重要,所以在最优决策树生成过程中占有重要地位。有研究表明,剪枝过程的重要性要比树生成过程更为重要,对于不同的划分标准生成的最大树(Maximum Tree),在剪枝之后都能够保留最重要的属性划分,差别不大。反而是剪枝方法对于最优树的生成更为关键。

① CART分类决策树

GINI指数

CART的分支标准建立在GINI指数这个概念上,GINI指数主要是度量数据划分的不纯度,是介于0~1之间的数。GINI值越小,表明样本集合的纯净度越高;GINI值越大表明样本集合的类别越杂乱。直观来说,GINI指数反映了从数据集中随机抽出两个样本,其类别不一致的概率。衡量出数据集某个特征所有取值的Gini指数后,就可以得到该特征的Gini Split info,也就是GiniGain。不考虑剪枝情况下,分类决策树递归创建过程中就是每次选择GiniGain最小的节点做分叉点,直至子数据集都属于同一类或者所有特征用光了。的计算过程如下:

对于一个数据集T,将某一个特征作为分支标准,其第 i 个取值的Gini指数计算方式为:gini(Ti)=1nj=1p2j,其中 n 表示数据的类别数,pj表样本属于第j个类别的概率。计算出某个样本特征所有取值的Gini指数后就可以得到Gini Split Info: Ginisplit(T)=2i=1NiNgini(Ti) ,其中 N 表示样本总数,Ni表示属于特征第 i 个属性值的样本数。

特征双化

如果特征的值是离散的,并且是具有两个以上的取值,则CART算法会考虑将目标类别合并成两个超类别(双化)。因为CART树是二叉树,所以对于有N(N3)个取值的离散特征,在处理时也只能有两个分支,这就要通过组合创建二取值序列并取GiniGain最小者作为树分叉决策点。例如,某特征值具有[‘young’,’middle’,’old’]三个取值,那么二分序列会有如下3种可能性:[((‘young’,), (‘middle’, ‘old’)), ((‘middle’,), (‘young’, ‘old’)), ((‘old’,), (‘young’, ‘middle’))]。

对连续特征的处理

如果特征的取值范围是连续的,则CART算法需要把连续属性转换为离散属性再进行处理。如果有N条样本,那么我们有N-1种离散化的方法:<= vj 的分到左子树,> vj 的分到右子树。取这N-1种情况下GiniGain最小的离散化方式。

下面举一个简单的例子来说明上述过程:

这里写图片描述

在上述图中,每个样本有3个特征,分别是有房情况,婚姻状况和年收入,其中有房情况和婚姻状况是离散的取值,而年收入是连续的取值。拖欠贷款者属于分类的结果。现在来看有房情况这个特征,那么按照它划分后的Gini指数计算如下:
这里写图片描述

而对于婚姻状况特征来说,它的取值有3种,按照每种属性值分裂后Gini指标计算如下:
这里写图片描述

最后还有一个取值连续的特征,年收入,它的取值是连续的,那么连续的取值采用分裂点进行分裂。如下:
这里写图片描述

根据这样的分裂规则CART算法就能完成建树过程。

CART的剪枝

分析CART的递归建树过程,不难发现它实质上存在着一个数据过度拟合问题。在决策树构造时,由于训练数据中的噪音或孤立点,许多分枝反映的是训练数据中的异常,使用这样的判定树对类别未知的数据进行分类,分类的准确性不高。因此试图检测和减去这样的分支,检测和减去这些分支的过程被称为树剪枝。树剪枝方法用于处理过分适应数据问题。通常,这种方法使用统计度量,减去最不可靠的分支,这将导致较快的分类,提高树独立于训练数据正确分类的能力。决策树常用的剪枝常用的简直方法有两种:预剪枝(Pre-Pruning)和后剪枝(Post-Pruning)。预剪枝是根据一些原则及早的停止树增长,如树的深度达到用户所要的深度、节点中样本个数少于用户指定个数、不纯度指标下降的最大幅度小于用户指定的幅度等;后剪枝则是通过在完全生长的树上剪去分枝实现的,通过删除节点的分支来剪去树节点,可以使用的后剪枝方法有多种,比如:代价复杂性剪枝、最小误差剪枝、悲观误差剪枝等等。

5. 参考资料

  • http://blog.csdn.net/acdreamers/article/details/44661149
  • http://blog.csdn.net/acdreamers/article/details/44664481
  • http://blog.csdn.net/u011067360/article/details/24871801
  • http://blog.csdn.net/suipingsp/article/details/42264413

http://chatgpt.dhexx.cn/article/1fhkqDdd.shtml

相关文章

Python实现决策树2(CART分类树及CART回归树)

接上篇 CART算法的全称是Classification And Regression Tree&#xff0c;采用的是Gini指数&#xff08;选Gini指数最小的特征s&#xff09;作为分裂标准,同时它也是包含后剪枝操作。ID3算法和C4.5算法虽然在对训练样本集的学习中可以尽可能多地挖掘信息&#xff0c;但其生…

树模型之三种常见的决策树:CART,…

树模型&#xff08;又称决策树或者树结构模型&#xff09;&#xff1a;基本思想和方差分析中的变异分解极为相似。 目的&#xff08;基本原则&#xff09;&#xff1a;将总研究样本通过某些牲&#xff08;自变量取值&#xff09;分成数个相对同质的子样本。每一子样本因变量的取…

决策树CART

分类回归树(CART,Classification And Regression Tree)也属于一种决策树&#xff0c;上回文我们介绍了基于ID3算法的决策树。作为上篇&#xff0c;这里只介绍CART是怎样用于分类的。 分类回归树是一棵二叉树&#xff0c;且每个非叶子节点都有两个孩子&#xff0c;所以对于第一棵…

决策树CART算法原理详解

大家好&#xff0c;今天用一个简单的例子来给大家介绍一下决策树中的CART算法。 CART分类树 CART分类树适用于预测结果为离散型数据的情况下&#xff0c;主要是计算每一组特征的Gini系数增益来确定决策树划分的优先规则&#xff0c;主要是采用一种二分方法&#xff0c;当一列…

决策树—ID3、C4.5、CART

目录 一、决策树模型与学习 1、决策树模型 2、决策树学习 二、特征选择 1、信息增益 2、信息增益率 三、决策树的生成 1、ID3算法 2、C4.5算法 3、CART算法 四、决策树停止分裂的条件 五、连续值和损失值处理 决策树&#xff08;decision tree&#xff09;是一…

CART决策树----基尼指数划分

文章目录 CART决策树----基尼指数划分一.决策树算法的构建二.划分选择——基尼指数三.剪枝处理1.预剪枝2.后剪枝 四.算法代码 CART决策树----基尼指数划分 一.决策树算法的构建 一般的&#xff0c;一棵决策树包含一个根节点&#xff0c;若干个内部结点和若干个叶结点&#xff…

决策树之CART 算法(回归树,分类树)

CART 算法&#xff0c;英文全称叫做 Classification And Regression Tree&#xff0c;中文叫做分类回归树。 ID3 和 C4.5 算法可以生成二叉树或多叉树&#xff0c;而 CART 只支持二叉树。 同时 CART 决策树比较特殊&#xff0c;既可以作分类树&#xff0c;又可以作回归树。 …

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

决策树之CART&#xff08;分类回归树&#xff09;详解 主要内容 CART分类回归树简介CART分类回归树分裂属性的选择CART分类回归树的剪枝 1、CART分类回归树简介   CART分类回归树是一种典型的二叉决策树&#xff0c;可以做分类或者回归。如果待预测结果是离散型数据&#…

CART模型

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

免费前端网站页面模板

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

简洁实用的前端模板

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

web前端基础——背景图片

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

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

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

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

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

博客前端模板

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

前端设计类网站汇总

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

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

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

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

注&#xff1a;这三个登录页面涉及到的图片素材可自行寻找&#xff0c;字体图标素材可以在阿里字体图标库获取&#xff08;https://www.iconfont.cn/home/index?spma313x.7781069.1998910419.2&#xff09;&#xff0c;如需原版素材可联系作者QQ&#xff08;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/