Como calcular a perplexidade de um holdout com Alocação de Dirichlet Latente?

18

Estou confuso sobre como calcular a perplexidade de uma amostra de validação ao fazer a Alocação de Dirichlet Latente (LDA). Os artigos sobre o assunto brotam, me fazendo pensar que estou perdendo algo óbvio ...

A perplexidade é vista como uma boa medida de desempenho para a LDA. A idéia é que você mantenha uma amostra de holdout, treine seu LDA no restante dos dados e calcule a perplexidade do holdout.

A perplexidade pode ser dada pela fórmula:

per(Dtest)=exp{-d=1Mregistrop(Wd)d=1MNd}

(Extraído da recuperação de imagens em bancos de dados de imagens em larga escala, Horster et al .)

Aqui é o número de documentos (na amostra de teste, presumivelmente), representa as palavras no documento , e o número de palavras no documento .w d d n d dMWddNdd

Não está claro para mim como calcular sensivelmente , já que não temos misturas de tópicos para os documentos retidos. Idealmente, integraríamos o Dirichlet antes de todas as possíveis misturas de tópicos e usaríamos os multinomiais de tópicos que aprendemos. Calcular esta integral não parece uma tarefa fácil, no entanto.p(Wd)

Como alternativa, poderíamos tentar aprender uma combinação ideal de tópicos para cada documento apresentado (de acordo com nossos tópicos aprendidos) e usá-lo para calcular a perplexidade. Isso seria possível, no entanto, não é tão trivial quanto trabalhos como Horter et al e Blei et al parecem sugerir, e não está imediatamente claro para mim que o resultado será equivalente ao caso ideal acima.

drevicko
fonte

Respostas:

17

Na verdade, isso é algo frequentemente encoberto.

Algumas pessoas estão fazendo algo um pouco atrevido: segurando uma proporção das palavras em cada documento e fornecendo probabilidades preditivas dessas palavras contidas, dadas as misturas de documento-tópico e misturas de tópico-palavra. Obviamente, isso não é ideal, pois não avalia o desempenho em nenhum documento retido.

Para fazê-lo adequadamente com documentos retidos, conforme sugerido, você precisa "integrar o Dirichlet antes de todas as possíveis misturas de tópicos". http://people.cs.umass.edu/~wallach/talks/evaluation.pdf analisa alguns métodos para lidar com essa integral um pouco desagradável. Estou prestes a tentar implementar isso pessoalmente, então boa sorte!

Matt
fonte
3
Obrigado por fazer essa pergunta! Wallach et al também têm um papel em avaliações modelo tópico: Métodos de avaliação para os modelos tópico
drevicko
1
Não se preocupe. Descobri que há algum código para o método da esquerda para a direita de Wallach na caixa de ferramentas de modelagem de tópicos do MALLET, se você estiver feliz em usar a implementação do LDA, é uma vitória fácil, embora não pareça super fácil executá-lo em um conjunto de tópicos aprendidos em outros lugares com uma variante diferente do LDA, que é o que estou procurando fazer. Acabei implementando o estimador no estilo Chib usando o código matlab que eles fornecem como guia, embora tivesse que corrigir alguns problemas ao fazer isso, deixe-me saber se você deseja o código.
Matt
Oi @ Matt, é possível me passar o código matlab para avaliação da perplexidade no LDA? Obrigado
princess of persia
@princessofpersia Acho que o autor resolveu o problema que eu aludei com o código do matlab, veja aqui: homepages.inf.ed.ac.uk/imurray2/pub/09etm
Matt
0

Sabemos que os parâmetros da ADL são estimados por inferência variacional. então

registrop(W|α,β)=E[registrop(θ,z,W|α,β)]-E[registroq(θ,z)]+D(q(θ,z)||p(θ,z))

D(q(θ,z)||p(θ,z))=0 0registrop(W|α,β)=E[registrop(θ,z,W|α,β)]-E[registroq(θ,z)]

registrop(W|α,β)

user32509
fonte
1
Eu acho que é possível melhorar a resposta para ser mais específico sobre como realmente calcular a perplexidade no conjunto de testes.
Momo