1. 简介

决策树是一种用于监督学习的贪心算法,广泛应用于分类和回归任务。它通过递归选择最优特征划分数据集,从而构建一棵从根节点到叶子节点的树结构。

在构建过程中,节点的划分质量直接影响最终模型的性能。为此,我们需要一种衡量节点“纯度”的方法 —— 节点不纯度(Node Impurity)


2. 决策树的节点划分

在训练阶段,决策树会根据所有特征对节点进行划分,最终选择使划分后节点纯度最高(即不纯度最低)的方式。

通俗地讲,节点不纯度衡量了当前节点中标签的同质性。纯度越高,说明该节点中样本越可能属于同一类别。

以下图为例,从左到右分别是“高度不纯”、“中等不纯”和“纯节点”:

Very Impure, Less Impure, and Minimum Impurity Achieved at three nodes

在分类任务中,常用的不纯度指标包括:

  • Gini 不纯度(Gini Impurity)
  • 信息熵(Entropy)

3. Gini 不纯度

Gini 不纯度是衡量一个节点中样本被错误分类的概率。

设数据集 $ T $ 包含 $ n $ 个类别的样本,其 Gini 不纯度定义为:

(1)
$$ gini(T) = 1 - \sum_{j=1}^{n} p_j^2 $$

其中 $ p_j $ 是类别 $ j $ 在数据集 $ T $ 中的频率。

✅ Gini 不纯度的取值范围

  • 最小值为 0:节点中所有样本属于同一类别(纯节点)
  • 最大值为 0.5:节点中样本类别分布最不均衡(最不纯)

3.1 示例:计算 Gini 不纯度

我们以一个包含红蓝两种球的集合为例,计算不同情况下的 Gini 不纯度:

红球数 蓝球数 计算公式 Gini 值
4 0 $ 1 - (1^2 + 0^2) $ 0
2 2 $ 1 - ((0.5)^2 + (0.5)^2) $ 0.5
3 1 $ 1 - ((0.75)^2 + (0.25)^2) $ 0.375

4. 信息熵(Entropy)

信息熵是另一种衡量节点不纯度的方式,常用于信息论中。

设数据集 $ T $ 包含 $ n $ 个类别的样本,则其信息熵定义为:

(2)
$$ entropy(T) = - \sum_{j=1}^{n} p_j \cdot \log p_j $$

✅ 信息熵的取值范围

  • 最小值为 0:纯节点
  • 最大值为 1:样本分布最不均衡

4.1 示例:计算信息熵

同样以红蓝球为例:

红球数 蓝球数 计算公式 Entropy 值
4 0 $ -1 \cdot \log 1 = 0 $ 0
2 2 $ -0.5 \cdot \log 0.5 - 0.5 \cdot \log 0.5 $ 1.0
3 1 $ -0.75 \cdot \log 0.75 - 0.25 \cdot \log 0.25 $ 0.811

5. 数据划分策略

在训练决策树时,我们希望找到一个划分方式,使得划分后的子节点尽可能“纯”。

5.1 信息增益(Information Gain)

信息增益是指父节点的熵与子节点熵的加权平均之差。

设父节点 $ T $ 被划分为 $ m $ 个子节点 $ T_1, T_2, ..., T_m $,则信息增益定义为:

(3)
$$ Gain_{split}(T) = entropy(T) - \sum_{i=1}^{m} \frac{N_i}{N} \cdot entropy(T_i) $$

其中 $ N_i $ 是子节点 $ T_i $ 的样本数,$ N $ 是总样本数。

5.2 示例:基于信息增益划分

我们以一个“是否打网球”的数据集为例:

Day Outlook Temperature Humidity Wind Play Tennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Weak Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Strong Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No

该数据集包含 9 个“是”和 5 个“否”,初始熵为 0.94。

我们尝试按“Outlook”划分:

  • Sunny: 2 Yes, 3 No → 熵为 0.971
  • Overcast: 4 Yes, 0 No → 熵为 0
  • Rain: 3 Yes, 2 No → 熵为 0.971

计算信息增益:

(5)
$$ Gain(S, Outlook) = 0.940 - \frac{5}{14} \cdot 0.971 - \frac{4}{14} \cdot 0 - \frac{5}{14} \cdot 0.971 = 0.247 $$

类似地,我们还可以计算其他属性的信息增益:

  • Wind: 0.048
  • Humidity: 0.151
  • Temperature: 0.029

结论:Outlook 是信息增益最高的特征,应作为根节点划分属性

5.3 示例:基于 Gini 不纯度划分

我们同样可以使用 Gini 不纯度来评估划分质量。

计算 Outlook 的 Gini 不纯度:

  • Sunny: Gini = 0.48
  • Overcast: Gini = 0
  • Rain: Gini = 0.48

加权平均:

(10)
$$ gini(Outlook) = \frac{5}{14} \cdot 0.48 + \frac{4}{14} \cdot 0 + \frac{5}{14} \cdot 0.48 = 0.343 $$

其他属性的 Gini 不纯度:

  • Temperature: 0.423
  • Humidity: 0.368
  • Wind: 0.5

结论:Outlook 的 Gini 不纯度最低,仍应作为根节点


6. 总结

在构建决策树时,我们通过计算节点的不纯度来决定如何划分数据。常见的不纯度指标包括:

  • Gini 不纯度
  • 信息熵

通过选择划分后子节点不纯度最小的特征,我们可以构建出更精确的决策树模型。

关键点总结:

  • 节点不纯度衡量样本的同质性
  • Gini 不纯度和信息熵是两种常用指标
  • 信息增益用于评估划分质量
  • 选择划分特征时,优先选择信息增益最大或 Gini 不纯度最小的特征

通过合理使用这些指标,我们可以更高效地训练出性能良好的决策树模型。


原始标题:Node Impurity in Decision Trees