【机器学习笔记】8 决策树

决策树原理

决策树是从训练数据中学习得出一个树状结构的模型。
决策树属于判别模型。
决策树是一种树状结构,通过做出一系列决策(选择)来对数据进行划分,这类似于针对一系列问题进行选择。决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照其值选择输出分支,直到叶子节点,将叶子节点的存放的类别作为决策结果。
以下小美相亲的例子就是决策树
在这里插入图片描述
在这里插入图片描述
决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘
出有用的规则,用于对新数据进行预测。
决策树算法属于监督学习方法。 决策树归纳的基本算法是贪心算法,自顶向下来构建决策树。
贪心算法:在每一步选择中都采取在当前状态下最好/优的选择。
在决策树的生成过程中,分割方法即属性选择的度量是关键。

  • 决策树的优点:
    推理过程容易理解,计算简单,可解释性强。
    比较适合处理有缺失属性的样本。
    可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,
    减少变量的数目提供参考。
  • 决策树的缺点:
    容易造成过拟合,需要采用剪枝操作。
    忽略了数据之间的相关性。
    对于各类别样本数量不一致的数据,信息增益会偏向于那些更多数值的特征。
  • 决策树的三种基本类型
    建立决策树的关键,即在当前状态下选择哪个属性作为分类依据。根据不同的目标函数 , 建立决策树主要有以下三种算法: ID3(IterativeDichotomiser)、C4.5、CART(Classification And Regression Tree)。
    在这里插入图片描述

ID3算法

ID3 算法最早是由罗斯昆(J. Ross Quinlan)于1975年提出的一种决策树构建算法,算法的核心是“信息熵”,期望信息越小,信息熵越大,样本纯度越低。。
ID3 算法是以信息论为基础,以信息增益为衡量标准,从而实现对数据的归纳分类。
ID3 算法计算每个属性的信息增益,并选取具有最高增益的属性作为给定的测试属性。

ID3算法的大致步骤

  1. 初始化特征集合和数据集合;
  2. 计算数据集合信息熵和所有特征的条件熵,选择信息增益最大的特征作为当前决策节点;
  3. 更新数据集合和特征集合(删除上一步使用的特征,并按照特征值来划分不同分支的数据集合);
  4. 重复 2,3 两步,若子集值包含单一特征,则为分支叶子节点
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • ID3算法的缺点
    ID3 没有剪枝策略,容易过拟合;
    信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于 1;
    只能用于处理离散分布的特征;
    没有考虑缺失值

C4.5算法

  • C4.5 算法是 Ross 对 ID3 算法的改进。
    信息增益率来选择属性。ID3选择属性用的是子树的信息增益,而C4.5用的是信息增益率
    在决策树构造过程中进行剪枝
    非离散数据也能处理。
    能够对不完整数据进行处理。
    在这里插入图片描述

过拟合的原因:
为了尽可能正确分类训练样本,节点的划分过程会不断重复直到不能再分,这样就可能对训练样本学习的“太好”了,把训练样本的一些特点当做所有数据都具有的一般性质,从而导致过拟合。
剪枝的基本策略有“预剪枝”(prepruning)和“后剪枝”(post-pruning)通过剪枝处理去掉一些分支来降低过拟合的风险。

预剪枝(prepruning)

预剪枝不仅可以降低过拟合的风险而且还可以减少训练时间,但另一方面它是基于“贪心”策略,会带来欠拟合风险。
在这里插入图片描述

  • 剪枝策略
    在节点划分前来确定是否继续增长,及早停止增长
    主要方法有:
    • 节点内数据样本低于某一阈值;
    • 所有节点特征都已分裂;
    • 节点划分前准确率比划分后准确率高。
    在这里插入图片描述
    在这里插入图片描述

后剪枝

在已经生成的决策树上进行剪枝,从而得到简化版的剪枝决策树。后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情况下,后剪枝的欠拟合风险更小,泛化性能往往优于预剪枝决策树

  • 剪枝方法
    在已经生成的决策树上进行剪枝,从而得到简化版的剪枝决策树。
    C4.5 采用的悲观剪枝方法,用递归的方式从低往上针对每一个非叶子节点,评估用一个最佳叶子节点去代替这课子树是否有益。如果剪枝后与剪枝前相比其错误率是保持或者下降,则这棵子树就可以被替换掉。C4.5 通过训练数据集上的错误分类数量来估算未知样本上的错误率。
    后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。
    在这里插入图片描述
    在这里插入图片描述
  • 缺点
    • 剪枝策略可以再优化;
    • C4.5 用的是多叉树,用二叉树效率更高;
    • C4.5 只能用于分类;
    • C4.5 使用的熵模型拥有大量耗时的对数运算,连续值还有排序运算;
    • C4.5 在构造树的过程中,对数值属性值需要按照其大小进行排序,从中选择一个分割点,所以只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时,程序无法运行。

