Ти не можеш і ні. Уявіть, що у вас є випадкова величина розподілу ймовірностей Q. Але ваш друг Боб вважає, що результат походить від розподілу ймовірностей P. Він створив оптимальне кодування, яке мінімізує кількість очікуваних бітів, які йому потрібно буде використати, щоб сказати вам результат. Але, оскільки він сконструював кодування з P, а не з Q, його коди будуть довші, ніж потрібно. KL-дивергенція вимірює, наскільки довші будуть коди.
Тепер скажемо, що у нього є монета, і він хоче сказати вам послідовність результатів, які він отримує. Оскільки голова і хвіст однаково вірогідні, він дає їм і 1-бітні коди. 0 для голови, 1 для хвоста. Якщо йому дістанеться хвіст, він може надіслати 1 1 0 1. Тепер, якщо його монета приземлиться на край, він не зможе вам сказати! Жоден код, який він надсилає вам, не працював. У цей момент KL-дивергенція руйнується.
Оскільки KL-дивергенція виходить з ладу, вам доведеться або використовувати інший захід, або інші розподіли ймовірностей. Що ви дійсно повинні робити, залежить від того, що ви хочете. Чому ви порівнюєте розподіли ймовірностей? Звідки беруться ваші ймовірні розподіли, чи оцінюються вони за даними?
Ви кажете, що ваші імовірнісні розподіли походять із документів на природній мові, і ви хочете порівняти пари категорій.
Спочатку я рекомендую міру симетричної спорідненості. Для цього додатка звучить, що A настільки ж схожий на B, як B схожий на A.
Ви пробували міру подібності косинусу? Він досить поширений в NLP.
Якщо ви хочете дотримуватися KL, одне, що ви можете зробити, - це оцінити ймовірність функції з обох документів, а потім побачити, скільки зайвих біт вам знадобиться в середньому для кожного документа. Тобто (P || (P + Q) / 2 + Q || (P + Q) / 2) / 2