Wasserstein 距离

English

Topp 当前只实现两种 Wasserstein 约定。

\(W_{1,\infty}\)

这是默认值:

import topp

x = [[0.0, 1.0], [0.25, 0.75]]
y = [[0.0, 1.1], [0.30, 0.80]]

w1 = topp.wasserstein_distance(x, y)

它等价于显式传入参数:

import numpy as np

same_w1 = topp.wasserstein_distance(
    x, y, order=1, internal_p=np.inf
)
assert same_w1 == w1

\(W_{2,2}\)

w2 = topp.wasserstein_distance(
    x, y, order=2, internal_p=2
)

对于 \(W_{2,2}\),有限点 \(x=(b,d)\) 到对角线的欧氏距离为

\[ d_2(x,\Delta)=\frac{d-b}{\sqrt{2}}. \]

不支持的参数

其他组合会明确拒绝,不会被静默解释为其他含义:

>>> topp.wasserstein_distance(x, y, order=3, internal_p=2)
Traceback (most recent call last):
...
NotImplementedError: topp supports only (order=1, internal_p=inf) and (order=2, internal_p=2)

orderinternal_p 的定义见数学约定