algorithm - ID3机器学习算法中统计熵概念相关的一些疑惑

标签 algorithm statistics machine-learning artificial-intelligence entropy

我正在研究ID3 机器学习算法使用的统计熵概念

对于以学习集 S(即我用来构建决策树的示例集)为例的域,我对对象进行分类所需的平均信息量由 熵度量给出

所以我有以下公式:

enter image description here

所以,例如:

如果 S 是 14 个示例的集合,其中 9 个是,5 个不是,那么我有:

熵(S) = - (9/14)*Log2(9/14) - (5/14)*Log2(5/14) = 0.940

这很容易计算,我的问题是,在我的书上我也看到了这个注释:

Notice entropy is 0 if all members of S belong to the same class (the data is perfectly classified). The range of entropy is 0 ("perfectly classified") to 1 ("totally random").

这个断言让我感到困惑,因为我试图以这种方式改变前面的例子:

如果 S 是 14 个示例的集合,其中 14 个是,0 个不是示例,那么我有:

熵(S) = - (14/14)*Log2(14/14) - (0/14)*Log2(0/14) = 0 - 无穷

因此,在这种情况下,所有对象都属于同一个类 (YES),没有示例属于 NO 类。

所以我希望这个 S 集合的熵值为 0 并且没有 - infinity

我错过了什么?

谢谢

安德里亚

最佳答案

在计算熵时,您通过迭代相关节点的唯一分类值来进行求和。您可以在每次迭代中通过计算集合中有多少成员具有该值来执行此操作,然后使用对数公式。在您的问题案例中,唯一出现的分类值为 YES,这意味着基于单次迭代的熵为零。您不能迭代 NO 值,因为没有一个示例具有该值。

关于algorithm - ID3机器学习算法中统计熵概念相关的一些疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17147183/

相关文章:

r - 在ggplot2和R中为正态分布散点图创建置信区域

machine-learning - 文本分类中的 N 元语法与其他分类器

PHP脚本无法正确运行python脚本,但它在终端上正确运行

java - 递归程序中类变量到方法参数的转换

java - 生成给定字符串的所有排列

algorithm - 通过删除子树最大化有根树的权重

r - 未知累积函数的反函数

python - 年龄分布的 Numpy 梯形分布

algorithm - 如何实现循环算法?

python-3.x - 如何修复构建神经网络时出现的以下错误?