决策树 | 分裂算法:ID3,C4.5,CART

这里写目录标题

  • 一. ID3算法
    • 1. 信息增益
    • 2. ID3算法特点
  • 二. C4.5算法
    • 1. 信息增益率
    • 2. C4.5算法特点
  • 三. CART算法
    • 1. Gini系数公式
    • 2. CART算法特点
    • 3. CART回归树的分裂评价指标
  • 小节

决策树算法逻辑篇中,我们讲解了决策树的构建方式,下面我们来聊一聊决策树中常用的三个算法

一. ID3算法

1. 信息增益

ID3算法是构造决策树的一个经典算法

	使用信息熵以及信息增益来进行构建每次迭代选择信息增益最大的特征属性作为分割属性

2. ID3算法特点

  1. ID3算法只支持离散的特征属性,不支持连续的特征属性
  2. 若想处理连续的特征属性,要先对连续值进行离散化处理
  3. ID3算法构建的是多叉树,不保证二叉树

详细过程参考决策树算法逻辑篇中的银行示例

二. C4.5算法

对于ID3算法以信息增益为划分的标准,可以发现存在这样一种极端:

当收入按照60,80,87.5,95划分为五叉树时,可以直接得到熵为0的五个叶子节点,且此时系统的信息增益最大

此方案进行划分时,只需一次分裂就可以建好决策树

但是,显然上述这种情况下的划分并不合理;为了解决信息增益划分时的不合理情况,我们引入信息增益率的概念

1. 信息增益率

C4.5算法

	使用信息增益率来进行构建每次迭代选择信息增益率最大的特征属性作为分割属性

G a i n − r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain-ratio(D,a) = \frac{Gain(D,a)}{IV(a)} Gainratio(D,a)=IV(a)Gain(D,a)

G a i n ( D , a ) Gain(D,a) Gain(D,a):信息增益
I V ( a ) IV(a) IV(a):属性a的固有值

I V ( a ) = − ∑ v = 1 v ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ IV(a) = -\sum_{v=1}^{v}\frac{|D^{v}|}{|D|}\log_{2}{\frac{|D^{v}|}{|D|}} IV(a)=v=1vDDvlog2DDv
例子:
房子样本4个是,6个否
I V ( 房产 ) = − 4 10 log ⁡ 2 4 10 − 6 10 log ⁡ 2 6 10 = 3.747 IV(房产) = -\frac{4}{10}\log_{2}{\frac{4}{10}} -\frac{6}{10}\log_{2}{\frac{6}{10}}=3.747 IV(房产)=104log2104106log2106=3.747
婚姻样本4个单身,3个已婚,3个离婚
I V ( 婚姻 ) = − 4 10 log ⁡ 2 4 10 − 3 10 log ⁡ 2 3 10 − 3 10 log ⁡ 2 3 10 = 4.003 IV(婚姻) = -\frac{4}{10}\log_{2}{\frac{4}{10}} -\frac{3}{10}\log_{2}{\frac{3}{10}}-\frac{3}{10}\log_{2}{\frac{3}{10}}=4.003 IV(婚姻)=104log2104103log2103103log2103=4.003

2. C4.5算法特点

	C4.5算法以信息增益率为划分标准有效避免了叉越多,信息增益越大的影响结合上面的公式分析,我们可以得出:树分支越多,IV(a)固有属性越大,信息增益率也就相对越小
  1. 在树的构造过程中会进行剪枝操作进行优化
  2. 能够自动完成对连续属性的离散化处理
  3. C4.5构建的是多分支的决策树

三. CART算法

1. Gini系数公式

CART算法

	采用Gini系数来衡量划分的有效性

G i n i = ∑ i = 1 n [ p i ∗ ( 1 − p i ) ] = 1 − ∑ i = 1 n p i 2 Gini = \sum_{i=1}^{n}[p_{i}*(1-p_{i})] =1-\sum_{i=1}^{n}p_{i}^{2} Gini=i=1n[pi(1pi)]=1i=1npi2

2. CART算法特点

  1. 选择gini增益最大的属性作为当前数据集的分割属性
  2. 可用于分类和回归两类问题
  3. CART构建是二叉树

