机器学习 —— 决策树

机器学习 —— 决策树(Decision Tree)详细介绍

决策树是一种直观且易于解释的监督学习算法,广泛应用于分类和回归任务。它通过模拟人类决策过程,将复杂问题拆解为一系列简单的判断规则,最终形成类似 “树” 状的结构。以下从基础概念、原理、算法类型、优缺点及应用场景等方面展开详细介绍。

一、决策树的基础概念

1. 核心定义

决策树是一种基于树状结构进行决策的模型,每个节点代表对某个特征的判断,每条分支代表该判断的可能结果,叶子节点则代表最终的决策结果(分类任务中为类别,回归任务中为数值)。

2. 基本结构

  • 根节点(Root Node):树的起点,包含所有样本数据,是第一个特征判断的起点。
  • 内部节点(Internal Node):表示对某个特征的判断条件(如 “年龄是否> 30 岁”),每个内部节点会根据特征值分裂为多个子节点。
  • 分支(Branch):连接节点的线段,代表特征判断的结果(如 “是” 或 “否”)。
  • 叶子节点(Leaf Node):树的终点,输出最终的预测结果(分类任务中为类别标签,回归任务中为预测值)。

示例:用决策树判断 “是否购买电脑”
根节点:收入水平(高 / 中 / 低)→ 内部节点:年龄(<30/30-40/>40)→ 叶子节点:购买 / 不购买。

二、决策树的工作原理

决策树的核心是如何选择特征进行节点分裂,目标是通过分裂使子节点的 “纯度” 更高(即子节点中的样本尽可能属于同一类别或数值更集中)。具体流程如下:

1. 特征选择:如何分裂节点?

特征选择的关键是通过不纯度指标衡量分裂效果,常用指标包括:

(1)信息增益(Information Gain)—— ID3 算法

基于熵(Entropy) 计算,熵衡量样本集合的混乱程度,熵值越低,纯度越高。

  • 熵的计算公式(针对分类任务):

对于样本集合D,若有k个类别,每个类别占比为pi​,则熵为:

信息增益:分裂后子节点的熵与父节点熵的差值,即:

其中A为特征,Dv​为特征A取第v个值的子样本集,信息增益越大,特征越优。

(2)信息增益率(Gain Ratio)—— C4.5 算法

解决信息增益偏向多值特征的问题(如 “身份证号” 这类特征分裂后熵极低,但无实际意义)。
信息增益率 = 信息增益 / 特征自身的熵(分裂信息)。

(3)基尼指数(Gini Index)—— CART 算法

衡量从样本中随机抽取两个样本,类别不同的概率,基尼指数越低,纯度越高。
计算公式:

CART 算法通过最小化基尼指数选择特征。

(4)均方误差(MSE)—— 回归树

针对回归任务,用子节点样本的均方误差衡量分裂效果,MSE 越小越好:

其中yˉ​为子节点样本的均值。

2. 树的构建过程

  1. 从根节点开始,计算所有特征的不纯度指标(如信息增益)。
  2. 选择最优特征进行分裂,将样本分配到子节点。
  3. 对每个子节点重复步骤 1-2,直到满足停止条件:
    • 子节点样本全部属于同一类别(分类)或数值方差小于阈值(回归)。
    • 节点样本数小于最小分裂阈值。
    • 树的深度达到预设最大值。

3. 剪枝:防止过拟合

决策树若完全生长可能导致过拟合(对训练数据拟合过好,泛化能力差),需通过剪枝优化:

  • 预剪枝(Pre-pruning):在树构建过程中提前停止分裂(如限制深度、最小样本数)。
  • 后剪枝(Post-pruning):先构建完整树,再移除对泛化能力无帮助的分支(如通过交叉验证判断分支是否保留)。

三、常见决策树算法对比

算法任务类型特征选择指标树结构优势缺点
ID3分类信息增益多叉树简单直观不支持连续特征,易过拟合
C4.5分类信息增益率多叉树支持连续特征、缺失值处理计算复杂,不支持回归
CART分类 / 回归基尼指数(分类)、MSE(回归)二叉树可处理分类和回归,效率高对不平衡数据敏感

四、决策树的优缺点

优点

  1. 可解释性强:树结构直观,能清晰展示决策规则(如 “若年龄> 30 且收入高,则购买”)。
  2. 无需特征预处理:对特征缩放、归一化不敏感,可直接处理类别型和数值型特征。
  3. 训练效率高:基于贪心算法,计算复杂度较低(尤其 CART 树)。
  4. 抗噪声能力较强:通过剪枝可减少噪声影响。

缺点

  1. 易过拟合:未剪枝的树可能过度拟合训练数据,泛化能力差。
  2. 对样本敏感:训练数据微小变化可能导致树结构大幅改变(稳定性差)。
  3. 偏向高维特征:信息增益等指标可能优先选择多值特征。
  4. 难以处理非线性关系:单个决策树对复杂数据的拟合能力有限(可通过集成学习弥补)。

