Topic Modeling
주어진 많은 단어들을 기반으로 topic별 단어들의 분포를 확인하고 문서(document)별 topic들의 분포를 계산해서 문서의 주제가 무엇인지 예측하는 model
문서 집합으로부터 topic(주제)들을 찾아내는 확률 기반의 모델(Probabilistic Topic Models), 비지도학습(unsupervised learning)이자 생성모델(generative model)이다.
PLSA(Probabilistic Latent Semantic Analysis)가 등장하면서 이에 영향을 받은 LDA(Latent Dirichlet Allocation)가 개발되며 토픽 모델 분야가 만들어졌다.
- Topic modeling을 위한 가정:
문서 집합은 내부적으로 의미 있는 구조를 갖는다.
문서 - 단어 (co-occurrences)로부터 topic을 추출해 낼 수 있다.
이러한 추출을 알고리즘으 통해 simulation할 수 있다.
- Topic Modeling의 목적:
대상 문서 집합을 가장 잘 표현하는 토픽들을 찾아냄
각 문서에서 주로 어떤 토픽이 사용되었는지 찾아냄
- Topic Model에서 사용하는 문서 표현:
Bag-of-words model → 문서가 단어의 집합이라 가정, 단어 순서는 고려하지 않는다.
Vector space model → 사전으로부터 각 단어의 index를 찾고 문서(sentence)내에서의 빈도수(word frequency)를 세어 vector로 표시함
Topic Model의 종류

1. Multinomial Mixture(MM)
- 문서 내 단어들은 토픽 - 단어 확률 분포에 따라 생성된다고 가정한다.
- 하나의 문서는 하나의 토픽이 아닌 여러 토픽들과 연결될 수 있다. (Mixture, Multinomial)
- 각 토픽별로 단어들에 대한 확률 분포가 존재한다.
- topic z1에 대한 topic-word distribution:
p(w1|z1), p(w2|z1), p(w3|z1), p(w4|z1), p(w5|z1), p(w6|z1) → parameters! (찾아야하는 확률값)
문서 d와 topic ‘z’의 joint probability 를 구한다.
- p(z, d) → p(z, t1, t2, t3, t4, t5) = p(z)*p(t1|z)*p(t2|z)*p(t3|z)*p(t4|z)*p(t5|z)
- t1=w1, t2=w2, t3=w1, t4=w2, t5=w4라면, p(z)*p(w1|z)^2*p(w2|z)^2*p(w4|z)^ → t1, t3은 같은단어 / t2, t4는 같은단어 → 목적은 이 문서가 발생활 확률을 최대화 하는 것! (즉, log-likelihood를 최대화!)

- 모든 문서에 대해서 log-likelihood를 구한다. 최종적으로 이 log-likelihood 값을 최대화시켜야 한다.
- training을 통해서 parameter들의 값을 구하는데, 정답 label이 존재하지 않는 학습이기 때문에 EM(Expectation Maximization) Algorithm을 사용한다.
- training이 종료되면, 각 topic에 대해서 distribution이 구해진다. → z1의 경우) p(w1|z1), p(w2|z2), … , p(wm|z1)
최종적으로 각 토픽을 단어의 확률로 표현할 수 있게되며, 확률값이 높은 단어 순으로 정렬된다. 이 단어들을 보고 사람이 토픽이름을 결정해 주어야 한다.
2. Probabilistic Latent Semantic Analysis(PLSA)
MM Model 에서 발전된 형태로, topic을 선택하기 전에 문서(d)를 선택하는 과정이 추가되었다.
p(d)의 확률로 문서 ‘d’를 선택 ⇒ p(y|d)의 확률로 토픽 ‘y’를 선택 ⇒ 선택된 토픽의 topic-word distribution으로부터 단어들이 하나씩 생성됨 (p(w|d))
3. Latent Dirichlet Allocation(LDA)
문서마다 토픽을 생성하는 확률이 단순히 multinomial distribution(frequency)으로부터 계산되는 것이 아니라 이 확률을 생성하는 다른 확률 분포(dirichlet distribution)를 가정한다. alpha는 dirichlet의 parameter이다.
문서 생성을 주어진 데이터에 완전히 의존하는 것이 아니라, 이를 생성하기 위한 새로운 확률 분포를 고려함으로써 좀 더 일반적인 distribution을 예측할 수 있다.
LDA(Latent Dirichlet Allocation) 모델은 문서별로 단어의 분포만을 가지고 Document-Term 행렬을 만들어서 베이즈 추론을 이용하여 ‘토픽별 단어의 분포’와 ‘문서별 토픽의 분포’ 2가지를 알아야 한다. 베이즈 추론을 사용할 때 사전확률(Prior) 분포로 사용하는 것이 Dirichlet Distribution이다.
[Practice] LDA Topic Modeling - billboard_lyrics data