当前位置: 首页 > news >正文

从决策树基础到熵与信息增益

在机器学习的分类任务中,决策树是最直观、最易理解的算法之一。它像一棵 “判断树”,通过层层分支的决策逻辑,将复杂的分类问题拆解为简单的是非判断。而支撑这棵 “树” 生长的核心,正是熵(Entropy)与信息增益(Information Gain)—— 前者衡量数据的 “混乱程度”,后者决定分支的 “最优方向”。今天,我们就结合 PPT 中的经典案例,从基础概念到实战计算,完整拆解决策树的核心原理。

一、决策树的基本结构:先搞懂 “树的语言”

在学习熵与信息增益前,我们需要先明确决策树的核心组成。以 PPT 中 “是否参加聚会” 的决策流程为例,一棵完整的决策树包含三类关键节点,它们的分工清晰且明确:

1. 根节点:决策的 “起点”

根节点是整个决策树的入口,也是第一个需要判断的核心问题。在 “是否参加聚会” 的案例中,“有没有聚会?” 就是根节点—— 它是所有后续决策的起点,没有父节点,直接开启整个判断流程。

2. 非叶子节点与分支:决策的 “中间站”

非叶子节点是决策的 “中间判断步骤”,它们会根据某个特征(如 “有没有作业要交”“是否懒惰在家”)产生分支。例如 PPT 中的 “有没有作业要交”“懒惰在家?”,就是典型的非叶子节点;而连接这些节点的 “= 是”“= 否”“= 紧急” 等判定条件,就是分支。
这些节点的作用是 “逐步缩小范围”:通过一次又一次的特征判断,将原本混乱的数据集拆分成更 “纯粹” 的子集,为最终的结果铺路。

3. 叶子节点:决策的 “终点”

叶子节点是决策的最终结果,也是分类任务的 “答案”。在案例中,“聚会”“去酒吧”“学习(紧急分支)”“看电视” 等结果,都属于叶子节点 —— 它们没有子节点,代表着一次决策的完整结束。
叶子节点的 “纯度” 是决策树的核心追求:叶子节点越纯粹(比如某个叶子节点下全是 “学习” 的结果),说明决策逻辑越精准,分类效果越好。

二、熵(Entropy):衡量数据 “混乱度” 的标尺

搞懂了决策树的结构,我们就要思考:如何判断一个节点的 “纯度”?如何知道哪个特征分支能让数据更 “有序”?这就需要引入 “熵” 的概念 —— 它是信息论中衡量随机变量不确定性(混乱度)的指标。

1. 熵的定义:混乱度越高,熵值越大

熵的公:
H(X)=−∑i=1n​pi​⋅log(pi​)

  • H(X):随机变量 X 的熵(混乱度);
  • n:随机变量 X 的类别数量(比如 “学习 / 休闲” 就是 2 类);
  • pi​:第 i 类在数据集中的占比(如 “学习” 天数占总天数的比例);
  • log:通常以 2 为底(信息论常用),也可用自然对数,核心逻辑一致。

核心规律

  • 当数据完全 “纯粹”(某一类占比 100%)时,熵 = 0(比如 10 天全是 “学习”,没有 “休闲”,不确定性为 0);
  • 当数据完全 “混乱”(各类占比均衡)时,熵最大(比如 10 天中 5 天 “学习”、5 天 “休闲”,熵 = 1,不确定性最高)。

2. 实战计算:以 14 天打球数据为例

PPT 中常以 “14 天是否打球” 的数据集讲解熵的计算,我们就以此为案例,一步步拆解计算过程:

步骤 1:统计类别数量

先逐行统计 14 天中 “打球(TRUE)” 和 “不打球(FALSE)” 的天数:

  • 打球(TRUE):6 天;
  • 不打球(FALSE):14-6=8 天。
步骤 2:计算各类别占比pi​

占比 = 类别数量 / 总数量(14 天),因此:

  • 打球占比p1​=6/14≈0.4286;
  • 不打球占比p2​=8/14≈0.5714。
步骤 3:代入公式计算熵

先计算每一项pi​⋅log2​(pi​),再求和取反:

  • 第一项:0.4286×log2​(0.4286)≈0.4286×(−1.222)≈−0.524;
  • 第二项:0.5714×log2​(0.5714)≈0.5714×(−0.792)≈−0.453;
  • 求和:−0.524+(−0.453)=−0.977;
  • 取反(公式中的负号):H(D)=−(−0.977)≈0.977。

最终,14 天打球数据的熵约为 0.977,说明数据存在一定的混乱度(既不是全打球,也不是全不打球),需要通过分支进一步降低不确定性。

三、信息增益(Information Gain):找到 “最优分支” 的关键

知道了如何衡量混乱度,接下来的问题是:面对多个特征(如 “是否有作业”“天气如何”),该选哪个特征作为分支依据?答案就是 “信息增益”—— 它衡量的是 “某个特征分支后,数据混乱度降低的程度”,信息增益越大,说明这个特征的 “分类能力越强”。

1. 信息增益的定义:混乱度的 “下降值”

信息增益的公式同样简洁,PPT 中明确为:
IG(D,a)=H(D)−H(D∣a)

  • IG(D,a):特征 a 对数据集 D 的信息增益;
  • H(D):数据集 D 的 “经验熵”(分支前的混乱度);
  • H(D∣a):数据集 D 按特征 a 分支后的 “条件熵”(分支后的平均混乱度)。