五、决策树的扩展:集成学习

为解决单个决策树的局限性,衍生出集成学习方法,通过组合多个决策树提升性能:

  • 随机森林(Random Forest):多个决策树的投票 / 平均,通过随机采样样本和特征降低方差。
  • 梯度提升树(GBDT):迭代生成决策树,每个树修正前序树的误差,提升精度。
  • XGBoost/LightGBM:优化的 GBDT 实现,效率和精度更优,广泛用于竞赛和工业界。

六、应用场景

决策树因其易解释性和实用性,在多个领域广泛应用:

  1. 金融风控:信用评分(如 “收入> 5 万且无逾期,则贷款批准”)。
  2. 医疗诊断:疾病判断(根据症状特征逐步排查病因)。
  3. 客户分类:用户画像与行为预测(如 “高活跃度且消费频繁的用户为优质客户”)。
  4. 工业质检:通过特征判断产品是否合格。
  5. 回归预测:房价预测、销量预测等(回归树)。

总结

决策树是一种简单高效的监督学习算法,核心是通过不纯度指标选择特征分裂节点,结合剪枝优化避免过拟合。尽管存在稳定性差等局限,但通过集成学习(如随机森林、GBDT)可显著提升性能,使其成为工业界和学术界的重要工具。理解决策树的原理是掌握集成学习的基础,也是机器学习入门的核心知识点之一。

用一个简单案例说明ID3的计算方法

数据如图所示

以下是使用 ID3 算法 构建决策树的详细计算过程,基于你提供的天气数据集(判断是否适合户外运动 play),步骤如下:

1. 数据集与目标

  • 数据集:包含 14 条样本,特征为 outlook(天气)、temperature(温度)、humidity(湿度)、windy(是否有风),标签为 play(是否适合运动,yes/no)。
  • 目标:用 ID3 算法选择特征、构建决策树,实现对 play 的分类。

2. ID3 核心思想:用 信息增益(Information Gain) 选择最优特征

信息增益公式:

  • H(D):数据集 D 的 经验熵(衡量标签不确定性)。
  • H(Dv​):特征 A 取值为 v 时子集 Dv​ 的经验熵。
  • 信息增益越大,特征对分类结果的 “区分度” 越高,优先选它做决策节点。

3. 计算步骤

步骤 1:计算数据集 D 的经验熵 H(D)

标签 play 的分布:

  • yes:9 条(索引 2,3,4,6,8,9,10,11,12)
  • no:5 条(索引 0,1,7,13,5)

经验熵公式:

其中 pk​ 是标签 k 的占比。

代入计算:

步骤 2:对每个特征,计算信息增益 IG(D,A)
特征 1:outlook(取值:sunny、overcast、rainy)
  • 子集划分

    • sunny(D1):5 条(索引 0,1,7,8,10)→ play 分布:no(3 条)、yes(2 条)
    • overcast(D2):4 条(索引 2,6,11,12)→ play 分布:yes(4 条)、no(0 条)
    • rainy(D3):5 条(索引 3,4,5,9,13)→ play 分布:yes(3 条)、no(2 条)
  • 计算各子集的经验熵

  • 信息增益 IG(D,outlook)

特征 2:temperature(取值:hot、mild、cool)
  • 子集划分

    • hot(D1):4 条(索引 0,1,2,12)→ play 分布:yes(2 条)、no(2 条)
    • mild(D2):6 条(索引 3,7,9,10,11,13)→ play 分布:yes(4 条)、no(2 条)
    • cool(D3):4 条(索引 4,5,6,8)→ play 分布:yes(3 条)、no(1 条)
  • 计算各子集的经验熵

  • 信息增益 IG(D,temperature)

特征 3:humidity(取值:high、normal)
  • 子集划分

    • high(D1):7 条(索引 0,1,2,3,7,11,13)→ play 分布:yes(3 条)、no(4 条)
    • normal(D2):7 条(索引 4,5,6,8,9,10,12)→ play 分布:yes(6 条)、no(1 条)
  • 计算各子集的经验熵

  • 信息增益 IG(D,humidity)

特征 4:windy(取值:FALSE、TRUE)
  • 子集划分

    • FALSE(D1):8 条(索引 0,2,3,4,7,8,9,12)→ play 分布:yes(6 条)、no(2 条)
    • TRUE(D2):6 条(索引 1,5,6,10,11,13)→ play 分布:yes(3 条)、no(3 条)
  • 计算各子集的经验熵

  • 信息增益 IG(D,windy)

步骤 3:选择信息增益最大的特征作为根节点

