Ao considerar as vantagens da métrica de Wasserstein em comparação com a divergência de KL, o mais óbvio é que W é uma métrica, enquanto a divergência de KL não é, uma vez que KL não é simétrica (isto é, em geral) e não satisfaz a desigualdade do triângulo (ou seja, D K L ( R | | P ) ≤ D K L ( Q | | P ) + D KDKeu( P| | Q)≠ DKeu( Q | | P)não se aplica em geral).DKeu( R | | P) ≤ DKeu( Q | | P) + DKeu( R | | Q )
Quanto à diferença prática, uma das mais importantes é que, diferentemente da KL (e de muitas outras medidas), Wasserstein leva em consideração o espaço métrico e o que isso significa em termos menos abstratos talvez seja melhor explicado por um exemplo (sinta-se à vontade para pular para a figura, código apenas para produzi-lo):
# define samples this way as scipy.stats.wasserstein_distance can't take probability distributions directly
sampP = [1,1,1,1,1,1,2,3,4,5]
sampQ = [1,2,3,4,5,5,5,5,5,5]
# and for scipy.stats.entropy (gives KL divergence here) we want distributions
P = np.unique(sampP, return_counts=True)[1] / len(sampP)
Q = np.unique(sampQ, return_counts=True)[1] / len(sampQ)
# compare to this sample / distribution:
sampQ2 = [1,2,2,2,2,2,2,3,4,5]
Q2 = np.unique(sampQ2, return_counts=True)[1] / len(sampQ2)
fig = plt.figure(figsize=(10,7))
fig.subplots_adjust(wspace=0.5)
plt.subplot(2,2,1)
plt.bar(np.arange(len(P)), P, color='r')
plt.xticks(np.arange(len(P)), np.arange(1,5), fontsize=0)
plt.subplot(2,2,3)
plt.bar(np.arange(len(Q)), Q, color='b')
plt.xticks(np.arange(len(Q)), np.arange(1,5))
plt.title("Wasserstein distance {:.4}\nKL divergence {:.4}".format(
scipy.stats.wasserstein_distance(sampP, sampQ), scipy.stats.entropy(P, Q)), fontsize=10)
plt.subplot(2,2,2)
plt.bar(np.arange(len(P)), P, color='r')
plt.xticks(np.arange(len(P)), np.arange(1,5), fontsize=0)
plt.subplot(2,2,4)
plt.bar(np.arange(len(Q2)), Q2, color='b')
plt.xticks(np.arange(len(Q2)), np.arange(1,5))
plt.title("Wasserstein distance {:.4}\nKL divergence {:.4}".format(
scipy.stats.wasserstein_distance(sampP, sampQ2), scipy.stats.entropy(P, Q2)), fontsize=10)
plt.show()
Aqui, as medidas entre as distribuições de vermelho e azul são as mesmas para a divergência de KL, enquanto a distância de Wasserstein mede o trabalho necessário para transportar a massa de probabilidade do estado vermelho para o estado azul usando o eixo x como uma “estrada”. Essa medida é obviamente maior quanto maior a distância da massa probabilística (daí a distância do motor da terra). Então, qual você deseja usar depende da sua área de aplicação e do que você deseja medir. Como nota, em vez da divergência de KL, também existem outras opções, como a distância de Jensen-Shannon, que são métricas adequadas.