主題模型TopicModel:主題模型LDA的應用


http://blog.csdn.net/pipisorry/article/details/45665779

主題模型LDA的應用

拿到這些topic后繼續后面的這些應用怎么做呢:
除了推斷出這些主題,LDA還可以推斷每篇文章在主題上的分布。例如,X文章大概有60%在討論“空間探索”,30%關於“電腦”,10%關於其他主題。

 

這些主題分布可以有多種用途:
聚類: 主題是聚類中心,文章和多個類簇(主題)關聯。聚類對整理和總結文章集合很有幫助。參看Blei教授和Lafferty教授對於Science雜志的文章生成的總結。點擊一個主題,看到該主題下一系列文章。
特征生成:LDA可以生成特征供其他機器學習算法使用。如前所述,LDA為每一篇文章推斷一個主題分布;K個主題即是K個數值特征。這些特征可以被用在像邏輯回歸或者決策樹這樣的算法中用於預測任務。
降維:每篇文章在主題上的分布提供了一個文章的簡潔總結。在這個降維了的特征空間中進行文章比較,比在原始的詞匯的特征空間中更有意義。

排序:The very best ways to sort large databases of unstructured text is to use a technique called Latent Dirichlet allocation (LDA).

皮皮blog

 

 

應用於推薦系統