CART算法

Classification and Regression Tree (CART) 是决策树的一种。
基尼指数来选择属性(分类),或用均方差来选择属性(回归)。
顾名思义,CART算法既可以用于创建分类树,也可以用于创建回归树,两者在构建的过程中稍有差异。
如果目标变量是离散的,称为分类树
如果目标变量是连续的,称为回归树

CART算法——分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例子
在这里插入图片描述

CART算法——回归

均方差来选择属性
对于连续值的处理,CART 分类树采用基尼系数的大小来度量特征的各个划分点。
对于任意划分特征 𝐴,对应的任意划分点𝑠 两边划分成的数据集 𝐷1和𝐷2 ,求出使𝐷1和𝐷2各自集合的均方差最小,同时 𝐷1和𝐷2的均方差之和最小所对应的特征和特征值划分点。表达式为:
在这里插入图片描述
其中,𝑐1为𝐷1数据集的样本输出均值,𝑐2为𝐷2 数据集的样本输出均值。

  • 预测方式
    对于决策树建立后做预测的方式,上面讲到了 CART 分类树采用叶子节点里概率最大的类别作为当前节点的预测类别。
    而回归树输出不是类别,它采用的是用最终叶子的均值或者中位数来预测输出结果

CART算法采用一种“基于代价复杂度的剪枝”方法进行后剪枝,这种方法会生成一系列树,每个树都是通过将前面的树的某个或某些子树替换成一个叶节点而得到的,这一系列树中的最后一棵树仅含一个用来预测类别的叶节点。然后用一种成本复杂度的度量准则来判断哪棵子树应该被一个预测类别值的叶节点所代替。
这种方法需要使用一个单独的测试数据集来评估所有的树,根据它们在测试数据集熵的分类性能选出最佳的树。

  • CART剪枝具体流程:
    (1)计算每一个结点的条件熵
    (2)递归的从叶子节点开始往上遍历,减掉叶子节点,然后判断损失函数的值是否减少,如果减少,则将父节点作为新的叶子节点
    (3)重复(2),直到完全不能剪枝.
    在这里插入图片描述

决策树的差异

  • 划分标准的差异
    ID3 使用信息增益偏向特征值多的特征,C4.5 使用信息增益率克服信息增益的缺点,偏向于特征值小的特征,CART 使用基尼指数克服, C4.5 需要求 log 的巨大计算量,偏向于特征值较多的特征。
  • 使用场景的差异
    ID3 和 C4.5 都只能用于分类问题,CART 可以用于分类和回归问题;ID3 和 C4.5 是多叉树,速度较慢,CART 是二叉树,计算速度很快;
  • 样本数据的差异
    ID3 只能处理离散数据且缺失值敏感,C4.5 和 CART 可以处理连续性数据且有多种方式处理缺失值;从样本量考虑的话,小样本建议 C4.5、大样本建议 CART。C4.5 处理过程中需对数据集进行多次扫描排序,处理成本耗时较高,而 CART 本身是一种大样本的统计方法,小样本处理下泛化误差较大 ;
  • 样本特征的差异
    ID3 和 C4.5 层级之间只使用一次特征,CART 可多次重复使用特征;
  • 剪枝策略的差异
    ID3 没有剪枝策略,C4.5 是通过悲观剪枝策略来修正树的准确性,而 CART 是通过代价复杂度剪枝

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

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

相关文章

2.15学习总结

2.15 1.聪明的质监员(二分前缀和) 2.村村通(并查集) 3.玉蟾宫(悬线法DP) 4.随机排列(树状数组逆序对问题) 5.增进感情(DFS) 6.医院设置(floyd) 聪明的质监员…

《动手学深度学习(PyTorch版)》笔记8.7

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

C++数据结构与算法——双指针法

C第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更…

NLP_ChatGPT的RLHF实战

文章目录 介绍小结 介绍 ChatGPT 之所以成为ChatGPT,基于人类反馈的强化学习是其中重要的一环。而ChatGPT 的训练工程称得上是复杂而又神秘的,迄今为止,OpenAl也没有开源它的训练及调优的细节。 从 OpenAl已经公开的一部分信息推知&#xff…

计算机组成原理(2)-----存储芯片与CPU的连接

目录 一.单块存储芯片与CPU的连接 二.多块存储芯片与CPU的连接 1.位扩展 2.字扩展 (1)线选法 (2)译码器片选法 3.字位同时扩展 三.译码器相关 一.单块存储芯片与CPU的连接 如图所示是8*8位的芯片,总共8个存储…

OS设备管理

