You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何正确计算变量的熵?附MATLAB计算实例疑问

如何正确计算变量的熵(附你的示例验证)

嘿,你的手动计算完全正确,而且关于0值的疑问其实可以从熵的核心定义来理清!

核心结论:必须考虑变量中的0值

熵的本质是衡量随机变量所有可能取值的不确定性,不管这个取值是0、1还是其他数字,只要它是变量的一个实际出现的取值,就需要纳入概率统计和熵的计算。如果忽略0值,相当于人为剔除了一个可能的结果,计算出的熵会低估变量的真实不确定性。

你的示例计算验证

针对你的变量 X = [1 2 2 0]

  1. 统计各取值的出现次数:0出现1次,1出现1次,2出现2次,总样本数为4
  2. 计算各取值的概率:
    • p(0) = 1/4p(1) = 1/4p(2) = 2/4
  3. 代入熵的公式(以2为底的对数,对应二进制熵):
    H = -( (1/4)*log2(1/4) + (2/4)*log2(2/4) + (1/4)*log2(1/4) ) = 1.5
    

这个结果完全正确,和MATLAB的entropy函数输出一致也验证了这一点(注:MATLAB的entropy默认处理图像,但当你把离散变量按概率分布逻辑输入时,它的计算逻辑和手动推导完全匹配)。

离散变量熵计算的通用步骤

  • 统计变量所有不同取值的出现频次
  • 计算每个取值的概率(频次 / 总样本数)
  • 用公式 H = -sum(p_i * log_b(p_i)) 计算,其中b是对数的底(常用2或自然对数),所有非零概率的取值都要纳入求和(包括0这类特殊取值)

内容的提问来源于stack exchange,提问作者user4061624

火山引擎 最新活动