在使用LDA(Latent Dirichlet Allocation)計算物品的內容相似度時,我們可以先計算出物品在話題上的分布,然后利用兩個物品的話題分布計算物品的相似度。比如,如果兩個物品的話題分布相似,則認為兩個物品具有較高的相似度,反之則認為兩個物品的相似度較低。計算分布的相似度可以利用KL散度來計算:
DKL(p||q)=∑i∈Xp(i)ln(p(i)/q(i),其中p和q是兩個分布,KL散度越大說明分布的相似度越低。

[基於主題模型的學術論文推薦系統研究]

 

隱語義模型LFM和LSI,LDA,Topic Model其實都屬於隱含語義分析技術,是一類概念,他們在本質上是相通的,都是找出潛在的主題或分類。這些技術一開始都是在文本挖掘領域中提出來的,近些年它們也被不斷應用到其他領域中,並得到了不錯的應用效果。比如,在推薦系統中它能夠基於用戶的行為對item進行自動聚類,也就是把item划分到不同類別/主題,這些主題/類別可以理解為用戶的興趣。

對於一個用戶來說,他們可能有不同的興趣。就以作者舉的豆瓣書單的例子來說,用戶A會關注數學,歷史,計算機方面的書,用戶B喜歡機器學習,編程語言,離散數學方面的書, 用戶C喜歡大師Knuth, Jiawei Han等人的著作。那我們在推薦的時候,肯定是向用戶推薦他感興趣的類別下的圖書。那么前提是我們要對所有item(圖書)進行分類。那如何分呢?大家注意到沒有,分類標准這個東西是因人而異的,每個用戶的想法都不一樣。拿B用戶來說,他喜歡的三個類別其實都可以算作是計算機方面的書籍,也就是說B的分類粒度要比A小;拿離散數學來講,他既可以算作數學,也可當做計算機方面的類別,也就是說有些item不能簡單的將其划歸到確定的單一類別;拿C用戶來說,他傾向的是書的作者,只看某幾個特定作者的書,那么跟A,B相比它的分類角度就完全不同了。

顯然我們不能靠由單個人(編輯)或team的主觀想法建立起來的分類標准對整個平台用戶喜好進行標准化。

此外我們還需要注意的兩個問題:

  1. 我們在可見的用戶書單中歸結出3個類別,不等於該用戶就只喜歡這3類,對其他類別的書就一點興趣也沒有。也就是說,我們需要了解用戶對於所有類別的興趣度。
  2. 對於一個給定的類來說,我們需要確定這個類中每本書屬於該類別的權重。權重有助於我們確定該推薦哪些書給用戶。
下面我們就來看看LFM是如何解決上面的問題的?對於一個給定的用戶行為數據集(數據集包含的是所有的user, 所有的item,以及每個user有過行為的item列表),使用LFM對其建模后,我們可以得到如下圖所示的模型:(假設數據集中有3個user, 4個item, LFM建模的分類數為4)
R矩陣是user-item矩陣,矩陣值Rij表示的是user i 對item j的興趣度,這正是我們要求的值。對於一個user來說,當計算出他對所有item的興趣度后,就可以進行排序並作出推薦。LFM算法從數據集中抽取出若干主題,作為user和item之間連接的橋梁,將R矩陣表示為P矩陣和Q矩陣相乘。其中P矩陣是user-class矩陣,矩陣值Pij表示的是user i對class j的興趣度;Q矩陣式class-item矩陣,矩陣值Qij表示的是item j在class i中的權重,權重越高越能作為該類的代表。所以LFM根據如下公式來計算用戶U對物品I的興趣度
我們發現使用LFM后,
  1. 我們不需要關心分類的角度,結果都是基於用戶行為統計自動聚類的,全憑數據自己說了算。
  2. 不需要關心分類粒度的問題,通過設置LFM的最終分類數就可控制粒度,分類數越大,粒度約細。
  3. 對於一個item,並不是明確的划分到某一類,而是計算其屬於每一類的概率,是一種標准的軟分類。
  4. 對於一個user,我們可以得到他對於每一類的興趣度,而不是只關心可見列表中的那幾個類。
  5. 對於每一個class,我們可以得到類中每個item的權重,越能代表這個類的item,權重越高。

那么,接下去的問題就是如何計算矩陣P和矩陣Q中參數值。一般做法就是最優化損失函數來求參數。在定義損失函數之前,我們需要准備一下數據集並對興趣度的取值做一說明。


數據集應該包含所有的user和他們有過行為的(也就是喜歡)的item。所有的這些item構成了一個item全集。對於每個user來說,我們把他有過行為的item稱為正樣本,規定興趣度RUI=1,此外我們還需要從item全集中隨機抽樣,選取與正樣本數量相當的樣本作為負樣本,規定興趣度為RUI=0。因此,興趣的取值范圍為[0,1]。


采樣之后原有的數據集得到擴充,得到一個新的user-item集K={(U,I)},其中如果(U,I)是正樣本,則RUI=1,否則RUI=0。損失函數如下所示:
上式中的 是用來防止過擬合的正則化項,λ需要根據具體應用場景反復實驗得到。損失函數的優化使用隨機梯度下降算法:
  1. 通過求參數PUK和QKI的偏導確定最快的下降方向;
  1. 迭代計算不斷優化參數(迭代次數事先人為設置),直到參數收斂。


其中,α是學習速率,α越大,迭代下降的越快。α和λ一樣,也需要根據實際的應用場景反復實驗得到。本書中,作者在 MovieLens 數據集上進行實驗,他取分類數F=100,α=0.02,λ=0.01。
【注意】:書中在上面四個式子中都缺少了


綜上所述,執行LFM需要:
  1. 根據數據集初始化P和Q矩陣(這是我暫時沒有弄懂的地方,這個初始化過程到底是怎么樣進行的,還懇請各位童鞋予以賜教。)
  2. 確定4個參數:分類數F,迭代次數N,學習速率α,正則化參數λ。

LFM的偽代碼可以表示如下:

  1. def LFM(user_items, F, N, alpha, lambda):
  2. #初始化P,Q矩陣
  3. [P, Q] = InitModel(user_items, F)
  4. #開始迭代
  5. For step in range(0, N):
  6. #從數據集中依次取出user以及該user喜歡的iterms集
  7. for user, items in user_item.iterms():
  8. #隨機抽樣,為user抽取與items數量相當的負樣本,並將正負樣本合並,用於優化計算
  9. samples = RandSelectNegativeSamples(items)
  10. #依次獲取item和user對該item的興趣度
  11. for item, rui in samples.items():
  12. #根據當前參數計算誤差
  13. eui = eui - Predict(user, item)
  14. #優化參數
  15. for f in range(0, F):
  16. P[user][f] += alpha * (eui * Q[f][item] - lambda * P[user][f])
  17. Q[f][item] += alpha * (eui * P[user][f] - lambda * Q[f][item])
  18. #每次迭代完后,都要降低學習速率。一開始的時候由於離最優值相差甚遠,因此快速下降;
  19. #當優化到一定程度后,就需要放慢學習速率,慢慢的接近最優值。
  20. alpha *= 0.9
當估算出P和Q矩陣后,我們就可以使用(*)式計算用戶U對各個item的興趣度值,並將興趣度值最高的N個iterm(即TOP N)推薦給用戶。
總結來說,LFM具有成熟的理論基礎,它是一個純種的學習算法,通過最優化理論來優化指定的參數,建立最優的模型。

[使用LFM(Latent factor model)隱語義模型進行Top-N推薦]

[主題模型LDA及其在微博推薦&廣告算法中的應用]

皮皮blog

 

 

LDA主題模型用於BUG修復人推薦

[缺陷修復人預測(Bug Triaging)]

[LDA主題模型用於BUG修復人推薦《DRETOM: developer recommendation based on topic models for bug resolution》]

 

[主題模型在文本挖掘中的應用.pdf]

from: http://blog.csdn.net/pipisorry/article/details/45665779

ref:

 

 


免責聲明!

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



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