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

在机器学习的分类任务中,决策树是最直观、最易理解的算法之一。它像一棵 "判断树",通过层层分支的决策逻辑,将复杂的分类问题拆解为简单的是非判断。而支撑这棵 "树" 生长的核心,正是熵(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. 最终形成的 "叶子节点",就是分类任务的最终答案。

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

相关推荐
初学小刘2 小时前
决策树:机器学习中的强大工具
算法·决策树·机器学习
小五1272 小时前
机器学习(决策树)
人工智能·决策树·机器学习
没有不重的名么2 小时前
Tmux Xftp及Xshell的服务器使用方法
服务器·人工智能·深度学习·机器学习·ssh
拾零吖4 小时前
吴恩达 Machine Learning(Class 1)
人工智能·机器学习
hllqkbb5 小时前
人体姿态估计-动手学计算机视觉14
人工智能·opencv·计算机视觉·分类
wydaicls6 小时前
用函数实现方程函数解题
人工智能·算法·机器学习
努力当一个优秀的程序员6 小时前
3.逻辑回归:从分类到正则化
人工智能·机器学习
cwn_7 小时前
牛津大学xDeepMind 自然语言处理(1)
人工智能·深度学习·机器学习·自然语言处理
小五1279 小时前
机器学习实例应用
人工智能·机器学习