一、 信息增益
关于信息增益,写得非常好非常通俗易懂的文章:
【结合实例】信息增益的计算_怎么计算信息增益-CSDN博客
1. 定义
信息增益是基于信息论的概念,用于度量在给定特征的情况下,数据集的不确定性减少程度。在决策树中,选择能够使得信息增益最大的特征作为划分节点。
2. 计算方法
- 计算数据集的初始信息熵(Entropy):衡量数据的不确定性程度。
- 根据每个特征的取值对数据集进行划分,计算每个划分的条件熵(Conditional Entropy)。
- 计算每个特征的信息增益,即初始信息熵与条件熵之差。 选择信息增益最大的特征作为划分节点。
信息熵
计算公式:
H
(
Y
)
=
−
∑
i
=
1
m
p
i
log
2
(
p
i
)
H(Y)=-\sum_{i=1}^{m} p_{i}\log_{2}({p_{i}} )
H(Y)=−i=1∑mpilog2(pi)
条件熵
计算公式:
X给定条件下,Y的条件概率分布的熵对X的数学期望
p
(
X
=
x
i
,
Y
=
y
j
)
=
p
i
j
,
i
=
1
,
2
,
.
.
.
,
n
;
j
=
1
,
2
,
.
.
.
,
m
p(X=x_{i},Y=y_{j}) = p_{ij}, i=1,2,...,n;j=1,2,...,m
p(X=xi,Y=yj)=pij,i=1,2,...,n;j=1,2,...,m
H
(
Y
∣
X
)
=
∑
x
⊂
X
p
(
x
)
H
(
Y
∣
X
=
x
)
H(Y|X)=\sum_{x\subset X}^{} p(x)H(Y|X=x)
H(Y∣X)=x⊂X∑p(x)H(Y∣X=x)
H
(
Y
∣
X
)
=
−
∑
x
⊂
X
∑
y
⊂
Y
p
(
x
,
y
)
log
p
(
y
∣
x
)
H(Y|X)=-\sum_{x\subset X}^{} \sum_{y \subset Y}^{} p(x,y)\log p(y|x)
H(Y∣X)=−x⊂X∑y⊂Y∑p(x,y)logp(y∣x)
信息增益
:
I
G
a
i
n
=
H
(
Y
)
−
H
(
Y
∣
X
)
IGain=H(Y)-H(Y|X)
IGain=H(Y)−H(Y∣X)
二、 基尼系数
1. 定义
基尼系数是一种衡量数据集纯度(impurity)的指标,它表示从数据集中随机抽取两个样本,其类别标签不一致的概率。在决策树中,选择基尼系数最小的特征作为划分节点。
2. 计算方法
- 计算数据集的基尼系数:即数据集中每个类别的概率乘以它们的概率之和的补数。
- 根据每个特征的取值对数据集进行划分,计算每个划分的加权基尼系数。
- 选择基尼系数最小的特征作为划分节点。
三、 区别
- 信息增益更侧重于纯度的提升,即在划分后数据的不确定性程度的降低。
- 基尼系数更侧重于衡量数据集的不纯度,即数据中类别标签的混合程度
三、 应用实例
饭店老板想根据顾客的两个特征来预测顾客是否会点一份甜点。这两个特征分别是:是否有小孩(是/否)和是否点了主菜(是/否)。
现在有一组数据,包含了顾客是否点了甜点以及这两个特征的信息,如下所示:
有小孩 | 点主菜 | 点甜点 |
---|---|---|
是 | 是 | 否 |
是 | 否 | 是 |
否 | 是 | 是 |
否 | 否 | 否 |
是 | 是 | 否 |
1. 计算信息增益
需要计算特征“有小孩”和特征“点主菜”的信息增益,然后选择信息增益最大的特征作为划分节点。
首先,计算整个数据集的信息熵(Entropy):
H
(
D
)
=
−
∑
i
=
1
n
p
i
log
2
(
p
i
)
H(D) = -\sum_{i=1}^{n} p_i \log_2(p_i)
H(D)=−i=1∑npilog2(pi)
在这个例子中,类别有两个:点甜点为是和点甜点为否。因此,
p
1
p_1
p1表示点甜点为是的概率,
p
2
p_2
p2表示点甜点为否的概率。
p
1
=
2
5
=
0.4
p_1 = \frac{2}{5} = 0.4
p1=52=0.4
p
2
=
3
5
=
0.6
p_2 = \frac{3}{5} = 0.6
p2=53=0.6
H
(
D
)
=
−
(
0.4
×
log
2
(
0.4
)
+
0.6
×
log
2
(
0.6
)
)
H(D) = -(0.4 \times \log_2(0.4) + 0.6 \times \log_2(0.6))
H(D)=−(0.4×log2(0.4)+0.6×log2(0.6))
接下来,我们要计算按照特征“有小孩”划分后的条件熵和信息增益。假设特征“有小孩”有两个取值:是和否。
H
有小孩
=
是
(
D
)
=
−
(
2
3
×
log
2
(
2
3
)
+
1
3
×
log
2
(
1
3
)
)
H_{有小孩=是}(D) = -(\frac{2}{3} \times \log_2(\frac{2}{3}) + \frac{1}{3} \times \log_2(\frac{1}{3}))
H有小孩=是(D)=−(32×log2(32)+31×log2(31))
H
有小孩
=
否
(
D
)
=
−
(
1
2
×
log
2
(
1
2
)
+
1
2
×
log
2
(
1
2
)
)
H_{有小孩=否}(D) = -(\frac{1}{2} \times \log_2(\frac{1}{2}) + \frac{1}{2} \times \log_2(\frac{1}{2}))
H有小孩=否(D)=−(21×log2(21)+21×log2(21))
然后,计算信息增益:
G
a
i
n
(
有小孩
)
=
H
(
D
)
−
(
3
5
×
H
有小孩
=
是
(
D
)
+
2
5
×
H
有小孩
=
否
(
D
)
)
Gain(有小孩) = H(D) - (\frac{3}{5} \times H_{有小孩=是}(D) + \frac{2}{5} \times H_{有小孩=否}(D))
Gain(有小孩)=H(D)−(53×H有小孩=是(D)+52×H有小孩=否(D))
同样的步骤,可以计算特征“点主菜”的信息增益。最后,选择信息增益最大的特征作为划分节点。
2. 计算基尼系数
计算每个特征的基尼系数,并选择最佳的特征来划分节点。
首先,计算整个数据集的基尼系数。数据集中有两个类别(点甜点为是和否),因此基尼系数的计算公式为:
G i n i ( D ) = 1 − ( p 1 2 + p 2 2 ) Gini(D) = 1 - (p_1^2 + p_2^2) Gini(D)=1−(p12+p22)
其中, p 1 p_1 p1 和 p 2 p_2 p2分别表示两个类别的概率。在这个例子中,点甜点为是的概率 p 1 = 2 5 p_1 = \frac{2}{5} p1=52,点甜点为否的概率 p 2 = 3 5 p_2 = \frac{3}{5} p2=53。
G i n i ( D ) = 0.48 Gini(D) = 0.48 Gini(D)=0.48
接下来计算“有小孩”划分后的基尼系数。当“有小孩”为是时,数据集中包含了三个样本,其中有两个点甜点,一个不点甜点;当“有小孩”为否时,数据集中包含了两个样本,其中一个点甜点,一个不点甜点。
G
i
n
i
(
有小孩
=
是
)
=
1
−
(
2
3
)
2
−
(
1
3
)
2
=
0.44
Gini(有小孩=是) = 1 - (\frac{2}{3})^2 - (\frac{1}{3})^2 = 0.44
Gini(有小孩=是)=1−(32)2−(31)2=0.44
G
i
n
i
(
有小孩
=
否
)
=
1
−
(
1
2
)
2
−
(
1
2
)
2
=
0.50
Gini(有小孩=否) = 1 - (\frac{1}{2})^2 - (\frac{1}{2})^2 = 0.50
Gini(有小孩=否)=1−(21)2−(21)2=0.50
最后计算按照特征“点主菜”划分后的基尼系数.
G
i
n
i
(
点主菜
=
是
)
=
1
−
(
2
3
)
2
−
(
1
3
)
2
=
0.44
Gini(点主菜=是) = 1 - (\frac{2}{3})^2 - (\frac{1}{3})^2 = 0.44
Gini(点主菜=是)=1−(32)2−(31)2=0.44
G
i
n
i
(
点主菜
=
否
)
=
1
−
(
1
2
)
2
−
(
1
2
)
2
=
0.50
Gini(点主菜=否) = 1 - (\frac{1}{2})^2 - (\frac{1}{2})^2 = 0.50
Gini(点主菜=否)=1−(21)2−(21)2=0.50
根据基尼系数的计算结果,可以选择基尼系数最小
的特征来作为划分节点,即“有小孩”。这样,我们就确定了第一个划分节点,然后可以继续在子节点上进行相同的操作,直到构建完整的决策树模型。