ID3机器学习算法中统计熵概念的相关疑问

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

对于由学习集S(即用于构建决策树的示例集)所示例化的领域,我需要对一个对象进行分类的平均信息量由熵测量给出

所以我有以下公式:

enter image description here

例如:

如果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值进行迭代,因为没有示例具有该值。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注