-
텍스트 마이닝 (2) Latent Dirichlet Allocation (LDA)데이터 분석 (Data Analysis) 2023. 10. 22. 20:44SMALL
LDA 란?
LDA는 잠재 디리클레 할당이라는 의미로, 문서가 생성되는 과정을 확률 모형으로 모델링 하는 것이다. (선형 판별 분석 (Linear Discriminant Analysis) 아님!!) LDA는 Soft Clustering 의 한 형태이기도 하다. 각 문서는 여러 주제에 동시에 속할 수 있기 때문이다.
LDA는 텍스트 문서 집합에서 숨겨진 토픽을 발견하고, 이를 추론하는 통계 모델로 아래 두가지 가정 하에서 수행된다.
가정
(1) 각 문서가 여러 토픽으로 구성됨
(2) 각 토픽은 단어의 확률 분포로 표현됨
LDA 구현 과정
1. 문서를 수집하고, 이전 게시글에서 다룬 BoW 를 먼저 생성한다.
2. 주제 수 K (>=2) 를 분석가가 임의로 설정하며, 각 주제가 단어의 분포를 따른다고 가정한다.
3. 각 문서가 주제에 대한 분포를 가진다고 가정하며, 주제와 단어의 관계를 모델링한다.
따라서, LDA 모델로 얻고자 하는 것은 1) 토픽별 단어 분포 ($\Theta$)와, 2) 문서별 토픽 분포 ($\Phi$) 이다.
Notation Meaning Unknown/Known $D$ 문서 수 Known $K$ 토픽 수 (분석가가 임의 지정) Known $N$ $d$번째 문서의 단어 수 Known $\Theta_d \sim Dir(\alpha)$ for $d \in \{1,2,\cdots,D\}$ 문서별 토픽 분포 Unknown -> 추정 필요 $\Phi_k \sim Dir(\beta)$ for $k \in \{1,2,\cdots, K\}$ 토픽별 단어 분포 Unknown -> 추정 필요 $z_{d,n} \sim Multi(\Theta_d)$ 특정 단어의 토픽 분포 Unknown -> 추정 필요 $w_{d,n} \sim Multi(\Phi_{z_{d,n},n})$ $d$th 문서의 $n$th 단어 Known 1) 토픽별 단어 분포($\Theta$)와, 2) 문서별 토픽 분포($\Phi$)는 각각 디리클레 분포 $Dir(\alpha)$, $Dir(\beta)$를 따른다고 가정한다. 여기서 Gibbs Sampling 을 통해 $z_{d,n}$ -> $\Phi$ -> $\Theta$ 순으로 업데이트를 하게되는데,
$$p(\Theta|data) \propto l(data|\Theta)p(\Theta)$$ 에서 현재 likelihood 파트가 Multinomial 분포를 따르므로, 이에 posterior와 prior 파트는 켤레 분포인 Dirichlet 분포를 따르는것이 계산상 이점이 있어, 디리클레 분포를 따르게 된다. (이 부분에서 LDA의 'D'가 왜 Dirichlet 이었는지 알 수 있다. )
이 LDA 모델의 가장 중요한 점은 '단어에 적절한 주제 (Z) 를 할당하였는가' 인데 Gibbs Sampling 을 통해 이를 구현한다. (이 부분에서 LDA의 'L': 잠재, 'A': 할당 을 이해할 수 있다.) Gibbs Sampling 은 N개의 자료에서 N-1개는 고정시키고 한 차원에 대해서만 샘플링하여, 이를 합치는 개념이다. LDA에서는 다음과 같이 수행된다.
Gibbs Sampling 과정
1. 각 단어에 임의의 주제를 설정한다. (Z을 임의로 설정)
2. 하나의 단어만 제외하고 나머지 단어에 할당된 주제들이 모두 옳다고 가정한다.
3. 선택한 하나의 단어가 속한 문서의 주제 분포 $P(Topic|Document)$를 계산하고, 그 단어가 속한 주제의 단어 분포 $P(Word|Topic)$를 계산하여 곱한다. $P(Word|Topic)P(Topic|Document)$ 에서 높은 값을 냈던 Topic 을 하나 뽑아 해당 단어에 배정한다.
4. 2번으로 돌아가 $\Phi$와 $\Theta$가 수렴할때까지 반복한다.
LDA 성능 평가
Perliexity (혼잡도)
모델이 데이터를 얼마나 잘 예측하는지 척도로 사용되며, 낮을수록 좋다.
$$Perplexity(W) = exp(-1*(\sum(log(P(w|\theta,\phi)))/N))$$
전체 Document 를 Train/Validation/Test로 나눠서 Train으로 LDA를 만들고 Validation으로 Perlexity 를 계산한다.
Validation 셋의 Perplexity 값을 관찰하며 모델을 조정하며 최종 LDA모델을 구축한다.
Coherence (일관성)
주제의 일관성을 측정하는 값으로, 높을수록 일관성이 높다고 판단한다.
단, coherence가 너무 높으면 정보의 양이 줄어드는 문제가 있어서 잘 조율해서 확인해야한다.
LDA 장점과 단점
LDA 장점
토픽을 추출하고, 문서를 토픽별로 분류할 수 있다. 문서 토픽을 확인해 문서를 요약할 수 있는 효과도 있다.
LDA 단점
K 를 분석가가 설정해야한다. 추출된 토픽이 단어들로만 구성되어있어, 어떤 의미를 가지는지 해석이 어려울 수 있다. 샘플링을 이용하는것으로 seed를 고정하지 않았다면 시행마다 결과가 달라질 수도 있다. 문서나 단어가 적을수록, 결과 변동성이 크다.
LDA 논문 링크: https://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf
반응형LIST'데이터 분석 (Data Analysis)' 카테고리의 다른 글
텍스트마이닝 (1) Bag-Of-Words (BoW) (0) 2023.10.15 텍스트 마이닝 개요 (Text Mining) (0) 2023.09.29 데이터 전처리 편 (0) 2023.09.16 기술통계 분석과 시각화 (Visualization) - 기초편 (0) 2023.09.09 데이터 형식과 타입 (1) 2023.09.03