跳至内容

熵计算器 - 在线免费计算香农熵

熵计算器根据用户输入的一组数值,以比特为单位计算香农熵,用于衡量数据集的随机性、不确定性和信息含量高低。结果包含各数值出现的频率分布表,以及基于概率对数运算的分步计算过程,便于理解信息论中的核心概念,适用于数据科学、机器学习和统计分析中的信息量评估与模式识别工作。

熵计算器

根据所选格式,输入用空格或逗号分隔的数值。

数据格式

频率分布

输入数据以查看可视化

加载计算器...
📚

文档

什么是熵计算器?

熵计算器用于计算一组数字的香农熵。香农熵是一种衡量数据集不可预测程度的方法。如果数据集中的每个值都相同,那么熵为零,因为其中没有任何不确定性。如果数据集中的每个值出现的可能性都相同,那么对于给定的数据集大小,它具有可能达到的最高熵。

这一概念源自信息论。信息论由美国数学家克劳德·香农于 1948 年创立。香农希望衡量一条消息携带了多少信息。他将熵定义为一串符号中“惊奇程度”的平均值。如今,同一个公式也出现在数据科学、密码学、生物学和机器学习中,凡是需要衡量一组结果随机性的地方都可能用到它。

香农熵公式

对于包含唯一值 x₁ 到 xₙ 的数据集,如果每个值出现的概率为 p(xᵢ),则香农熵 H 为:

H(X)=−∑i=1np(xi)log⁡2p(xi)H(X) = -\sum_{i=1}^{n} p(x_i) \log_2 p(x_i)

换句话说:对于每个唯一值,将其概率乘以该概率的以 2 为底的对数,把所有乘积相加,最后改变结果的符号。结果始终为零或正数。

此计算器始终使用以 2 为底的对数,因此结果的单位是 比特。其他用途还会使用其他底数:自然对数的单位称为纳特,以 10 为底的对数单位称为哈特莱。比特是计算机和信息论中的标准单位,因此此计算器固定使用底数 2。

为什么结果不可能为负数

每个概率 p(xᵢ) 都介于 0 和 1 之间,因此其对数为零或负数。概率乘以负数或零对数后,会得到负数或零。将这些结果相加并改变符号后,结果始终大于或等于零。

可能达到的最大熵

对于包含 n 个唯一值的数据集,当每个值出现的次数完全相同时,熵最高。最大值等于 log₂(n) 比特。包含 4 个出现频率相同的唯一值的数据集,最多可以达到 2 比特的熵,因为 log₂(4) = 2。同样的 4 个值如果分布不均匀,熵就会更低。

如何计算熵:分步说明

  1. 列出数据集中的唯一值,并统计每个值出现的次数。
  2. 将每个计数除以值的总数,得到每个唯一值的概率。
  3. 计算每个概率的以 2 为底的对数,然后将其乘以相同的概率。
  4. 将所有乘积相加,再将总和乘以 −1。

此计算器会自动完成同样的四个步骤。在输入框中输入数字,以空格或逗号分隔,选择相应的格式,熵、概率表和柱状图就会立即显示。结果下方的表格会列出每个唯一数字的值、计数、概率以及 p(x) × log₂(p(x)),因此计算过程清晰可见,而不只是显示最终答案。

输入规则

  • 只接受数值:整数、小数和负数均可使用。
  • 根据所选格式,值可以用空格分隔(示例:1 2 3 4),也可以用逗号分隔(示例:1,2,3,4)。
  • 一个数据集最多可以包含 100,000 个值。输入超过该数量时,会显示错误消息,要求使用更小的数据集。
  • 支持科学记数法,因此 1e3 会被读取为 1000。
  • 分隔符之间的文本、符号或空项会被判定为错误,而不会被静默忽略。
  • 计算机无法存储的过大数字(例如 1e400)同样会被拒绝。计算器能够存储的最大值约为 1.8 x 10^308。

计算示例

以数据集 1 2 3 1 2 1 为例,其中包含 6 个数字。

首先,统计每个唯一值:

值计数概率
133/6 = 0.5
222/6 ≈ 0.3333
311/6 ≈ 0.1667

接下来,将公式应用于每一行并把结果相加:

H=−(0.5log⁡20.5+0.3333log⁡20.3333+0.1667log⁡20.1667)H = -(0.5 \log_2 0.5 + 0.3333 \log_2 0.3333 + 0.1667 \log_2 0.1667) H=−(0.5×−1+0.3333×−1.585+0.1667×−2.585)H = -(0.5 \times -1 + 0.3333 \times -1.585 + 0.1667 \times -2.585) H≈1.4591 bitsH \approx 1.4591 \text{ bits}

该数据集包含 3 个唯一值,因此可能达到的最大熵为 log₂(3) ≈ 1.585 比特。实际结果为 1.4591 比特,低于这个最大值,因为值 1 的出现次数多于其他值,使数据集的随机性略低于完全均匀的分布。

没有不确定性的数据集

数据集 5 5 5 5 5 只有一个唯一值,因此其概率为 1。由于 log₂(1) = 0,总和中的每一项都为零,熵恰好为 0 比特。当数据集中的每个值都相同时,其中不存在任何不确定性。

如何解读结果

  • 熵接近 0 表示数据具有重复性且容易预测。一个或少数几个值占据主导地位。
  • 熵接近 log₂(n)(其中 n 是唯一值的数量)表示数据在所有唯一值之间的分布接近均匀。
  • 熵恰好为 0 表示数据集中的每个值都相同。

单独看熵,无法判断数据集是“好”还是“坏”。密码生成器希望具有高熵,因为这样生成的密码更难猜测。应该读取恒定温度的传感器则希望具有低熵,因为这表示读数稳定。

香农熵的应用领域

  • 机器学习: 决策树算法使用熵来决定哪个特征最适合将数据集划分为可预测的组。
  • 数据压缩: 熵规定了在不丢失信息的情况下,文件能够压缩到多小的理论极限。
  • 密码学: 熵用于衡量密码或密码学密钥的不可预测程度。
  • 遗传学: 熵可以突出 DNA 序列中异常或变化程度很高的区域。
  • 文本分析: 将字母或单词视为“值”,可以利用熵衡量一段文本的可预测程度。

常见问题

信息论中的熵是什么?
熵是衡量数据集不确定性或不可预测程度的数值。它根据数据中每个唯一值的概率计算,而不是根据值本身计算。

如何手动计算香农熵?
统计每个唯一值出现的次数,将每个计数除以总数以得到概率,将每个概率乘以其以 2 为底的对数,把结果相加,再乘以 −1。

熵可以为负数吗?
不可以。可能达到的最低值是 0 比特,当数据集中的每个值都相同时,就会得到这个结果。

数据集的最大熵是多少?
最大值为 log₂(n) 比特,其中 n 是唯一值的数量。只有当每个唯一值出现的次数完全相同时,才能达到该最大值。

数据集大小有限制吗?
有。此计算器在单个数据集中最多接受 100,000 个值。输入更大的数据集时会返回错误。

熵与方差有什么区别?
方差衡量数值围绕平均值的分散程度。熵则只根据概率衡量结果模式的不可预测程度,与数字的实际大小无关。

参考资料

  1. Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27(3), 379–423.
  2. Cover, T. M., & Thomas, J. A. (2006). Elements of Information Theory (2nd ed.). Wiley-Interscience.
  3. MacKay, D. J. C. (2003). Information Theory, Inference, and Learning Algorithms. Cambridge University Press.