Вычислить 2-расстояние Вассерштейна между наборами точечных масс - PullRequest
0 голосов
/ 27 августа 2018

Существует ли программный пакет (например, в Python, R, Matlab, C ++) для вычисления расстояния 2 -Вассерштейна между двумя наборами точечных масс, где каждая точка является d -мерным вектором? Здесь d >= 2 как корпус d = 1 доступен в закрытом виде.

Мне удалось найти пакеты для вычисления расстояния 1 -Вассерштейна (т. Е. Расстояния землеройного станка) в оптимальной транспортной библиотеке Python , но не для 2 -дистанция Вассерштейна.

1 Ответ

0 голосов
/ 28 августа 2018

Я не уверен, что это то, что вам нужно, но я смотрю на исходный код scipy.stats.wasserstein . Они вызывают scipy.stats._cdf_distance в фоновом режиме и передают параметр p, где

p - положительный параметр; р = 1 дает расстояние Вассерштейна, р = 2 дает расстояние энергии.

scipy.stats.energy_distance

Уравнение, указанное в строке документации для _cdf_distance, похоже на то, что вам нужно:

l_p(u, v) = \left( \int_{-\infty}^{+\infty} |U-V|^p \right)^{1/p}
...