เมื่อพิจารณาถึงข้อดีของการ Wasserstein เมตริกเมื่อเทียบกับ KL แตกต่างแล้วเห็นได้ชัดที่สุดคือการที่ W เป็นตัวชี้วัดในขณะที่ KL ความแตกต่างไม่ได้ตั้งแต่ KL ไม่สมมาตร (เช่นโดยทั่วไปQ | | P )และไม่ตอบสนองความไม่เท่าเทียมกันของรูปสามเหลี่ยม (เช่นD K L ( R | | P ) ≤ D K L ( Q | | P ) + D KDKL(P||Q)≠DKL(Q||P)ไม่ถือโดยทั่วไป)DKL(R||P)≤DKL(Q||P)+DKL(R||Q)
สิ่งที่แตกต่างกันในทางปฏิบัติแล้วหนึ่งในสิ่งที่สำคัญที่สุดคือไม่เหมือนกับ KL (และมาตรการอื่น ๆ อีกมากมาย) Wasserstein คำนึงถึงพื้นที่ของตัวชี้วัดและสิ่งนี้หมายความว่าอย่างไรในแง่นามธรรมที่น้อยกว่าบางทีอาจอธิบายได้ดีที่สุดในตัวอย่าง เพื่อร่างรหัสเพียงการผลิต):
# 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()
ที่นี่มาตรการระหว่างการแจกแจงสีแดงและสีน้ำเงินนั้นเหมือนกันสำหรับ KL divergence ในขณะที่ระยะทาง Wasserstein วัดการทำงานที่จำเป็นในการขนส่งมวลความน่าจะเป็นจากสถานะสีแดงไปยังรัฐสีน้ำเงินโดยใช้แกน x เป็น "ถนน" เห็นได้ชัดว่ามาตรการนี้ยิ่งมีขนาดใหญ่มากเท่าไรความน่าจะเป็นยิ่งมากขึ้นก็คือ ดังนั้นสิ่งที่คุณต้องการใช้ขึ้นอยู่กับพื้นที่แอพพลิเคชันของคุณและสิ่งที่คุณต้องการวัด ในฐานะที่เป็นโน้ตแทนที่จะเป็น KL divergence นอกจากนี้ยังมีตัวเลือกอื่น ๆ เช่นระยะทาง Jensen-Shannon ซึ่งเป็นตัวชี้วัดที่เหมาะสม