Estou usando o KL Divergence como uma medida de dissimilaridade entre 2 e . Q
=-ΣP(Xi)ln(Q(Xi))+ΣP(Xi)ln(P(Xi))
Se , podemos calcular facilmente que P ( X i ) l n ( Q ( X i ) ) = 0 P ( X i ) l n ( P ( X i ) ) = 0
Mas se e como calcularQ ( X i ) = 0 P ( X i ) l n ( Q ( X i ) )
distributions
distance
kullback-leibler
smwikipedia
fonte
fonte
Respostas:
Você não pode e você não. Imagine que você tem uma variável aleatória de distribuição de probabilidade Q. Mas seu amigo Bob acha que o resultado vem da distribuição de probabilidade P. Ele construiu uma codificação ideal, que minimiza o número de bits esperados que ele precisará usar para informar as resultado. Mas, como ele construiu a codificação de P e não de Q, seus códigos serão mais longos do que o necessário. A divergência KL mede quanto tempo os códigos serão.
Agora vamos dizer que ele tem uma moeda e ele quer lhe contar a sequência de resultados que ele obtém. Como cabeça e cauda são igualmente prováveis, ele fornece os dois códigos de 1 bit. 0 para cabeça, 1 para cauda. Se ele conseguir cauda, cauda, cauda, ele pode enviar 1 1 0 1. Agora, se sua moeda cair no limite, ele não poderá contar! Nenhum código que ele envia para você funcionaria. Neste ponto, a divergência de KL quebra.
Como a divergência de KL se decompõe, você terá que usar outra medida ou outra distribuição de probabilidade. O que você deve fazer realmente depende do que você deseja. Por que você está comparando distribuições de probabilidade? De onde vêm suas distribuições de probabilidade, são estimadas a partir de dados?
Você diz que suas distribuições de probabilidade vêm de documentos de linguagem natural de alguma forma e deseja comparar pares de categorias.
Primeiro, eu recomendaria uma medida de relação simétrica. Para esta aplicação, parece que A é tão semelhante a B quanto B é semelhante a A.
Você já tentou a medida de similaridade de cosseno? É bastante comum na PNL.
Se você deseja manter a KL, uma coisa que você pode fazer é estimar uma função de probabilidade de ambos os documentos e depois ver quantos bits extras você precisaria, em média, para qualquer documento. Ou seja (P || (P + Q) / 2 + Q || (P + Q) / 2) / 2
fonte
Na prática, também me deparei com essa questão. Nesse caso, descobri que substituir o valor 0 por um número muito pequeno pode causar problemas. Dependendo do valor que você usar, você introduzirá um "viés" no valor de KL. Se você estiver usando o valor KL para teste de hipótese ou algum outro uso que envolva um limite, esse pequeno valor poderá influenciar seus resultados. Descobri que a maneira mais eficaz de lidar com isso é considerar apenas o cálculo do KL em um espaço consistente de hipótese X_i, onde AMBOS P e Q são diferentes de zero. Essencialmente, isso limita o domínio da KL a um domínio em que ambos são definidos e mantém você longe de problemas ao usar a KL para executar testes de hipótese.
fonte
A solução é nunca permitir probabilidades 0 ou 1 nas distribuições estimadas. Isso geralmente é alcançado por alguma forma de suavização, como Good-Turing, Dirichlet ou Laplace.
fonte