对比 4 个特征的信息增益:

  • IG(outlook)≈0.246(最大)
  • IG(humidity)≈0.151
  • IG(windy)≈0.048
  • IG(temperature)≈0.029

因此,根节点选 outlook

步骤 4:递归划分子集,构建子树

对 outlook 的每个取值(sunny、overcast、rainy),递归重复上述过程(计算子集的经验熵、信息增益,选最优特征)。

以 outlook=overcast 为例:

  • 子集共 4 条样本(索引 2,6,11,12),play 全为 yes → 已是纯子集,直接生成叶节点 play=yes

以 outlook=sunny 为例:

  • 子集共 5 条样本(索引 0,1,7,8,10),play 分布:no(3 条)、yes(2 条)。
  • 继续计算该子集下各特征的信息增益(重复步骤 2),最终会选 humidity 或其他特征进一步划分,直到所有子集都 “纯”(熵为 0)或无特征可分。

以 outlook=rainy 为例:

  • 子集共 5 条样本(索引 3,4,5,9,13),play 分布:yes(3 条)、no(2 条)。
  • 同样递归计算信息增益,选择最优特征(如 windy 或 humidity 等)继续划分。

5. 最终决策树结构

总结

ID3 算法通过 信息增益 选特征,优先拆分 “区分度最高” 的特征。对这个天气数据集,根节点是 outlook,然后递归处理各子集,直到所有叶节点 “纯”(熵为 0)。实际实现时,可通过代码(如 Python + scikit-learn 或手动递归)完整构建决策树。

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

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

相关文章

车规MCU软错误防护技术的多维度分析与优化路径

摘要&#xff1a;随着汽车电子技术的飞速发展&#xff0c;微控制单元&#xff08;MCU&#xff09;在汽车电子系统中的应用日益广泛。然而&#xff0c;大气中子诱发的单粒子效应&#xff08;SEE&#xff09;对MCU的可靠性构成了严重威胁。本文深入探讨了软错误防护技术在车规MCU…

原生微信小程序实现语音转文字搜索---同声传译

效果展示 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/23257ce3b6c149a1bb54fd8bc2a05c68.png#pic_center 注意&#xff1a;引入同声传译组件请看这篇文章 1.search.wxml <view class"search-page"><navigation-bar title"搜索" …

Wireshark安装过程缺失vc_runtimeMinimum_x64.msi文件,安装 Visual C++ Redistributable

一、我大意了 一开始是Npcap装不上。 在这个网站下的&#xff1a; Wireshark (kafan58.com) 安装程序&#xff1a; 安装过程&#xff1a; 无语死了&#xff0c;感觉被骗了......外网下的才是最正版的。 二、外网正版 下载最新的4.4.8版本Wireshark重新安装 2.1 vc_runtime…

高通平台Wi-Fi Display学习-- 调试 Wi-Fi Display 问题

4.1 调试 WFD 性能 4.1.1 通过启用调节器模式验证 WFD 当系统设为调节器模式时,设备的运行时钟将达到峰值。要在系统中启用调节器模式,应 在序列中输入以下命令: 1. adb shell stop mpdecision 2. adb shell echo 1→/sys/devices/system/cpu/cpu1/online 3. adb shell…

5G专网与SD-WAN技术融合:某饮料智能工厂网络架构深度解析

随着工业互联网的快速发展&#xff0c;制造业正从传统的生产模式向智能化、数字化方向转型。某饮料智能工厂项目创新性地引入了5G专网与SD-WAN技术&#xff0c;形成了“连接-计算-应用-安全”的全链条网络架构。本文将深入剖析这两种技术在智能工厂中的应用场景、部署架构&…

Java项目:基于SSM框架实现的公益网站管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+远程部署】

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本公益网站就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&#x…

向华为学习——IPD流程体系之IPD术语

第一章 IPD体系 1.1集成产品开发IPD Integrated Product Development,IPD是一种领先的、成熟的产品开发的管理思想和管理模式。它是根据大量成功的产品开发管理实践总结出来的,并被大量实践证明的高效的产品开发模式。通过IPD,可建立起基于市场和客户需求驱动的集成产品开…

落霞归雁:从自然之道到“存内计算”——用算法思维在芯片里开一条“数据高速航道”

作者 落霞归雁&#xff08;CSDN首发&#xff0c;转载请注明&#xff09; 段落一 现象&#xff1a;当“摩尔”老去&#xff0c;数据却在狂奔 过去 30 年&#xff0c;CPU 频率翻了 60 倍&#xff0c;而 DRAM 带宽只翻了 20 倍。算力与带宽的剪刀差&#xff0c;让“计算”变成“等…

StyleX:Meta推出的高性能零运行时CSS-in-JS解决方案

