问题背景
假设我们有一个数据集 D D D,总共包含 12 个样本,分为两类:类别 A 和类别 B。我们有一个特征 X X X,它可以将数据集划分为三个子集 D 1 D_1 D1、 D 2 D_2 D2 和 D 3 D_3 D3。
具体数据如下:
-
原始数据集 D D D:
- 类别 A:7 个样本
- 类别 B:5 个样本
-
特征 X X X 的划分结果:
- 子集 D 1 D_1 D1(特征 X X X 取值为 1 时):5 个样本,其中 4 个是类别 A,1 个是类别 B。
- 子集 D 2 D_2 D2(特征 X X X 取值为 2 时):4 个样本,其中 2 个是类别 A,2 个是类别 B。
- 子集 D 3 D_3 D3(特征 X X X 取值为 3 时):3 个样本,其中 1 个是类别 A,2 个是类别 B。
现在我们计算原始数据集的基尼指数,以及划分后的加权基尼指数。
1. 计算原始数据集 D D D 的基尼指数
原始数据集中,类别 A 的比例为 p A = 7 12 p_A = \frac{7}{12} pA=127,类别 B 的比例为 p B = 5 12 p_B = \frac{5}{12} pB=125。
基尼指数
G
(
D
)
G(D)
G(D) 的计算公式为:
G
(
D
)
=
1
−
∑
k
=
1
K
p
k
2
G(D) = 1 - \sum_{k=1}^K p_k^2
G(D)=1−k=1∑Kpk2
其中 K K K 是类别的数量。在我们的例子中:
G ( D ) = 1 − ( p A 2 + p B 2 ) G(D) = 1 - (p_A^2 + p_B^2) G(D)=1−(pA2+pB2)
G ( D ) = 1 − ( ( 7 12 ) 2 + ( 5 12 ) 2 ) G(D) = 1 - \left( \left( \frac{7}{12} \right)^2 + \left( \frac{5}{12} \right)^2 \right) G(D)=1−((127)2+(125)2)
G ( D ) = 1 − ( 0.3403 + 0.1736 ) = 1 − 0.5139 = 0.4861 G(D) = 1 - \left( 0.3403 + 0.1736 \right) = 1 - 0.5139 = 0.4861 G(D)=1−(0.3403+0.1736)=1−0.5139=0.4861
因此,原始数据集 D D D 的基尼指数为 0.4861。
2. 计算划分后子集的基尼指数
接下来,我们根据特征 X X X 的划分结果,分别计算三个子集 D 1 D_1 D1、 D 2 D_2 D2 和 D 3 D_3 D3 的基尼指数。
子集 D 1 D_1 D1 的基尼指数:
子集 D 1 D_1 D1 中,类别 A 的比例为 p A = 4 5 = 0.8 p_A = \frac{4}{5} = 0.8 pA=54=0.8,类别 B 的比例为 p B = 1 5 = 0.2 p_B = \frac{1}{5} = 0.2 pB=51=0.2。
基尼指数
G
(
D
1
)
G(D_1)
G(D1) 计算为:
G
(
D
1
)
=
1
−
(
p
A
2
+
p
B
2
)
G(D_1) = 1 - (p_A^2 + p_B^2)
G(D1)=1−(pA2+pB2)
G ( D 1 ) = 1 − ( 0. 8 2 + 0. 2 2 ) G(D_1) = 1 - (0.8^2 + 0.2^2) G(D1)=1−(0.82+0.22)
G ( D 1 ) = 1 − ( 0.64 + 0.04 ) = 1 − 0.68 = 0.32 G(D_1) = 1 - (0.64 + 0.04) = 1 - 0.68 = 0.32 G(D1)=1−(0.64+0.04)=1−0.68=0.32
子集 D 2 D_2 D2 的基尼指数:
子集 D 2 D_2 D2 中,类别 A 和类别 B 的比例相同, p A = p B = 0.5 p_A = p_B = 0.5 pA=pB=0.5。
基尼指数
G
(
D
2
)
G(D_2)
G(D2) 计算为:
G
(
D
2
)
=
1
−
(
p
A
2
+
p
B
2
)
G(D_2) = 1 - (p_A^2 + p_B^2)
G(D2)=1−(pA2+pB2)
G ( D 2 ) = 1 − ( 0. 5 2 + 0. 5 2 ) G(D_2) = 1 - (0.5^2 + 0.5^2) G(D2)=1−(0.52+0.52)
G ( D 2 ) = 1 − ( 0.25 + 0.25 ) = 1 − 0.5 = 0.5 G(D_2) = 1 - (0.25 + 0.25) = 1 - 0.5 = 0.5 G(D2)=1−(0.25+0.25)=1−0.5=0.5
子集 D 3 D_3 D3 的基尼指数:
子集 D 3 D_3 D3 中,类别 A 的比例为 p A = 1 3 p_A = \frac{1}{3} pA=31,类别 B 的比例为 p B = 2 3 p_B = \frac{2}{3} pB=32。
基尼指数
G
(
D
3
)
G(D_3)
G(D3) 计算为:
G
(
D
3
)
=
1
−
(
p
A
2
+
p
B
2
)
G(D_3) = 1 - (p_A^2 + p_B^2)
G(D3)=1−(pA2+pB2)
G ( D 3 ) = 1 − ( ( 1 3 ) 2 + ( 2 3 ) 2 ) G(D_3) = 1 - \left( \left( \frac{1}{3} \right)^2 + \left( \frac{2}{3} \right)^2 \right) G(D3)=1−((31)2+(32)2)
G ( D 3 ) = 1 − ( 1 9 + 4 9 ) = 1 − 5 9 = 1 − 0.5556 = 0.4444 G(D_3) = 1 - \left( \frac{1}{9} + \frac{4}{9} \right) = 1 - \frac{5}{9} = 1 - 0.5556 = 0.4444 G(D3)=1−(91+94)=1−95=1−0.5556=0.4444
3. 计算划分后的加权基尼指数
现在我们根据划分后的子集数量和基尼指数,计算划分后的加权基尼指数。公式如下:
G
(
D
∣
X
)
=
∑
i
=
1
3
∣
D
i
∣
∣
D
∣
G
(
D
i
)
G(D|X) = \sum_{i=1}^3 \frac{|D_i|}{|D|} G(D_i)
G(D∣X)=i=1∑3∣D∣∣Di∣G(Di)
其中:
- ∣ D i ∣ |D_i| ∣Di∣ 是子集 D i D_i Di 的样本数量, ∣ D ∣ |D| ∣D∣ 是原始数据集的样本数量(即 12 个样本)。
- G ( D i ) G(D_i) G(Di) 是子集 D i D_i Di 的基尼指数。
我们计算每个子集的加权比例:
- D 1 D_1 D1 的权重: 5 12 \frac{5}{12} 125
- D 2 D_2 D2 的权重: 4 12 = 1 3 \frac{4}{12} = \frac{1}{3} 124=31
- D 3 D_3 D3 的权重: 3 12 = 1 4 \frac{3}{12} = \frac{1}{4} 123=41
加权基尼指数的计算如下:
G
(
D
∣
X
)
=
5
12
×
0.32
+
4
12
×
0.5
+
3
12
×
0.4444
G(D|X) = \frac{5}{12} \times 0.32 + \frac{4}{12} \times 0.5 + \frac{3}{12} \times 0.4444
G(D∣X)=125×0.32+124×0.5+123×0.4444
逐项计算:
G ( D ∣ X ) = 0.4167 × 0.32 + 0.3333 × 0.5 + 0.25 × 0.4444 G(D|X) = 0.4167 \times 0.32 + 0.3333 \times 0.5 + 0.25 \times 0.4444 G(D∣X)=0.4167×0.32+0.3333×0.5+0.25×0.4444
G ( D ∣ X ) = 0.1333 + 0.1667 + 0.1111 = 0.4111 G(D|X) = 0.1333 + 0.1667 + 0.1111 = 0.4111 G(D∣X)=0.1333+0.1667+0.1111=0.4111
4. 比较划分前后的基尼指数
- 原始数据集 D D D 的基尼指数是 0.4861。
- 划分后的加权基尼指数是 0.4111。
划分后的加权基尼指数更小,说明通过特征 X X X 进行划分后,数据集的纯度有所提高。决策树会选择这个划分,因为它能够更好地区分数据类别。
总结
- 基尼指数用于衡量数据集的不纯度,基尼指数越低,表示数据集越纯净。
- 加权基尼指数用于评估特征划分的质量,通过对子集的基尼指数进行加权平均来衡量划分后数据集的纯度。
- 当加权基尼指数比原始数据集的基尼指数更小时,表示划分后数据集的纯度得到了提升,这通常是我们在构建决策树时希望看到的结果。