Чтобы ответить на ваш вопрос, мы должны вспомнить определение дивергенции KL :
DКL( Y| | Икс) = ∑я = 1Nпер( YяИкся) Yя
Прежде всего вы должны перейти от того, что у вас есть к вероятностным распределениям. Для этого вам следует нормализовать ваши данные так, чтобы они суммировали до одного:
Икся: = XяΣNя = 1Икся ; ; Yя: = YяΣNя = 1YяZi:=Zi∑Ni=1Zi
Затем для дискретных значений у нас есть одно очень важное предположение, которое необходимо для оценки KL-дивергенции и которое часто нарушается:
Xi=0 должно подразумевать .Yi=0
В случае, когда и равны нулю, считается равным нулю (в качестве предельного значения).XiYiln(Yi/Xi)Yi
В вашем наборе данных это означает, что вы можете найти , но не, например, (из-за второй записи).DKL(X||Y)DKL(Y||X)
Что я мог бы посоветовать с практической точки зрения:
либо сделайте ваши события "более крупными", чтобы у вас было меньше нулей
или получить больше данных, так что вы будете покрывать даже редкие события хотя бы одной записью.
Если вы не можете использовать ни один из приведенных выше советов, то вам, вероятно, потребуется найти другой показатель между распределениями. Например,
Взаимная информация , определяемая как . Где - совместная вероятность двух событий.p(Xi,Yi)I(X,Y)=∑Ni=1∑Nj=1p(Xi,Yj)ln(p(Xi,Yj)p(Xi)p(Yj))p(Xi,Yi)
Надеюсь, это поможет.