设备管理 操作系统作为系统资源的管理者,其提供的功能有:处理机管理、存储器管理、文件管理、设备管理。其中前三个管理都是在计算机的主机内部管理其相对应的硬件。 I/O设备 I/O即输入/输出。I/O设备即可以将数据输入到计算机,或者可以接收…

高校危化试剂管理:Java与SpringBoot的革新

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Vue核心基础6:Vue内置指令、自定义指令、生命周期

1 Vue中的内置指令 <script>const vm new Vue({el: #root,data: {n: 1,m: 100,name: Vue,str: <h3>你好</h3>}})</script> 1.1 v-text <div v-text"name"></div>1.2 v-html <div v-html"str"></div> …

最小生成树(Kruskal算法及相关例题)

1.Kruskal算法概念以及基本思路 &#xff08;1&#xff09;概念&#xff1a; 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法。它的时间复杂度为O&#xff08;ElogE&#xff09;(E是图G的边的总数)&#xff0c;适合于求边稀疏的网的最小生成树 。 其基本思想是&#xff…

黄金交易策略(Nerve Nnife.mql4):做单手数设计

完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 NK的做单量是由参数设定的&#xff0c;以下分别是参数项&#xff1a; 考虑到复利的情况&#xff0c;若10000本金&#xff0c;在以上三个参数的设计下&#xff0c;第1单的购买量是0.01*10,第2单是0.01*10*2…

Java迭代器详解,看这一篇就够了

文章目录 &#x1f6a9;Java 迭代器详解 &#x1f4da;迭代器的定义 &#x1f4d2;认识Iterator ✏️类结构图 ✒️Iterable接口 &#x1f58d;️Iterator接口 &#x1f4c3;Iterator接口的方法 &#x1f4d9;迭代器的使用 &#x1f3f7;️使用迭代器遍历集合 &#x1f516;Ite…

[BIZ] - 1.金融交易系统特点

1. 典型数据汇总 数据 说明 新增数据量(条/天) Qps(条/s) 消息大小(Byte) 实时性 可丢失性 可恢复性 实时行情 1.使用场景&#xff1a;交易&#xff0c;报价&#xff0c;策略验证&#xff1b; 2.冷热分离&#xff1a;彭博行情/其他行情&#xff1b;黄金&期货行情/…

Java图形化界面编程——AWT概论 笔记

2.3 Container容器 2.3.1 Container继承体系 Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;Panel可以容纳其他组件&#xff0c;但不能独立存在&#xff0c;它必须内嵌其他容器中使用&#xff0c;默认使用FlowLayout管理其内部组件布局&#xff1b;S…

交通管理|交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)

交通管理在线服务系统目录 目录 基于Springboot的交通管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、驾驶证业务管理 3、机动车业务管理 4、机动车业务类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计…

MySQL学习Day15——MySQL安装与使用

一、Linux下的MySQL的安装与使用: 卸载MySQL: 1.关闭当前MySQL服务:systemctl stop mysql.service 2.查看当前mysql安装状况:rpm -qa | grep -i mysql 3.卸载上述命令查询出的已安装的程序:yum remove mysql-xxx mysql-xxx mysql-xxxx 4.删除mysql相关文件: (1)查找相关文…

解决vscode报错,在赋值前使用了变量“XXX“

问题&#xff1a;如图所示 解决方法&#xff1a; 法一&#xff1a; 补全函数使其完整 法二&#xff1a; 使用断言

c++Qt网络操作

1、基础概念 1.1 TCP/UDP TCP 是一种面向连接的传输层协议&#xff0c;它能提供高可靠性通信(即数据无误、数据无丢失、 数据无失序、数据无重复到达的通信) 适用情况&#xff1a; 1.SN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议 2、适合于对传输质量要求较…

【STM32 CubeMX】串口编程DMA

文章目录 前言一、DMA方式1.1 DMA是什么1.2 CubeMX配置DMA1.3 DMA方式函数使用DMA的发送接收函数 总结 前言 在嵌入式系统中&#xff0c;串口通信是一项至关重要的功能&#xff0c;它允许单片机与外部设备进行数据交换&#xff0c;如传感器、显示器或其他设备。然而&#xff0…

Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解

Linux笔记之xhost 和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解 ——2024-02-11 code review! 文章目录 Linux笔记之xhost 和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解xhost 的作用xhost 与 Docker 的关系 -e GDK_SCALE 和 -e GDK_DPI_SCALE详解GDK_SCALEGDK_DPI_SC…

【Linux】进程的初步认识

进程的初步认识 基本概念描述进程task_struct-PCB的一种task_stuct内容分类 查看进程通过系统调用获取进程标识符 基本概念 要了解进程&#xff0c;首先我们要知道两点 我们可以同时启动多个程序&#xff0c;也就意味着我们可以将多个.exe文件加载到内存操作系统如何去管理这些…