我正在研究ID3机器学习算法使用的统计熵概念
对于以学习集S为例的域(即用于构建决策树的示例集),熵测量给出了对对象进行分类所需的平均信息量
所以我有以下公式:
所以,例如:
如果S是包含9个YES和5个NO示例的14个示例的集合,那么我有:
熵(S)= - (9/14)* Log2(9/14) - (5/14)* Log2(5/14)= 0.940
这很容易计算,我的问题是,在我的书中我也读到了这个注释:
如果S的所有成员都属于同一个类,则注意熵为0( 数据完全分类)。熵的范围是0(“完美的 分类“)到1(”完全随机“)。
这个断言使我感到困惑,因为我试图以这种方式改变前面的例子:
如果S是14个例子的集合,有14个YES和0个NO示例,那么我有:
熵(S)= - (14/14)* Log2(14/14) - (0/14)* Log2(0/14)= 0 - 无穷大
所以,在这种情况下,我认为所有的对象都属于同一个类(YES),没有例子属于NO类。
所以我希望这个S组的熵值为0,没有 - 无穷大
我错过了什么?
TNX
安德烈
答案 0 :(得分:1)
计算熵时,您可以通过迭代相关节点上的唯一分类值来进行求和。您可以通过计算集合中有多少成员具有该值来在每次迭代中执行此操作,然后使用日志公式。在您的问题情况下,唯一出现的分类值是YES,这意味着基于单次迭代,熵为零。您不能迭代NO值,因为没有示例具有该值。