잠재 디리클레 할당(Latent Dirichlet Allocation, LDA): LDA는 토픽(주제)별 단어의 분포, 문서별 토픽의 분포를 추정하는 확률적 모형으로, 토픽모델링의 대표적인 알고리즘이다.
LDA는 “문서들은 토픽들의 혼합으로 구성되어져 있으며, 토픽들은 확률 분포에 기반하여 단어들을 생성한다"고 가정하며, 데이터가 주어지면 LDA는 문서가 생성되던 과정을 역추적하며 토픽을 찾는다.
LDA를 통해 각 문서의 토픽 분포와 각 토픽 내의 단어 분포를 추정할 수 있음
문서1 : 저는 사과랑 바나나를 먹어요
문서2 : 우리는 귀여운 강아지가 좋아요
문서3 : 저의 깜찍하고 귀여운 강아지가 바나나를 먹어요
각 문서의 토픽 분포
각 토픽의 단어 분포
—> 사용자는 위 결과로부터 두 토픽이 각각 과일에 대한 토픽과 강아지에 대한 토픽이라고 판단해볼 수 있음
LDA 수행
토픽 개수 결정
단어에 도픽 할당(틀린 상태)
확률분포 기반 토픽 재할당
1) 같은 문서 내 단어의 토픽 분포 비교(문서가 특정 토픽에 속할 확률)
2) 타 문서 내 같은 단어의 토픽 분포 비교(해당 단어가 특정 토픽에 속할 확률)
LDA모델을 정리하면, $d$번째 문서 $i$번째로 등장하는 단어($z_{d,i}$)가 $j$번째 토픽에 할당될 확률은 다음과 같다.
표기 | 내용 |
---|---|
$𝑛_{d,k}$ | k번째 토픽에 할당된 d번째 문서의 단어 빈도 |
$U_{k,w_{d,n}}$ | 전체 말뭉치에서 k번째 토픽에 할당된 단어 $W_{d,n}$의 빈도 |
$W_{d,n}$ | d번째 문서에서 n번째로 등장할 단어 |
$\alpha$ | 문서의 토픽 분포 생성을 위한 디리클레 분포 파라미퍼(하이퍼파라미터) |
$\beta$ | 토픽의 단어 분포 생성을 위한 디리클레 분포 파라미터(하이퍼파라미터) |
$K$ | 사용자가 지정하는 토픽 수 |
$V$ | 말뭉치에 등장하는 전체 단어 수 |
$A$ | d번쨰 문서가 k번째 토픽과 맺고 있는 연관성 정도 |
$B$ | d번째 문서의 n번째 단어($W_{d,n}$)가 k번째 토픽과 맺고 있는 연관성 정도 |
$\alpha$와 $\beta$는 특정 토픽과 연관성이 아예 없을 경우, $z_{d,i}$가 ‘0’이 되는 것을 막는 역할
(글쓴이의 지인은 베타를 0.01로 고정하고, 알파만 바꿔가며 실험했다고 함)
(Griffiths&Steyvers(2004)에서는 beta를 0.1로, alpha를 50/토픽수 로 정해놓고 실험했다고 하기도 함)