3. CART回归树的分裂评价指标

MSE均方误差划分指标:

	样本越集中,值越小,划分越好

M S E = 1 n ∑ i = 1 n ( y i − y ˉ i ) 2 MSE=\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\bar{y}_{i})^{2} MSE=n1i=1n(yiyˉi)2

MAE绝对误差划分指标:
M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE=\frac{1}{n}\sum_{i=1}^{n}|y_{i}-\hat{y}_{i}| MAE=n1i=1nyiy^i

小节

  • ID3,C4.5,CART三种算法适用在小规模数据集上,即内存要能装得下

  • ID3,C4.5,CART采用单变量决策树

      	单变量的决策树:每次分裂时只选择了一个特征进行分裂实际现实任务时每次只选择一个特征进行分裂效果并不好因此我们希望一次分裂时综合考虑好几个特征,组合成一个综合条件,但此时模型会相对复杂,计算量大
    
  • 一般采用CART算法构造树,ID3和C4.5算法在sklearn库中没有真正实现

  • 回归树中,叶子节点的预测值一般为叶子节点中所有值的均值

  • 分类树中,叶子节点的预测值一般为叶子节点中概率最大的类别

在这里插入图片描述
注意:三种算法的主要区别在于划分指标不同
      本质区别在于是否为二叉树

	也就说,CART算法的划分指标当然也可以选用信息增益率来划分只要明确构建的树为二叉树,那么关于ID3存在的问题和C4.5想要解决的问题也就不存在了

感谢阅读🌼
如果喜欢这篇文章,记得点赞👍和转发🔄哦!
有任何想法或问题,欢迎留言交流💬,我们下次见!
本文相关代码存放位置
    【[决策树 基于鸢尾花数据集的分类]

祝愉快🌟!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不依赖第三方平台,用Dart语言实现 ios 消息推送

