信息增益(ID3)
ref
note
信息增益:用于量化分类的效果;用**熵(entropy)**去量化信息增益,熵的取值范围是[0,1]
E
n
t
r
o
p
y
(
S
)
=
−
p
负
l
o
g
2
p
负
−
p
正
l
o
g
2
p
正
Entropy(S)=-p_负log_2p_负-p_正log_2p_正
Entropy(S)=−p负log2p负−p正log2p正
p
正
p_正
p正、
p
负
p_负
p负是正、负样本数占总样本数的比值(如果是计算预测后的分类比例,那Entropy(S)就表示预测效果好坏了)
可以发现:
- 当全部是同一类的时候,entropy的值就是0
- 当正负样本数各占一半时,entropy的值为1
- 其他情况时,介于**(0,1)**之间
个人想法:
那也就是说,当要预测的数据是非平衡数据集(极端是只存在一类),那么这个公式就不太适用了,或许可以加上正负比的权重
熵的变化曲线:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aAFat7jJ-1640833021777)(images/aHR0cDovL2hpLmNzZG4ubmV0L2F0dGFjaG1lbnQvMjAxMjAxLzgvMF8xMzI2MDE4MDAzQUR3Si5naWY-16408327057202-16408327088863.gif)]
demo
举例来说,假设S是一个关于布尔概念的有14个样例的集合,它包括9个正例和5个反例(我们采用记号[9+,5-]来概括这样的数据样例),那么S相对于这个布尔样例的熵为:
Entropy([9+,5-])=-(9/14)log2(9/14)-(5/14)log2(5/14)=0.940。
So,根据上述这个公式,我们可以得到:
-
如果S的所有成员属于同一类,则Entropy(S)=0;
-
如果S的正反样例数量相等,则Entropy(S)=1;
-
如果S的正反样例数量不等,则熵介于0,1之间