跳至内容

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

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

熵计算器

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

数据格式

频率分布

输入数据以查看可视化

加载计算器...
📚

文档

什么是熵计算器?

熵计算器用于求一组数字的香农熵。香农熵是衡量数据集不可预测程度的一种方式。所有值都相同的数据集,熵为零,因为其中没有任何不确定之处。每个值出现的可能性都相等的数据集,就其规模而言熵最高。

这一思想来自信息论,该领域由美国数学家克劳德·香农(Claude Shannon)在其 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 为底的对数,因此结果以比特为单位。香农指出,选择哪种对数底数就是在选择单位:底数为 2 得到比特,底数为 10 得到十进制位,自然对数(底数为 e)得到奈特(自然单位)。比特是计算机领域通用的单位,所以本计算器固定使用底数 2。

为什么结果不可能为负

每个概率 p(xᵢ) 都介于 0 和 1 之间,所以它的对数为零或负数。概率乘以负的或为零的对数,得到负数或零。把这些相加再取相反数,结果总是大于或等于零。

可能的最大熵

对于具有 n 个唯一值的数据集,当每个值出现的次数相等时,熵最高。香农证明了这个最大值等于 log(n),以比特计时即 log₂(n)。有 4 个同样常见的唯一值的数据集,熵最多可达 2 比特,因为 log₂(4) = 2。这 4 个值的任何不均匀分布,熵都更低。

如何计算熵:分步说明

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

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

输入规则

  • 只接受数值:整数、小数、负数以及 1e3 之类的科学记数法都可以。
  • 值之间用空格(例如:1 2 3 4)或逗号(例如:1,2,3,4)分隔,具体取决于所选的格式。
  • 一个数据集最多可包含 100,000 个值。输入超过这个数量会出现错误提示,要求使用较小的数据集。
  • 分隔符之间的文本、符号或空白项会被报错拒绝,而不是被悄悄忽略。

算例

以数据集 1 2 3 1 2 1 为例,它有六个数字。

首先,统计每个唯一值的次数:

数值计数概率
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 比特H \approx 1.4591 \text{ 比特}

该数据集有 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.。A Mathematical Theory of Communication。Bell System Technical Journal,1948(由哈佛大学托管的重印本)。harvard.edu — 信息论的 1948 年起源、以 2 为底的 "bits" 单位及其他底数、只有确定的结果熵才为零,以及等概率时的 log(n) 最大值。