1. 程式人生 > >理順主題模型LDA及在推薦系統中的應用

理順主題模型LDA及在推薦系統中的應用

1 關於主題模型

使用LDA做推薦已經有一段時間了,LDA的推導過程反覆看過很多遍,今天有點理順的感覺,就先寫一版。

  • 隱含狄利克雷分佈簡稱LDA(latent dirichlet allocation),是主題模型(topic model)的一種,由Blei, David M.、Ng, Andrew Y.、Jordan於2003年提出。 主題模型屬於聚類方法,是一種無監督的學習方法。
  • 與通常的tf-idf相比,主題模型重在可以在語義上計算文字內容的相關性。主題模型是一種詞袋模型,即只考慮文字總的詞頻,不考慮順序。
  • 假設依據是一篇文字以一定的概率屬於多個主題(概率相加為1),一個詞也以一定的概率屬於多個主題(一個詞可能以不同的概率屬於不同的主題)。
  • 引數的先驗
    topic-word分佈受一個引數為α的對稱Dirichlet約束
    doc-topic分佈受一個引數為β的對稱Dirichlet約束

2 頻率學派與貝葉斯學派

這裡簡單介紹頻率學派和貝葉斯學派,因為PLSA和LDA分別用的是這兩種學派的思想。

  • 直至今日,關於統計推斷的主張和想法,大體可以納入到兩個體系之內,其一叫頻率學派,其特徵是把需要推斷的引數θ視作固定且未知的常數,而樣本X是隨機的,其著眼點在樣本空間,有關的概率計算都是針對X的分佈。另一派叫做貝葉斯學派,他們把引數θ視作隨機變數,而樣本X是固定的,其著眼點在引數空間,重視引數θ的分佈,固定的操作模式是通過引數的先驗分佈結合樣本資訊得到引數的後驗分佈。

以拋硬幣為例,正面朝上的概率是待求的引數。

  • 往小處說,頻率派認為引數是客觀存在,不會改變,雖然未知,但卻是固定值;貝葉斯派則認為引數是隨機值,因為沒有觀察到,那麼和是一個隨機數也沒有什麼區別,因此引數也可以有分佈。
  • 往大處說,頻率派最常關心的是似然函式,而貝葉斯派最常關心的是後驗分佈。我們會發現,後驗分佈其實就是似然函式乘以先驗分佈再normalize一下使其積分到1。因此兩者的很多方法都是相通的。貝葉斯派因為所有的引數都是隨機變數,都有分佈,因此可以使用一些基於取樣的方法(如MCMC)使得我們更容易構建複雜模型。頻率派的優點則是沒有假設一個先驗分佈,因此更加客觀,也更加無偏。
  • 例如,概率學派可能任務拋硬幣證明朝上的概率就是0.5;而貝葉斯學派先取得一個先驗概率,在通過做試驗觀察,結合先驗概率和觀察結果得出一個後驗概率,這個後驗概率才是硬幣證明朝上的概率,後驗概率本身也符合某種分佈。
  • LDA是三層貝葉斯模型。 簡單的說,一篇文章可以以不同的概率屬於多個主題,但分別以多大的概率屬於這些主題呢?例如文章A可以是{‘科技’:0.5, ‘體育’:0.2, ‘財經’:0.3}這種分佈, 也可能是{‘科技’:0.4, ‘體育’:0.4, ‘財經’:0.2}這種分佈. 貝葉斯學派認為這個分佈也服從一定分佈,這裡用的就是狄利克雷分佈,即它在LDA中其實是一個分佈的分佈。並且,LDA用到兩次Dilichlet:一個主題中詞的概率分佈也服從狄利克雷分佈。

3 PLSA與LDA

介紹PLSA和LDA兩種生產模型。

3.1 PLSA

3.1.1 舉個生成文字的例子

