如何確定LDA的主題個數


本文參考自:https://www.zhihu.com/question/32286630

   LDA中topic個數的確定是一個困難的問題。
   當各個topic之間的相似度的最小的時候,就可以算是找到了合適的topic個數。
   參考 一種基於密度的自適應最優LDA模型選擇方法 ,簡略過程如下:
  1. 選取初始K值,得到初始模型,計算各topic之間的相似度
  2. 增加或減少K的值,重新訓練得到模型,再次計算topic之間的相似度
  3. 重復第二步直到得到最優的K
  另外,Willi Richert , Luis Pedro Coelho著的《機器學習系統設計》第4章專門討論了LDA主題模型,其中一節講了“Choosing the number of topics”。文中提到
One of the methods for automatically determining the number of topics is called
the ** hierarchical Dirichlet process (HDP)**

  LDA中如何確定topic數量一直都沒有公認的好方法,原因在於不同業務對於生成topic的要求是存在差異的

  如果LDA的結果是用於某個目標明確的學習任務(比如分類),那么就直接采用最終任務的指標來衡量就好了,能夠實現分類效果最好的topic個數就是最合適的。

  如果沒有這樣的任務怎么辦?業界最常用的指標包括Perplexity,MPI-score等。以我的經驗,通過觀察Perplexity/MPI-score這些指標隨topic個數的變化確實能夠幫助我們選擇合適的個數值,比如可以找出曲線的拐點。但是這些指標只能作為參考,而不能作為標准。

  有的業務需要topic之間相互比較獨立,那么就可以選擇考察topic之間的相關性作為額外的指標。而有的業務可以容忍topic之間存在overlap,但是對topic中詞的聚合性要求高,這時候就需要尋找一些聚類的指標做評判標准。

  最后,肉眼看仍然是我目前發現的最簡單有效的方法。  
  這個問題在《LDA漫游指南》一書中做了很好的解答,詳見第4章第4.2節
topic number K:許多讀者問,如何設置主題個數,其實現在沒有特別好的辦( HDP等較為復雜的模型可以自動確定這個參數,但是模型復雜,計算復雜),
目前只有 交叉驗證(cross validation),通過設置不同的K值訓練后驗證比較求得最佳值,我的建議是一開始不要設置太大而逐步增大實驗,Blei在論文《Latent Dirichlet Allocation》提出過一個方法,采用設置不同的 topic數量,畫出topic_number-perplexity曲線;Thomas L. Griffiths等人在《Finding scientific topics》也提出過一個驗證方法,畫出topic_number-logP(w|T)曲線,然后找到曲線中的縱軸最高點便是topic數量的最佳值。有興趣的讀者可以去讀讀這兩篇論文原文的相應部分。這個參數同時也跟文章數量有關,可以通過一個思想實驗來驗證:設想兩個極端情況:如果僅有一篇文章做訓練,則設置幾百個topic不合適,如果將好幾億篇文章拿來做topic model,則僅僅設置很少topic也是不合適的。

 

 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM