본문 바로가기

프로그래밍/AI:ML:DL

[GENSIM] LDA 주제 분포 기준 문서간 유사도를 비교하는 방법

google gensim 그룹스에 How to compare the topical similarity between two documents fromo their LDA topic distributions? 란 질문이 올라왔음. 그 타래 중에 일부를 번역한다.


코사인 유사도 보다 쿨백-라이블러( kullback-leiber divergence )가 더 적절할지 모른다. - Victor Wang

gensim 튜토리얼에 따르면, Kullback-Leibler divergence 가 코사인 유사도 보다 더 적절한 유사도이다.

https://radimrehurek.com/gensim/tut3.html
"코사인 유사도는 벡터스페이스모델에서의 표준적인 방식이지만, 벡터가 확률분포를 나타낼 때에는 다른 유사도 측정방식이 더 적합할 수도 있다."

쿨백-라이블러 다이버전스 (Kullback-Leibler divergence) 를 계산하는 함수도 gensim 라이브러리 안에 존재한다.

https://radimrehurek.com/gensim/matutils.html

    gensim.matutils.kullback_leibler(vec1, vec2, num_features=None)`
Calculate Kullback-Leibler distance between two probability distributions using scipy.stats.entropy.

원문 : https://groups.google.com/d/msg/gensim/Cl5pmjcnyGo/jFCNcWxmBgAJ

I have some new findings.

Per the gensim tutorial, the Kullback-Leibler divergence is more appropriate than cosine similarity
https://radimrehurek.com/gensim/tut3.html
" Cosine similarity is a standard measure in Vector Space Modeling, but wherever the vectors represent probability distributions, different similarity measures may be more appropriate."

There are some built-in functions to calculate the Kullback-Leibler divergence.

https://radimrehurek.com/gensim/matutils.html

gensim.matutils.kullback_leibler(vec1, vec2, num_features=None)
Calculate Kullback-Leibler distance between two probability distributions using scipy.stats.entropy.


젠슨-새넌( Jensen-Shannon )이 대칭적이기 때문에, 쿨백-라이블러(KLD)보다 더 유용할 수도 있다. - zks...(at)ualr.edu

쿨백-라이블러는 비대칭적이기 때문에, 대칭성이 있는 젠슨-섀넌 발산( Jensen-Shannon divergence)가 더 유용할 수 있다.

원문 : https://groups.google.com/d/msg/gensim/Cl5pmjcnyGo/7vPZIEGOAAAJ

Note that KL divergence is an asymmetric measure. Jensen-Shannon divergence is a symmetric form that might be useful here.


see also : [머신러닝] Jensen–Shannon 발산과 Kullback–Leibler 발산