一篇文章往往有多個主題,只是這多個主題各自在文件中出現的概率大小不一樣。比如介紹一個國家的文件中,往往會分別從教育、經濟、交通等多個主題進行介紹。那麼在pLSA中,文件是怎樣被生成的呢?
假設你要寫M篇文件,由於一篇文件由各個不同的片語成,所以你需要確定每篇文件裡每個位置上的詞。
再假定你一共有K個可選的主題,有V個可選的詞,咱們來玩一個扔骰子的遊戲。

  1. 假設你每寫一篇文件會製作一顆K面的“文件-主題”骰子(扔此骰子能得到K個主題中的任意一個),和K個V面的“主題-詞項” 骰子(每個骰子對應一個主題,K個骰子對應之前的K個主題,且骰子的每一面對應要選擇的詞項,V個面對應著V個可選的詞)。
    比如可令K=3,即製作1個含有3個主題的“文件-主題”骰子,這3個主題可以是:教育、經濟、交通。然後令V = 3,製作3個有著3面的“主題-詞項”骰子,其中,教育主題骰子的3個面上的詞可以是:大學、老師、課程,經濟主題骰子的3個面上的詞可以是:市場、企業、金融,交通主題骰子的3個面上的詞可以是:高鐵、汽車、飛機。
  2. 每寫一個詞,先扔該“文件-主題”骰子選擇主題,得到主題的結果後,使用和主題結果對應的那顆“主題-詞項”骰子,扔該骰子選擇要寫的詞。
    先扔“文件-主題”的骰子,假設(以一定的概率)得到的主題是教育,所以下一步便是扔教育主題篩子,(以一定的概率)得到教育主題篩子對應的某個詞:大學。
    上面這個投骰子產生詞的過程簡化下便是:“先以一定的概率選取主題,再以一定的概率選取詞”。事實上,一開始可供選擇的主題有3個:教育、經濟、交通,那為何偏偏選取教育這個主題呢?其實是隨機選取的,只是這個隨機遵循一定的概率分佈。比如可能選取教育主題的概率是0.5,選取經濟主題的概率是0.3,選取交通主題的概率是0.2,那麼這3個主題的概率分佈便是{教育:0.5,經濟:0.3,交通:0.2},我們把各個主題z在文件d中出現的概率分佈稱之為主題分佈,且是一個多項分佈。
    同樣的,從主題分佈中隨機抽取出教育主題後,依然面對著3個詞:大學、老師、課程,這3個詞都可能被選中,但它們被選中的概率也是不一樣的。比如大學這個詞被選中的概率是0.5,老師這個詞被選中的概率是0.3,課程被選中的概率是0.2,那麼這3個詞的概率分佈便是{大學:0.5,老師:0.3,課程:0.2},我們把各個詞語w在主題z下出現的概率分佈稱之為詞分佈,這個詞分佈也是一個多項分佈。
    所以,選主題和選詞都是兩個隨機的過程,先從主題分佈{教育:0.5,經濟:0.3,交通:0.2}中抽取出主題:教育,然後從該主題對應的詞分佈{大學:0.5,老師:0.3,課程:0.2}中抽取出詞:大學。
    這裡寫圖片描述
  3. 最後,你不停的重複扔“文件-主題”骰子和”主題-詞項“骰子,重複N次(產生N個詞),完成一篇文件,重複這產生一篇文件的方法M次,則完成M篇文件。

3.1.2 流程總結

pLSA中生成文件的整個過程便是選定文件生成主題,確定主題生成詞:
這裡寫圖片描述

  1. 按照概率這裡寫圖片描述選擇一篇文件這裡寫圖片描述
  2. 選定文件這裡寫圖片描述後,從主題分佈中按照概率這裡寫圖片描述選擇一個隱含的主題類別這裡寫圖片描述
  3. 這裡寫圖片描述選定後,從詞分佈中按照概率這裡寫圖片描述選擇一個詞這裡寫圖片描述

如下圖所示(圖中被塗色的d、w表示可觀測變數,未被塗色的z表示未知的隱變數,N表示一篇文件中總共N個單詞,M表示M篇文件):
這裡寫圖片描述

