我们试图计算两个离散的一维分布之间的距离。我们的目的是计算一个遵循最优传输直觉的距离函数:我们的分布是“点”处的质量,即向量,对每个向量中元素的顺序很重要。给定一个描述任意两点之间距离的矩阵,我们想在 u 中找到最小成本的运输,以使其成为 v。
最简单的例子是:设 u,v 为分布:u=(0.5,0.2,0.3), v=(0.5,0.3,0.2)
假设距离矩阵是 [[1,1,1],[1,1,1],[1,1,1]],这意味着在任意两点之间移动质量单位的成本为 1。显然,使 u 看起来像 v 的最佳方法是将 0.1 从第三点传输到第二点。在这种情况下,成本将为 1*0.1,即 0.1。
按照这种直觉,我们转向了 Wasserstein 距离。我们已经尝试过scipy.stats.wasserstein_1d和POT包 - 特别是 ot.emd2。然而,没有人真正计算出我们想要的,关于上面的例子,第一个不考虑向量中元素的顺序,所以结果是 0。第二个算法返回 1
我们非常感谢我们可能错过的关于这两个 python 函数的操作的任何解释,或者任何其他参考或建议。
- 我们知道,给定一个非对称距离度量,这个“距离”的概念将不是对称的。