简介 StyleX 是由 Meta 开发的零运行时 CSS-in-JS 解决方案&#xff0c;在构建时将样式编译为静态 CSS&#xff0c;消除运行时开销。 核心特性 零运行时开销 – 构建时编译为静态 CSS类型安全 – 完整的 TypeScript 支持原子化 CSS – 自动生成原子化类名&#xff0c;最小化…

LINUX 85 SHElL if else 前瞻 实例

问题 判断用户是否存在 id user id $user变量判断vsftpd软件包被安装 rpm -q vsftpd rpm -ql vsftpd >& null[rootweb ~]# rpm -ql vsftpd >/dev/null 2>&1 您在 /var/spool/mail/root 中有邮件yum install vsftpd 内核主版本判断 uname -rcut -d[rootweb ~]#…

2025 年非关系型数据库全面指南:类型、优势

非关系型数据库的分类与特点随着数据量呈指数级增长和数据类型日益多样化&#xff0c;传统关系型数据库在处理海量非结构化数据时面临着严峻挑战。非关系型数据库&#xff08;NoSQL&#xff09;应运而生&#xff0c;它摒弃了传统关系模型的约束&#xff0c;采用更灵活的数据存储…

深度残差网络ResNet结构

Deep Residual Learning for Image Recognition&#xff0c;由Kaiming He、Xiangyu Zhang、Shaoqing Ren和Jian Sun于2016年发表在CVPR上 1512.03385 (arxiv.org)https://arxiv.org/pdf/1512.03385 下图中&#xff0c;左侧为VGG19网络&#xff0c;中间为34层的普通网络&#xf…

python笔记--socket_TCP模拟浏览器实现

""" 1,导包 2,创建TCP套接字 3,建立连接 4,拼接客户端请求报文 5,发送请求报文 6,接收响应报文 7,过滤出html页面 8,保存为html文件 9,关闭套接字 """ # 1,导包 import socket # 2,创建TCP套接字 tcp_socketsocket.socket(socket.AF_INET,socket…

西门子PLC基础指令4:置位指令 S、复位指令 R

布尔指令 1、置位指令 S Setbit 是要进行置位操作的地址的首地址&#xff0c;N 是从该首地址开始连续置位的位数 。 LD I0.0 // 装载输入继电器I0.0的状态&#xff08;当I0.0为ON时&#xff0c;执行后续指令&#xff09; S Q0.0, 3 // 从Q0.0开始&#xff0c;连续置位3…

2.3 子组件样式冲突详解

Vue2组件样式冲突的成因与解决方案组件样式冲突的根本原因在Vue单页面应用中&#xff0c;所有组件的DOM结构最终都会合并到同一个index.html 页面中。若子组件未使用scoped属性&#xff0c;其样式会默认全局生效&#xff0c;导致不同组件中相同选择器&#xff08;如h1、.contai…

26-数据仓库与Apache Hive

1.数据仓库 是什么&#xff1f;解决什么&#xff1f;1.1 数据仓库Data Warehouse 数仓 / DW 是一个用于存储、分析、报告的数据系统.目的&#xff1a;构建面向分析的集成数据环境&#xff0c;分析结构为企业提供决策支持。数仓专注于分析数仓本身不“”生产“”数据&#xff0c…

前端開發技術教學(二)

書接上回&#xff1a;前端開發技術教學(一) -CSDN博客 必要資源&#xff1a;TRAE - The Real AI Engineer 目录 一) 自定義函數 - function 二) DOM操控 DOM事件 a.) onclick b.) onkeydown 三) AI寫代碼 書接上回說到的前端3種主語言以及其用法&#xff0c;這期我們…

设计模式 - 组合模式:用树形结构处理对象之间的复杂关系

文章目录一、引言二、模式原理分析三、代码示例四、核心要点五、使用场景分析六、案例七、为何使用组合模式&#xff1f;八、优缺点剖析九、最佳实践建议十、总结一、引言 “组合模式”&#xff08;Composite Pattern&#xff09;常被误解为“组合关系”。前者专注于将对象组合…

STM32U575低功耗调试

开启了MSIK时钟导致功耗变高在stop2模式下, 整体板子25.41uA; 如果在standby模式, 整体板子5uA;如果在stop2模式, 并且把LPTIM3,4选择的时钟是MSIK, 整体功耗53.59uA2.stanby模式板子整体5uA调试的时候, 可以让板子进入standby模式, 如果电流很小, 可以证明板子没有漏电(图画错…

基于ARM+FPGA多通道超声信号采集与传输系统设计

针对超声信号采集系统在多通道同步采集和高速数据传输所面临的挑战,设计并实现了一种 基于 FPGA 的8通道超声信号同步采集与传输系统。系统以FPGA 作为主控芯片,ADI公司的 AD9279作 为8通道超声信号同步采集的模拟前端和模数转换芯片,通过 DDR3SDRAM 及 USB3.0实现数据缓存和 高…