【机器学习300问】28、什么是决策树?
〇、两个预测任务
(1)任务一:银行预测偿还能力
当前,某银行正致力于发掘潜在的放贷用户。他们掌握了每位用户的三个关键特征:房产状况、婚姻状况以及年收入。此外,银行还拥有过往这些用户的债务偿还能力的数据。面对这一情境,银行现需制定一套有效的策略,用以评估新用户的偿债能力,从而做出是否向其提供贷款的决策。
(2)任务二:相亲优质男性
一位母亲想要为她的女儿介绍合适的男朋友,女孩对此提出了四个明确的要求:年龄、相貌、收入、公务员。她明确表示,只有满足条件的男性,她才愿意与之相亲。面对如此具体的条件,母亲该如何在浩渺的婚恋市场中挑选出一位优质男性,让女儿愿意与之相见呢?
一、什么是决策树
相信你看到上面两个例子的时候,心中已经有了一个判断。你是怎么做的判断呢?我先来说说我是怎么做出决策的。将我所做的决策画成树,这就被称为决策树。
(1)直观理解
对与任务一来说,如果我是银行,我肯定选择对有房子、结了婚、年收入高的人进行放贷。这里思考几个问题,有房子难道就一定能还贷嘛?万一他的房子很偏僻很小不值几个钱呢?不结婚的人也许存款更多,还款能力还强些呢?到底怎么定义高收入呢?
对于任务二来说,如果我是这个女孩儿,我也许会选择年轻点的、长得还行就好、收入中等就行、最好是公务员。同样思考一下,从我的决策中就能够看出有许多的模糊字眼。
(2)定义
决策树是一种有监督学习算法,通过特征选择和递归分割数据集构建树状模型,用于分类或回归分析。其中每个内部节点代表一个特征测试,分支表示不同的测试结果,而叶节点则对应最终的类别或数值预测。分支节点又叫决策节点,叶子节点又叫预测结果节点。
- 每个内部节点代表一个特征或属性测试。
- 每个分支表示该特征可能的输出或取值。
- 每个叶节点(终端节点)则代表一个决策结果或者分类标签,在分类任务中对应某个类别的预测;而在回归任务中,叶节点会对应一个连续数值的预测。
二、不就是if-else语句吗怎么被称为机器学习模型
如果你也有这种疑问,不妨回顾一下先前我们做的两个小预测任务,上面提出了的思考问题可以总结为两个:我们为什么会这样的特征来辅助决策?以及我们要用怎样的阈值做为判断依据?
决策树确实可以被视为一系列嵌套的if-else语句,但其作为机器学习模型的意义在于,这些if-else规则不是由人类程序员手动编写,而是通过从训练数据中自动学习得出。在构建决策树的过程中,特征的选择和阈值的确立都是根据优化准则自动生成的。
(1)该选哪些特征?
在构建决策树时,算法会遍历所有可能的特征,并计算每个特征用于划分数据集时带来的信息增益、基尼不纯度或者其他类似的评价指标(取决于所使用的具体算法)。信息增益是衡量一个特征对分类纯度提升程度的一种量度,而基尼不纯度则用来表示样本集合不确定性或随机性的大小。在每一轮迭代中,算法会选择当前能够带来最大信息增益或最小基尼不纯度的特征作为节点来划分数据集。这样做的目的是逐步形成一个能最好地描述输入数据与输出类别之间关系的树状结构。
(2)该选哪个阈值?
对于数值型特征来说,在确定了使用该特征进行分割之后,算法需要找到一个最优的阈值来划分数据。这个阈值通常是在当前特征的所有可能取值中搜索出来的,使得基于此阈值划分数据后,子集的信息增益或基尼不纯度达到最优。例如,在CART(Classification and Regression Trees)算法中,对于连续特征,会在特征的所有不同取值上尝试,以找到最佳分割点。
三、决策树的优缺点
(1)优点
-
易于理解和解释:决策树的结构直观且易于理解,可以生成易于解释的规则,对于非专业人士来说也很友好,可以可视化展示整个决策过程。
-
可处理多种类型的数据:无论是离散型、连续型还是混合型数据,决策树都可以直接处理,无需进行复杂的预处理。
-
能够处理缺失值:在一定程度上,决策树算法可以自动处理特征值缺失的情况,通过特定策略(如基于均值、中位数或众数填充)来决定缺失值所在分支。
-
特征选择能力:决策树能够对输入变量的重要性进行排序,帮助识别哪些特征对预测结果影响最大。
-
并行性:决策树训练过程中,不同节点的划分可以相对独立地计算,理论上支持并行化构建。
(2)缺点
-
过拟合问题:决策树容易生成过于复杂的树结构,导致过拟合训练数据,不适用于未见过的新数据,即泛化能力可能较差。
-
不擅长处理连续数值特征:虽然决策树可以处理连续特征,但在处理连续变量时可能不如其他模型(如线性回归)那样准确有效。
-
偏向于选择类别较多的特征:决策树倾向于选择拥有更多类别的特征进行分割,这可能导致忽略那些对决策真正重要的但类别较少的特征。
-
无法捕捉非线性关系和光滑边界:对于数据分布较为复杂或者分类边界平滑的问题,决策树的表现可能不尽如人意。
-
不稳定:对于数据的小幅变动敏感,尤其是当多个特征具有相近重要性时,决策树的结果可能会因为样本顺序的变化而产生较大差异。

