You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

emdist包中权重作用解析:为何修改权重后EMD结果不同?

推土机距离(Earth-Mover Distance)权重计算结果差异疑问

先后计算了两次推土机距离,第二次仅对目标分布的权重做除法操作,但两次结果不同。原本以为权重仅通过归一化(w / sum(w))定义概率分布的质量,实际并非如此,相关文档未找到答案。

使用的R代码如下:

library(emdist)
set.seed(666)
x <- rnorm(10)
y <- rnorm(12)
# weights:
wx <- rep(1, 10)
wy <- rep(1, 12)

# distances:
emdw(x, wx, y, wy)
# 0.2417742
emdw(x, wx, y, wy/10)
# 0.125035

这是因为emdist包中的emdw函数并未将权重做归一化处理,它直接把输入的权重当作每个样本点的「绝对质量」,而非概率意义上的相对质量。

推土机距离(EMD)的核心逻辑是计算将一个分布的所有质量搬运到另一个分布所需的最小总成本,总成本等于「搬运的质量×搬运的距离」之和。当你把wy除以10后,目标分布每个点的质量变为原来的1/10,总质量从12降到了1.2,而源分布wx的总质量还是10:

  • 第一次计算:需要处理源分布10单位质量与目标分布12单位质量的匹配,整体搬运的质量规模大,总成本自然更高
  • 第二次计算:目标分布总质量仅1.2,源分布的大部分质量无法匹配到目标点,只能以其他方式处理(比如搬运到虚拟点),整体最小搬运成本远低于第一次

如果想让权重代表概率质量(即仅体现相对比例),你需要手动将两组权重都归一化到总质量相等的状态,比如都归一化到1:

# 手动归一化权重为概率分布
wx_prob <- wx / sum(wx)
wy_prob <- wy / sum(wy)

# 此时计算的EMD基于概率质量
emdw(x, wx_prob, y, wy_prob)

这种情况下,若你按相同比例缩放两组权重(比如同时除以10),由于总质量仍保持相等,计算结果不会改变。


内容的提问来源于Stack Exchange,提问作者Stéphane Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:05:14