上文中求信息增益中,我们是忽略掉编号这一列的,因为按照编号属性进行计算信息增益,会划分17个子集,每个子集的信息熵Ent均为0,则信息增益Gain就是D的信息熵Ent
G
a
i
n
(
D
,
编号
)
=
E
n
t
(
D
)
−
(
0
+
0
+
.
.
.
.
+
0
)
=
E
n
t
(
D
)
=
0.998
Gain(D,{编号}) = Ent(D) - (0 + 0 + .... +0) = Ent(D) = 0.998
Gain(D,编号)=Ent(D)−(0+0+....+0)=Ent(D)=0.998
显然,这个信息增益非常高,单却是没有意义的,按照编号建立决策树,将会建立一个一层17分支的决策树.
故,我们需要找到一个方法,解决信息增益对数数目校多的属性偏好这一个问题
如使用Gain直接除V的数量(V是D按照属性a分组的所有子集,即D的子集数量),好像可以处理掉数目较多属性偏好的这个问题
G
a
i
n
(
D
,
编号
)
V
=
0.998
17
=
0.058
\frac {Gain(D,{编号})}{V} = \frac{0.998}{17} = 0.058
VGain(D,编号)=170.998=0.058
但是更适合的方法是除以IV(a),称为属性a的’固有值’(Intrinsic Value,IV),也称’ 分离信息 ’ (Split information):算法如下:
I
V
(
D
,
a
)
=
S
p
l
i
t
I
n
f
o
r
m
a
t
i
o
n
(
D
,
a
)
=
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
l
o
g
2
∣
D
v
∣
∣
D
∣
IV(D,a) =SplitInformation(D,a) = -\sum\limits _{v=1}^{V}\frac {|D^v|}{|D|}log_2\frac{|D^v|}{|D|}
IV(D,a)=SplitInformation(D,a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
故增益率定义为
G
a
i
n
_
r
a
t
i
o
(
D
,
a
)
=
G
a
i
n
(
D
,
a
)
I
V
(
D
,
a
)
Gain\_ratio(D,a) = \frac{Gain(D,a)}{IV(D,a)}
Gain_ratio(D,a)=IV(D,a)Gain(D,a)