仅仅给大家提供代码,还搞不定的欢迎咨询。 void _sendIosPushNotification(BleMessage message, String deviceToken, {bool debugMode = false}) async {final Map<String, dynamic> header = {"alg": "ES256", "kid": GloabelConfigu…

Broken Keyboard (a.k.a. Beiju Text)(UVA 11988)

网址如下&#xff1a; Broken Keyboard (a.k.a. Beiju Text) - UVA 11988 - Virtual Judge (vjudge.net) &#xff08;第三方网站&#xff09; 刚刚开始我是用C的list来做的&#xff0c;不过里面的元素是char&#xff0c;直接TLE 说实话我有点震惊&#xff0c;这不是双端链表…

Day16 面向对象进阶——接Day15

Day16 面向对象进阶——接Day15 文章目录 Day16 面向对象进阶——接Day15一、抽象类及抽象方法二、接口三、多态四、对象转型五、内部类 一、抽象类及抽象方法 //抽象类 public abstract class 类名{//抽象方法public abstract void method(); }1、抽象方法交给非抽象的子类去…

FreeRtos自学笔记4----参考正点原子视频

静态创建任务函数 TaskHandle_t xTaskCreateStatic { TaskFunction_t pxTaskCode, /* 指向任务函数的指针 / const char * const pcName, / 任务函数名 / const uint32_t ulStackDepth, / 任务堆栈大小注意字为单位 / void * const pvParameters, / 传递的任务函数参数 / UBase…

爬虫需要什么类型的代理ip?代理ip是必备的吗?

在信息时代&#xff0c;网络爬虫作为一种重要的数据采集工具&#xff0c;被广泛应用于各行各业。在这个过程中&#xff0c;代理IP成为了一个备受关注的话题。那么&#xff0c;爬虫需要什么类型的代理IP?代理IP是否是必不可少的呢? 今天我们就一起来看看~ 首先&#xff0c;我…

GPU服务器为什么需要DPU?

随着AI模型的复杂度增加以及数据量爆炸性增长&#xff0c;GPU服务器在执行训练和推理任务时&#xff0c;不仅面临计算密集型问题&#xff0c;还必须处理大量的数据移动、网络通信、存储I/O以及安全防护等非计算密集型任务。这些问题往往会成为性能瓶颈&#xff0c;消耗宝贵的CP…

【教学类-34-11】20240314 动物拼图(Midjounery生成线描图,8*8格拼图块 A4整张)(AI对话大师)

作品展示&#xff1a;——A4整页&#xff08;一人2张纸&#xff09; 背景需求&#xff1a; 通过春天拼图的个别化实验&#xff0c;我发现&#xff1a; 【教学类-34-10】20240313 春天拼图&#xff08;Midjounery生成线描图&#xff0c;4*4格拼图块&#xff09;&#xff08;AI…

1094. 拼车

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不…

在Docker上传我们自己的镜像(以springboot项目为例)

首先确定好在我们的centOS服务器上已经安装并配置好docker 配置自己的springboot镜像并运行 获取springboot的jar包 maven clean--》mavenue package --》复制target目录下生成的jar包 在服务器选择一个文件夹上传jar包&#xff0c;我这里选用的文件夹叫做/opt/dockertest…

【数据结构】树与堆 (向上/下调整算法和复杂度的分析、堆排序以及topk问题)

文章目录 1.树的概念1.1树的相关概念1.2树的表示 2.二叉树2.1概念2.2特殊二叉树2.3二叉树的存储 3.堆3.1堆的插入&#xff08;向上调整&#xff09;3.2堆的删除&#xff08;向下调整&#xff09;3.3堆的创建3.3.1使用向上调整3.3.2使用向下调整3.3.3两种建堆方式的比较 3.4堆排…

河南大学数据分析可视化实验-数据分析基础

计算机与信息工程学院实验报告 姓名&#xff1a; 杨馥瑞 学号&#xff1a;2212080042专业&#xff1a;数据科学与大数据分析技术 年级&#xff1a; 2022 课程&#xff1a; 数据分析和可视化 主讲教师&#xff1a; 周黎鸣 辅导教师&#xff1a; 周黎鸣 …

MISC-Catflag

前言 开始拿到这道题&#xff0c;以为是要识别文件类型&#xff0c;后面发现不是&#xff0c;kali识别为ascii文本文件。而用010editor打开&#xff0c;又是一堆看不懂的码 后面发现有很多重复内容1B 5B 43等等&#xff0c;再看题目type flag or cat flag可以联想linux的cat命…

【1】Python零基础起步

什么是编程(Programming) 编程是编定程序的中文简称&#xff0c;就是让计算机代码解决某个问题&#xff08;目的&#xff09;&#xff0c;对某个计算体系规定一定的运算方式&#xff0c;使计算体系按照该计算方式运行&#xff0c;并最终得到相应结果的过程&#xff08;手段&am…

微信小程序(五十九)使用鉴权组件时原页面js自动加载解决方法(24/3/14)

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.使用覆盖函数的方法阻止原页面的自动执行方法 2.使用判断实现只有当未登录时才进行方法覆盖 源码&#xff1a; app.json {"pages": ["pages/index/index","pages/logs/logs"],…

【无标题】vmprotect net 混淆效果挺不错

vmprotect net 混淆效果挺不错,测试了一个&#xff0c;以前的写程序。用dnspy测试一下&#xff0c;效果非常好。 sunnf0451qq.com

1.MongoDB的特点与应用场景

什么是 MongoDB &#xff1f; MongoDB 是基于 C 开发的 NOSQL 开源文档数据库 &#xff0c;是最像关系型数据库的 nosql&#xff0c;功能也是最丰富的 nosql&#xff0c;它具有所以的可伸缩性&#xff0c;灵活性&#xff0c;高性能&#xff0c;高扩展性的优势。 大致有如下特…

基于SpringBoot的“实习管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“实习管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 学生注册界面图 后台登录界面图 …

【C++面向对象】C++飞机购票订票系统(源码+说明)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

好玩的css样式

1.鼠标悬浮文字跳动动画效果 <p class"dajianshi ">应用名称:</p> .dajianshi {font-size: 14px;color: black; }.dajianshi:hover {animation: animate 0.5s linear infinite; }keyframes animate {0%,25% {text-shadow: 2px 5px 2px rgb(255, 151, 15…

多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测

多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测 目录 多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.M…