四、如何避免决策树的过拟合?
避免决策树过拟合的主要策略包括:
-
设置树的最大深度:限制决策树的最大深度可以防止模型过于复杂,减少节点划分的次数,从而降低过拟合的风险。
-
最小样本数(或叶子节点最少样本数):要求每个内部节点(或者叶子节点)至少包含一定数量的样本,这样可以防止在训练集上构建过度复杂的分支结构。
-
剪枝:通过后剪枝或预剪枝的方法来简化决策树。后剪枝是先生成一颗完整的决策树,然后从底部开始自下而上地删除对验证集性能改善不大的子树;预剪枝则是在构建过程中,每当扩展一个节点时,都基于验证集的表现决定是否继续划分。
相关文章:
【机器学习300问】28、什么是决策树?
〇、两个预测任务 (1)任务一:银行预测偿还能力 当前,某银行正致力于发掘潜在的放贷用户。他们掌握了每位用户的三个关键特征:房产状况、婚姻状况以及年收入。此外,银行还拥有过往这些用户的债务偿还能力的…...
嵌入式学习33-网络通信
网络: 数据传输,数据共享 1.网络协议模型: OSI协议模型 7 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式&…...
FFmepg--内存IO模式
功能: 内存IO模式:avio_alloc_context(): 自定义读写文件方式,打开文件 api // 自定义IO AVIOContext * avio_alloc_context (unsigend char * buffer;int buffer_size;void *opaque;int (*read_packet)(void * opaque, uint8_t * buf,in…...
Android AMS
Android进阶:一口气读完《Android进阶解密》 - 掘金 Android AMS(Activity Manager Service)实现的功能 **管理应用程序的生命周期:**启动、停止、暂停、恢复和销毁应用程序。 **控制应用程序的启动顺序:**确保应用程…...
2024暑期实习八股笔记
文章目录 自我介绍MySQL索引索引种类、B树聚簇索引、非聚簇索引联合索引、最左前缀匹配原则索引下推索引失效索引优化 日志、缓冲池redo log(重做日志)刷盘时机日志文件组 bin log(归档日志)记录格式写入机制 两阶段提交undo log&…...
EDGE 音乐生成的可编辑舞蹈 论文学习笔记
本文不是很严谨,供学习参考,随时更新 EDGE: Editable Dance Generation From Music 音乐生成的可编辑舞蹈 GitHub - Stanford-TML/EDGE: Official PyTorch Implementation of EDGE (CVPR 2023) 1. 我们引入了一种基于扩散的舞蹈生成方法,该…...
laravel 模型多对多,应用
laravel 模型多对多,应用,试卷 跟 区域 多对多关系 一个试卷可以发放到a b c 区域 创建试卷表 CREATE TABLE exams (exam_id int(11) unsigned NOT NULL AUTO_INCREMENT,exam_title varchar(100) NOT NULL DEFAULT COMMENT 标题,created_time int(11…...
嵌入式学习35-网络通信UDP聊天及TCP
题目:基于UDP实现直播间聊天的功能 需求: 软件划分为用户客户端和主播服务端两个软件client.c和server.c 用户客户端负责: 1.接收用户的昵称 2.接收用户输入的信息,能够将信息发送给服务端 3.接收服…...
Python:if条件判断语句
注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 内容简介 比较运算符和关系运算符: 本文将介绍Python中常见的比较运算符,如 (等于)、! 和 <&…...
git 命令怎么回退到某个特定的 commit 并将其推送到远程仓库?
问题 不小心把提交的名称写错提交上远程仓库了,这里应该是 【029】的,这个时候我们想回到【028】这一个提交记录,然后再重新提交【029】到远程仓库,该怎么处理。 解决 1、首先我们找到【028】这条记录的提交 hash,右…...
Python中如何操作数据库?
Python中如何操作数据库? 在Python中操作数据库通常涉及到使用数据库驱动程序或ORM(对象关系映射)库。下面是一些常见的步骤和工具,用于在Python中操作数据库: 1. 选择数据库和驱动程序 首先,…...
【智能算法】蜻蜓算法(DA)原理及实现
目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2016年,Mirjalili受到蜻蜓静态和动态集群行为启发,提出了蜻蜓算法(Dragonfly algorithm, DA)。 2.算法原理 2.1算法思想 蜻蜓集群有两种行为目的:狩猎…...
用A*算法求解八数码问题
用A*算法求解八数码问题 实现两种启发函数实现A*算法测试 实现两种启发函数 采取两种策略实现启发函数: 策略1:不在目标位置的数字个数策略2:曼哈顿距离(将数字直接移动到对应位置的步数总数) # 策略1: 不在目标位置…...
分布式之Ribbon使用以及原理
Ribbon使用以及原理 1、负载均衡的两种方式 服务器端负载均衡 传统的方式前端发送请求会到我们的的nginx上去,nginx作为反向代理,然后路由给后端的服务器,由于负载均衡算法是nginx提供的,而nginx是部署到服务器端的,所…...
android JNI float *转MutableList
data class Test(var data:MutableList<Float> )JNIEXPORT void JNICALL Java_NativeUtils_assignFloatArrayToHealth(JNIEnv *env, jclass clazz, jobject obj, jfloatArray cData) {jclass objClass env->GetObjectClass(obj);// 获取 Test类中的 data 属性jfieldI…...
chatgpt与人类有何不同?
ChatGPT和人类之间存在多个显著的差异。 首先,ChatGPT是一种基于人工智能技术的计算机程序,通过机器学习和自然语言处理等技术,从大量的数据中获取知识并生成语言输出。它主要依赖于算法和数据进行工作,能够迅速处理和检索信息&a…...
论文笔记:Evaluating the Performance of Large Language Models on GAOKAO Benchmark
1 论文思路 采用zero-shot prompting的方式,将试题转化为ChatGPT的输入 对于数学题,将公式转化为latex输入 主观题由专业教师打分 2 数据 2010~2022年,一共13年间的全国A卷和全国B卷 3 结论 3.1 不同模型的zeroshot 高考总分 3.2 各科主…...
MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录
使用 ORDER BY 进行排序 使用 ORDER BY 语句按升序或降序对结果进行排序。 ORDER BY 关键字默认按升序排序。要按降序排序结果,使用 DESC 关键字。 示例按名称按字母顺序排序结果: import mysql.connectormydb mysql.connector.connect(host"l…...
数据结构入门(3)2.链表接口实现
目录 前言 头文件 动态申请一个结点 单链表打印 单链表尾插 单链表的头插 单链表的尾删 单链表头删 单链表查找 单链表在pos位置之后插入x 单链表删除pos位置之后的值 在pos的前面插入 删除pos位置 销毁顺序表 前言 本文将介绍链表常见的功能的实现 头文件 #…...
vscode中解决驱动编写的时候static int __init chrdev_init()报错的问题
目录 错误出错原因解决方法 错误 在入口函数上,出现 expected a ; 这样的提示 出错原因 缺少了 __KERNEL __ 宏定义 解决方法 补上__KERNEL__宏定义 具体做法:在vscode中按下ctrlshiftp ,输入:C/C:Edit Configurations࿰…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
Copilot for Xcode (iOS的 AI辅助编程)
Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot,它能根据上下文补全代码,快速生成常用…...
【2D与3D SLAM中的扫描匹配算法全面解析】
引言 扫描匹配(Scan Matching)是同步定位与地图构建(SLAM)系统中的核心组件,它通过对齐连续的传感器观测数据来估计机器人的运动。本文将深入探讨2D和3D SLAM中的各种扫描匹配算法,包括数学原理、实现细节以及实际应用中的性能对比,特别关注…...
