ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 텍스트마이닝_LDA란 무엇일까?
    Text Mining 2019. 12. 18. 18:20

    LDA

    (Latent Dirichlet Allocation)를 그대로 해석해보자면, 잠재, 디리클레, 책정이다.  디리클레는 디리클레 분포에서 따온 말이다. 디리클레 분포는 뒤에서 자세히 설명하도록 하겠다.

     

    그럼 어떤 목적에서 쓰이는 것일까?

    : 주어진 문서에 대하여 각 문서에 어떤 주제들이 존재하는지에 대한 확률 모형이다. 또한, 토픽별 단의 분포, 문서별 토픽의 분포를 모두 추정한다.

    위 그림을 보면 색깔별로 토픽이 나눠져 있다. 노란색 토픽 안에 gene, dna, genetic 등이 있으니까 유전과 관련된 토픽이라고 볼 수 있다. 초록색은 뇌와 관련된 토픽일 것이다. 그리고 단어별로 값이 쓰여져 있는데 이 값들은 토픽에서 등장할 확률을 나타낸다. 그리고 Documents를 살펴보면 확실히 노란색으로 칠해진 단어들이 많은 것을 확인 할 수 있다. 이는 노란색 토픽에 해당하는 단어가 이 문서에서 많이 등장하는 것이다. 오른쪽에 있는 Topic proportions & assignments가 LDA의 핵심 알고리즘이다.

     

    LDA의 순서는 이와 같다.

    1. 문서 집합에서 얻은 분포로부터 토픽을 뽑는다.

    2. 해당 토픽에 해당하는 단어들을 뽑는다.

     

     

    Model Architecture

    LDA Model Architecture

    모델 아키텍처를 천천히 설명해보도록 하겠다. 일단 박스가 세개 보일 것이다. 3개의 박스 중에 D는 말뭉치 전체 문서 개수를 나타낸다. K는 전체 토픽의 수(하이퍼 파라미터)를 나타내고, N은 d번째 문서의 단어의 수를 나타낸다.

    * 여기서 우리가 관찰 가능한 변수는 d번째 문서에 등장한 n번째 단어 W_d,n가 유일하다. 

    * 위 정보만을 가지고 α, η를 제외한 모든 잠재 변수를 추정해야 한다.

     

    - β_k는 K번째 토픽에 해당하는 벡터이다. 벡터, 말뭉치 전체의 단어 개수만큼의 길이를 갖게 된다.

    아래 그림을 보면 Topic1, 2, 3가 있는데 이 것은 β_1, β_2, β_3를 나타낸다. β는 하이퍼 파라미터 η에 영향을 받는다.

     

    - 다음으로 θ_d는 d번째 문서가 가진 토픽 비중을 나타내는 벡터이다. 

    아래 그림에서 Doc1에 해당하는 행의 토픽1,2,3 값이 보인다. 그 비율을 다 합치면 1이 되는 것을 알 수 있다. Doc1이 θ_1이라고 보면 된다.

    θ_d는 하이퍼 파라미터 α에 영향을 받는다.

    - Z_d,n은 d번째 문서 n번째 단어가 어떤 토픽에 해당하는지 할당해주는 역할을 한다.

    예를 들어 위 그래프에서 Doc3의 첫번째 단어(Z_3,1)는 높은 확률에 따라 Topic2일 가능성이 높다.

     

    - W_d,n은 관찰된 단어로써 β_k Z_d,n에 동시에 영향을 받는다.

    Doc3의 첫번째 단어(Z_3,1)가 만약 실제로 Topic2에 할당 됐다고 하면, W_3,1은 Topic2의 단어 분포 가운데 Money가 0.313으로 가장 높기에 Money가 될 가능성이 높다.

     

     

     

    LDA의 Inference

    우리에게는 W_d,n만 주어져있다. 그래서 이 단어를 가지고 역으로 잠재변수를 추정하는 inference과정을 거쳐야 한다.

    LDA는 토픽의 단어분포와 문서의 토픽분포의 결합으로 문서 내 단어들이 생성된다고 가정한다. 결국 W_d,n을 가지고 토픽의 단어분포와 문서의 토픽분포를 추정한다.

    따라서 사후확률(posterior) p(z,φ,β|w)를 최대로 만드는 z,φ,β를 찾아야 한다. p(w)는 잠재변수 z,φ,β의 모든 경우의 수를 고려한 각 단어(w)의 등장 확률을 가리킨다. 그래서 p(w)를 단번에 계산하는 것이 어려워 깁스 샘플링을 사용한다.

     

     

    깁스샘플링

    LDA에서는 불필요한 변수는 샘플링에서 제외하고, 나머지 변수는 고정시킨 후 한 변수만을 변화시킨다. 이 기법을 collapsed gibbs sampling이라 한다. p(z,φ,β|w)를 구할 때, φ,β를 계산에서 생략한다. 깁스 샘플링으로 구한 z로 계산할 수가 있게 되기 때문이다.

    $$p({ z }_{ i }=j|{ z }_{ -i },w)$$ 

    위 식을 보면 w는 우리에게 주어진 값이다. 그리고 바로 옆에 있는 z_-i는 i번째 단어를 제외한 모든 단어의 토픽 정보를 나타낸다. 그렇게 w와 z_-i가 주어졌을 때, i번째 단어의 토픽이 j가 될 확률을 나타낸다.

    밑에 그림을 보면 record가 z_i라고 보면 되고, 나머지 단어들이 z_-i를 나타낸다. 그래서 이 나머지 단어들을 가지고 record가 어떤 토픽에 속하는지 알아보는 것이 LDA의 깁스샘플링 과정이다.

    Gibbs sampling example

    그런데 중요한 것은 하나의 단어만이 아니라 문서 안에 모든 단어들을 record처럼 중심단어로 두고 다 깁스샘플링을 진행하는 것이다. 그렇게 되면 당연히 모든 단어에 대한 토픽 정보가 나타나게 될 것이다. 이 과정을 1000회-1만회 정도 반복 수행하면 그 결과가 수렴한다고 보면 된다. 깁스샘플링 계산 과정은 이기창님의 블로그를 참조하면 좋을 것이다.

     

     

     

    디리클레 분포

     

    댓글

Designed by Tistory.