上圖中,文件d和詞w是我們得到的樣本(樣本隨機,引數雖未知但固定,所以pLSA屬於頻率派思想。區別於下文要介紹的LDA中:樣本固定,引數未知但不固定,是個隨機變數,服從一定的分佈,所以LDA屬於貝葉斯派思想),可觀測得到,所以對於任意一篇文件,其這裡寫圖片描述是已知的。

從而可以根據大量已知的文件-詞項這裡寫圖片描述資訊,訓練出文件-主題這裡寫圖片描述和主題-詞項這裡寫圖片描述,如下公式所示:
這裡寫圖片描述
故得到文件中每個詞的生成概率為:
這裡寫圖片描述
由於可事先計算求出這裡寫圖片描述,而這裡寫圖片描述這裡寫圖片描述未知,所以就是我們要估計的這裡寫圖片描述引數(值),通俗點說,就是要最大化這個θ。

用什麼方法進行估計呢,常用的引數估計方法有極大似然估計MLE、最大後驗證估計MAP、貝葉斯估計等等。因為該待估計的引數中含有隱變數z,所以我們可以考慮EM演算法。 本文不展開介紹。

3.2 LDA

LDA就是在pLSA的基礎上加層貝葉斯框架。pLSA樣本隨機,引數雖未知但固定,屬於頻率派思想;而LDA樣本固定,引數未知但不固定,是個隨機變數,服從一定的分佈,LDA屬於貝葉斯派思想。 這裡的引數是指文件的主題分佈、主題的詞分佈。

3.2.1 LDA流程

LDA流程

從上圖可以看出,lda中,依據Dirichlet取樣到了不同的文件-主題分佈和主題-詞分佈。

這裡寫圖片描述

  • Boxed:
    K is the number of topics
    N is the number of words in the document
    M is the number of documents to analyse
  • α is the Dirichlet-prior concentration parameter of the per-document topic distribution
  • β is the same parameter of the per-topic word distribution
  • φ(k) is the word distribution for topic k
  • θ(i) is the topic distribution for document i
  • z(i,j) is the topic assignment for w(i,j)
  • w(i,j) is the j-th word in the i-th document
  • φ and θ are Dirichlet distributions, z and w are multinomials.
    生成文字的過程:

LDA模型中一篇文件生成的方式:

  1. 按照先驗概率這裡寫圖片描述選擇一篇文件這裡寫圖片描述
  2. 從狄利克雷分佈α中取樣生成文件這裡寫圖片描述的主題分佈這裡寫圖片描述,換言之,主題分佈這裡寫圖片描述由超引數為α的Dirichlet分佈生成
  3. 從主題的多項式分佈這裡寫圖片描述中取樣生成文件這裡寫圖片描述第 j 個詞的主題這裡寫圖片描述
  4. 從狄利克雷分佈(即Dirichlet分佈)β中取樣生成主題這裡寫圖片描述
    對應的詞語分佈這裡寫圖片描述,換言之,詞語分佈這裡寫圖片描述由引數為β的Dirichlet分佈生成
  5. 從詞語的多項式分佈這裡寫圖片描述中取樣最終生成詞語 這裡寫圖片描述

3.2.2 Gibbs LDA

前面已經介紹了LDA流程,最終的目標函式是個聯合概率。待求的doc-topic和topic-word兩個矩陣,是藉助上述流程中的這裡寫圖片描述求得的。gibbs sample就是用來求這個兩個概率矩陣的方法。 具體步驟再另一篇介紹取樣和變分的文章中再做介紹。

4 在推薦演算法中的應用

這裡寫圖片描述

步驟:
1. 離線求的模型
2. 用模型對新文字預測topic,取topic概率帶到閾值(例如0.2)且topN個topic,例如doc1 :topic1:0.5, topic2:0.2
3. 使用者點選doc1,就說明使用者對topic1和topic2感興趣,儲存使用者新聞分析結果,以待推薦

參考