Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Qual a ideia do algoritmo "Latent Dirichlet Allocation"?

0 votos
14 visitas

1 Resposta

0 votos
respondida Nov 6 por pedro zarur (6 pontos)  

O LDA (Latent Dirichlet Allocation) é um algoritmo de aprendizagem não supervisionada de topic modeling. Ele basicamente assume um processo de geração de documentos para depois descobrir quais tópicos (grupo de palavras) melhor representam cada documento do conjunto original. A ideia é modelar documentos como distribuições de tópicos e tópicos como distribuições de palavras.

As distribuições assumidas pelo LDA são distribuições de Dirichlet, que podem ser encaradas como distribuições de distribuições. Imagine, por exemplo, um triângulo em que cada vértice é um tópico (por exemplo, Economia, Sociologia e Política). Os documentos são representados por pontos dentro desse triângulo de modo que a distância a cada vértice defina o quão bem cada tópico representa determinado documento (um documento pode ser 90% Economia, 5% Sociologia e 5% Política por exemplo). Assim o triângulo como um todo é uma distribuição e cada ponto (documento) também é.

Abaixo temos um diagrama que representa o processo de geração:

A imagem será apresentada aqui.

Onde:

\(K\) = nº de tópicos

\(M\) = nº de documentos

\(N\) = nº de palavras em um dado documento

\(θ\) = matriz onde \(θ_{ij}\) representa a probabilidade do \(i\)-ésimo documento ser representado pelo \(j\)-ésimo tópico

\(α\) = parâmetro da distribuição de Dirichlet de \(θ\)

\(\varphi\) = matriz onde \(\varphi_{ij}\) representa a probabilidade do \(i\)-ésimo tópico conter a \(j\)-ésima palavra

\(β\) = parâmetro da distribuição de Dirichlet de \(\varphi\)

\(z_{ij}\) = tópico da \(j\)-ésima palavra no \(i\)-ésimo documento

\(w\) = palavra

O processo de geração de documentos assumido é o seguinte:

\(i)\) Escolhe-se \(\theta_{i}\) ~ \(Dir(\alpha)\), isto é, a distribuição de tópicos do \(i\)-ésimo documento, com \(1 \leq i \leq M\).

\(ii)\) Para cada \(j \in \{1,...,N_{i}\}\), onde \(N_{i}\) é o número de palavras do \(i\)-ésimo documento, escolhe-se um tópico \(z_{j}\) ~ \(Multinomial(\theta_{i})\).

A distribuição multinomial é uma generalização da binomial. Ela recebe dois parâmetros, as categorias a serem escolhidas, e a probabilidade de cada categoria ser escolhida. E é precisamente isso que \(\theta_{i}\) fornece.

\(iii)\) Escolhe-se \(\varphi_{k}\) ~ \(Dir(\beta)\), isto é, a distribuição de palavras do \(k\)-ésimo tópico, com \(1 \leq k \leq K\).

\(iv)\) Para cada \(j \in \{1,...,N_{i}\}\) escolhe-se uma palavra \(w_{j}\) ~ \(Multinomial(\varphi_{z_{j}})\), onde \(z_{j}\) para cada \(j\) foi encontrado no segundo passo.

E assim geramos o \(i\)-ésimo documento. O processo é repetido \(M\) vezes para gerar todos os documentos.

Uma vez definido o processo de geração, o problema é descobrir quais distribuições maximizam a probabilidade de gerar os documentos originais. Esse é um problema de inferência estatística que, pode ser resolvido por vários métodos. O mais comum provavelmente é a amostragem de Gibbs.

Podemos implementar o algoritmo usando o módulo "gensim":

...