我正在研究ID3机器学习算法中使用的统计熵概念
对于由学习集S(即用于构建决策树的示例集)所示例化的领域,我需要对一个对象进行分类的平均信息量由熵测量给出
所以我有以下公式:
例如:
如果S是一组包含14个示例的集合,其中有9个YES和5个NO,那么我有:
Entropy(S) = – (9/14)*Log2(9/14) – (5/14)*Log2(5/14) = 0.940
这个计算相当简单,但我的问题是,在我的书中我还读到以下说明:
注意,如果S的所有成员都属于同一个类别(数据被完美分类),则熵为0。熵的范围是从0(“完美分类”)到1(“完全随机”)。
这个说法让我感到困惑,因为我试图以这种方式改变前面的例子:
如果S是一组包含14个示例的集合,其中有14个YES和0个NO,那么我有:
Entropy(S) = – (14/14)*Log2(14/14) – (0/14)*Log2(0/14) = 0 – 无穷大
所以,在这种情况下,所有的对象都属于同一个类别(YES),没有示例属于NO类别。
所以我期望这个S集的熵值为0,而不是-无穷大
我错过了什么?
谢谢
Andrea
回答:
在计算熵时,你需要通过迭代节点处唯一的分类值来进行求和。在每次迭代中,你计算集合中有多少成员具有该值,然后使用对数公式。在你的问题案例中,唯一出现的分类值是YES,这意味着基于单次迭代,熵为零。你无法对NO值进行迭代,因为没有示例具有该值。