核心逻辑:信息增益 =“分支前的混乱度” - “分支后的平均混乱度”。差值越大,说明分支后数据的不确定性降低越多,这个特征就越适合作为当前节点的分支依据。

2. 实战计算:以 “是否有作业” 特征为例

我们继续用 “14 天打球数据”,假设新增 “是否有作业” 的特征,计算该特征的信息增益,判断它是否适合作为分支:

步骤 1:计算分支前的经验熵H(D)

根据前文计算,14 天打球数据的经验熵H(D)≈0.977(分支前的混乱度)。

步骤 2:按 “是否有作业” 分支,统计子集数据

将 14 天按 “有作业”“无作业” 拆分为两个子集D1​和D2​:

  • 子集D1​(有作业):共 4 天,其中 “学习(不打球)”3 天,“休闲(打球)”1 天;
  • 子集D2​(无作业):共 10 天,其中 “学习(不打球)”2 天,“休闲(打球)”8 天。
步骤 3:计算每个子集的熵H(D1​)和H(D2​)
  • 计算H(D1​)(有作业子集):
    p1​=3/4=0.75(不打球),p2​=1/4=0.25(打球);
    H(D1​)=−[0.75×log2​(0.75)+0.25×log2​(0.25)]≈−[0.75×(−0.415)+0.25×(−2)]≈0.811。

  • 计算H(D2​)(无作业子集):
    p1​=2/10=0.2(不打球),p2​=8/10=0.8(打球);
    H(D2​)=−[0.2×log2​(0.2)+0.8×log2​(0.8)]≈−[0.2×(−2.322)+0.8×(−0.322)]≈0.722。

步骤 4:计算条件熵H(D∣a)

条件熵是 “子集熵的加权平均”,权重为子集占总数据的比例:

  • D1​占比:4/14 ≈ 0.2857;
  • D2​占比:10/14 ≈ 0.7143;
  • H(D∣a)=0.2857×0.811+0.7143×0.722≈0.745。
步骤 5:计算信息增益IG(D,a)

代入公式:
IG(D,a)=H(D)−H(D∣a)≈0.977−0.745≈0.232。

这意味着,用 “是否有作业” 作为分支特征后,数据的混乱度降低了 0.232—— 如果后续还有 “天气”“是否有课” 等特征,我们只需重复上述步骤,选择信息增益最大的特征,就是当前节点的 “最优分支”。

四、决策树的核心逻辑:从 “混乱” 到 “有序” 的迭代

通过熵与信息增益的计算,我们终于能理解决策树的生长逻辑:

  1. 以 “根节点”(如 “是否打球”)为起点,计算所有候选特征的信息增益;
  2. 选择信息增益最大的特征作为当前节点的分支依据,将数据拆分为多个子集;
  3. 对每个子集重复步骤 1-2(递归),直到子集的熵为 0(完全纯粹)或没有新特征可分支;
  4. 最终形成的 “叶子节点”,就是分类任务的最终答案。

这种 “从混乱到有序” 的迭代过程,让决策树既具备清晰的可解释性(每一步分支都能对应实际业务逻辑),又能高效解决分类问题 —— 这也是它在金融风控、医疗诊断、用户分层等场景中广泛应用的核心原因。

http://www.dtcms.com/a/337273.html

相关文章:

  • 网络间的通用语言TCP/IP-网络中的通用规则1
  • 本地文件上传到gitee仓库的详细步骤
  • sem_post函数的定义及作用
  • 【81页PPT】国内某知名大型制药企业制药数字化转型项目汇报方案(附下载方式)
  • 无人设备遥控器之操控信号精度篇
  • 【68页PPT】MES系统数字化工厂解决方案(附下载方式)
  • 深入剖析以太坊虚拟机(EVM):区块链世界的计算引擎
  • go 多版本共存【goup + alias方案】
  • React diff Vue diff介绍
  • 【2025CVPR-目标检测方向】RaCFormer:通过基于查询的雷达-相机融合实现高质量的 3D 目标检测
  • 牛子图论进阶
  • TEST_
  • Linux系统启动原理及故障排除
  • 场外个股期权的行权日是t+多少个交易日?
  • 【牛客刷题】最大公约数与最小公倍数:算法详解与实现
  • linux中的hostpath卷与nfs卷以及静态持久卷的区别
  • JAiRouter 架构揭秘:一个面向 AI 时代的响应式网关设计
  • Flutter 自定义 Switch 切换组件完全指南
  • 技术经典场景之协议转换
  • IR-CUT与CCD CMOS的关系
  • 国标:开展环境卫生满意度调查
  • 【P18 3-10】OpenCV Python—— 鼠标控制,鼠标回调函数(鼠标移动、按下、。。。),鼠标绘制基本图形(直线、圆、矩形)
  • 【笔记】和各大AI大语言模型合作写项目—slirp.go
  • 之前说的要写的TCP高性能服务器,今天来了
  • 算法题打卡力扣第26. 删除有序数组中的重复项(easy))
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(4):31-40语法
  • 在react props中在参数中定义参数类型
  • Leetcode 16 java
  • 发布npmjs组件库
  • 政策技术双轮驱动智慧灯杆市场扩容,塔能科技破解行业痛点