天天看點

LDA模型應用、問題、評估1 應用2 不足&改進3 LDA模型評估

LDA主題模型及python實作介紹了LDA模型的基本原理與Sklearn實作流程。

1 應用

  1. 聚類:主題是聚類中心,文章和多個類簇(主題)關聯。聚類對整理和總結文章集合很有幫助。參看Blei教授和Lafferty教授對于Science雜志的文章生成的總結。點選一個主題,看到該主題下一系列文章。
  2. 特征生成:LDA可以生成特征供其他機器學習算法使用。LDA為每一篇文章推斷一個主題分布;K個主題即是K個數值特征。這些特征可以被用在像邏輯回歸或者決策樹這樣的算法中用于預測任務。
  3. 降維:每篇文章在主題上的分布提供了一個文章的簡潔總結。在這個降維了的特征空間中進行文章比較,比在原始的詞彙的特征空間中更有意義。
  4. 排序:The very best ways to sort large databases of unstructured text

    is to use a technique called Latent Dirichlet allocation (LDA).

  5. 在使用LDA計算物品的内容相似度時,我們可以先計算出物品在話題上的分布,然後利用兩個物品的話題分布計算物品的相似度。比如,如果兩個物品的話題分布相似,則認為兩個物品具有較高的相似度,反之則認為兩個物品的相似度較低。計算分布的相似度可以利用KL散度來計算

2 不足&改進

2.1 文檔比較短

  1. ICML論文有理論分析,文檔太短确實不利于訓練LDA,但平均長度是10這個數量級應該是可以的,如peacock基于query 訓練模型。有一些經驗技巧加工資料,譬如把同一session 的查詢拼接,同一個人的twitter 拼接等。也可以用w2v那樣的小視窗訓練過lda。
  2. 是如word2vec一樣,利用local context-level word co-occurrences。 也就是說,把每個詞當成一個文檔以及把它周圍出現過的詞當做這個文檔的内容。這樣的話就不會受文檔長度的限制了。
  3. 短文本語義更集中明确,LDA是适合處理的,也可以做一些文本擴充的工作,有query log的話,1. query session,2. clickstream。無query log的話,1. 短文本當做query,通過搜尋引擎(或語料庫)擷取Top相關性網頁,2. 用語料庫中短文本周邊詞集,3. 知識庫中近義詞,上下位詞等。
  4. 微網誌

2.2 單詞帶來的問題

LDA是一種非監督機器學習技術,可以用來識别大規模文檔集(document collection)或語料庫(corpus)中潛藏的主題資訊。它采用了詞袋(bag of words)的方法,這種方法将每一篇文檔視為一個詞頻向量,進而将文本資訊轉化為了易于模組化的數字資訊。但是詞袋方法沒有考慮詞與詞之間的順序,這簡化了問題的複雜性,同時也為模型的改進提供了契機。每一篇文檔代表了一些主題所構成的一個機率分布,而每一個主題又代表了很多單詞所構成的一個機率分布。由于 Dirichlet分布随機向量各分量間的弱相關性(之是以還有點“相關”,是因為各分量之和必須為1),使得我們假想的潛在主題之間也幾乎是不相關的,這與很多實際問題并不相符,進而造成了LDA的又一個遺留問題。

LDA不考慮文檔中單詞的這些位置。像 “Man, I love this can” and “I can love this man” 這樣的檔案可能是以同樣的方式模組化的。對于更長的文檔來說,不比對的主題也更難。為了克服這個限制,以幾乎平方的複雜性為代價,2-grams (or N-grams)along with 1-gram.LDA的另一個弱點在于主題構成:它們是重疊的。事實上,你可以在多個主題中找到相同的單詞(上面的例子,單詞“can”,很明顯)。是以,例如,生成的主題不像PCA分解的基礎那樣是獨立的和正交的(正交的)。這意味着你在處理它們時必須付出很多注意力(例如,不要使用相似性)。對于更結構化的方法 - 特别是如果主題組合非常誤導 - 您可以考慮LDA的層次變體,名為H-LDA,(或簡稱為Hierarchical LD​​A)。在H-LDA中,通過使用嵌套中餐廳流程(NCRP)将主題連接配接在一起。

3 LDA模型評估

三種 Perplexity 計算方法

繼續閱讀