信息增益(Information Gain) 是一种衡量某个特征在对数据集进行划分时带来的信息量减少的指标。它常用于决策树算法中来选择分裂点,以便将数据集划分为更加纯净的子集。信息增益的概念基于信息熵,信息熵用于衡量数据集的不确定性或混乱程度,而信息增益衡量的是在某个特征下,数据集划分后这种不确定性减少的量。
信息熵的概念
在了解信息增益之前,我们先回顾 信息熵(Entropy) 的定义。信息熵
E
(
D
)
E(D)
E(D) 衡量的是数据集
D
D
D 中分类的不确定性。其公式为:
E
(
D
)
=
−
∑
k
=
1
Y
p
k
log
p
k
E(D) = - \sum_{k=1}^Y p_k \log p_k
E(D)=−k=1∑Ypklogpk
其中:
- p k p_k pk 是类别 k k k 的概率(数据集中属于类别 k k k 的样本数除以总样本数)。
- Y Y Y 是类别的数量。
信息熵的值越大,表示数据集的不确定性越大;信息熵的值越小,表示数据集更加纯净。
信息增益的定义
信息增益(IG) 表示通过使用某个特征
X
X
X 来划分数据集后,目标变量
Y
Y
Y 的不确定性(熵)减少的程度。信息增益的计算公式为:
I
G
(
D
,
X
)
=
E
(
D
)
−
E
(
D
∣
X
)
IG(D, X) = E(D) - E(D|X)
IG(D,X)=E(D)−E(D∣X)
其中:
- E ( D ) E(D) E(D) 是划分之前数据集 D D D 的熵(即数据集中目标变量 Y Y Y 的不确定性)。
- E ( D ∣ X ) E(D|X) E(D∣X) 是在特征 X X X 的条件下,划分后的数据集的加权平均熵,表示划分后的数据集的剩余不确定性。
计算信息增益的步骤
-
计算原始数据集的熵 E ( D ) E(D) E(D):
- 首先计算数据集在没有划分时的熵(即数据集中各类样本的熵)。
-
根据特征 X X X 进行划分:
- 使用特征 X X X 将数据集划分为多个子集。每个子集对应特征 X X X 的某个取值。
-
计算划分后的加权平均熵 E ( D ∣ X ) E(D|X) E(D∣X):
- 计算每个子集的熵,并根据每个子集的样本数对其进行加权平均:
E ( D ∣ X ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ E ( D i ) E(D|X) = \sum_{i=1}^n \frac{|D_i|}{|D|} E(D_i) E(D∣X)=i=1∑n∣D∣∣Di∣E(Di)
其中 D i D_i Di 是按特征 X X X 划分后的第 i i i 个子集, ∣ D i ∣ |D_i| ∣Di∣ 是子集 D i D_i Di 中的样本数量, ∣ D ∣ |D| ∣D∣ 是原始数据集的样本数量。
- 计算每个子集的熵,并根据每个子集的样本数对其进行加权平均:
-
计算信息增益 I G ( D , X ) IG(D, X) IG(D,X):
- 信息增益就是原始数据集熵和划分后加权平均熵的差值。差值越大,说明该特征 X X X 对目标变量 Y Y Y 的不确定性减少得越多,表示该特征越重要。
举例说明
假设我们有一个简单的二元分类问题,数据集 D D D 包含 10 个样本,目标是分类为“是”或“否”。现在我们有一个特征 X X X,我们希望通过计算信息增益来确定该特征是否适合进行划分。
1. 计算原始数据集的熵 E ( D ) E(D) E(D)
假设在数据集中,有 6 个样本的类别是“是”,4 个样本的类别是“否”,则数据集的熵
E
(
D
)
E(D)
E(D) 为:
E
(
D
)
=
−
(
6
10
log
2
6
10
+
4
10
log
2
4
10
)
E(D) = - \left( \frac{6}{10} \log_2 \frac{6}{10} + \frac{4}{10} \log_2 \frac{4}{10} \right)
E(D)=−(106log2106+104log2104)
E ( D ) = − ( 0.6 log 2 0.6 + 0.4 log 2 0.4 ) E(D) = - \left( 0.6 \log_2 0.6 + 0.4 \log_2 0.4 \right) E(D)=−(0.6log20.6+0.4log20.4)
E ( D ) ≈ 0.971 E(D) \approx 0.971 E(D)≈0.971
2. 根据特征 X X X 进行划分
假设特征 X X X 可以取两个值 X 1 X_1 X1 和 X 2 X_2 X2,划分后的数据集如下:
- 当 X = X 1 X = X_1 X=X1 时,数据集包含 5 个样本,其中 4 个类别为“是”,1 个类别为“否”。
- 当 X = X 2 X = X_2 X=X2 时,数据集包含 5 个样本,其中 2 个类别为“是”,3 个类别为“否”。
3. 计算划分后的加权平均熵 E ( D ∣ X ) E(D|X) E(D∣X)
首先分别计算两个子集的熵:
-
对 X 1 X_1 X1 子集:
E ( D 1 ) = − ( 4 5 log 2 4 5 + 1 5 log 2 1 5 ) E(D_1) = - \left( \frac{4}{5} \log_2 \frac{4}{5} + \frac{1}{5} \log_2 \frac{1}{5} \right) E(D1)=−(54log254+51log251)E ( D 1 ) ≈ 0.722 E(D_1) \approx 0.722 E(D1)≈0.722
-
对 X 2 X_2 X2 子集:
E ( D 2 ) = − ( 2 5 log 2 2 5 + 3 5 log 2 3 5 ) E(D_2) = - \left( \frac{2}{5} \log_2 \frac{2}{5} + \frac{3}{5} \log_2 \frac{3}{5} \right) E(D2)=−(52log252+53log253)E ( D 2 ) ≈ 0.971 E(D_2) \approx 0.971 E(D2)≈0.971
现在根据子集样本数,计算加权平均熵:
E ( D ∣ X ) = 5 10 E ( D 1 ) + 5 10 E ( D 2 ) E(D|X) = \frac{5}{10} E(D_1) + \frac{5}{10} E(D_2) E(D∣X)=105E(D1)+105E(D2)
E ( D ∣ X ) = 0.5 × 0.722 + 0.5 × 0.971 E(D|X) = 0.5 \times 0.722 + 0.5 \times 0.971 E(D∣X)=0.5×0.722+0.5×0.971
E ( D ∣ X ) = 0.8465 E(D|X) = 0.8465 E(D∣X)=0.8465
4. 计算信息增益 I G ( D , X ) IG(D, X) IG(D,X)
最后,信息增益为原始熵与划分后的加权平均熵的差:
I
G
(
D
,
X
)
=
E
(
D
)
−
E
(
D
∣
X
)
IG(D, X) = E(D) - E(D|X)
IG(D,X)=E(D)−E(D∣X)
I G ( D , X ) = 0.971 − 0.8465 = 0.1245 IG(D, X) = 0.971 - 0.8465 = 0.1245 IG(D,X)=0.971−0.8465=0.1245
结论
- 该特征 X X X 的信息增益为 0.1245。
- 信息增益越高,表示该特征越有助于减少数据集的不确定性,因此越适合作为决策树的分裂点。
- 决策树算法通常会选择信息增益最大的特征来进行数据集的划分。
总结
信息增益用于衡量特征的划分对数据集的不确定性减少程度。通过选择信息增益最大的特征,决策树算法能够有效地构建模型,使得每一步划分都尽可能地提高数据集的纯度。这使得决策树能够做出更加准确的分类决策。