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個可選的詞,咱們來玩一個扔骰子的游戲。
- 假設你每寫一篇文檔會制作一顆K面的“文檔-主題”骰子(扔此骰子能得到K個主題中的任意一個),和K個V面的“主題-詞項” 骰子(每個骰子對應一個主題,K個骰子對應之前的K個主題,且骰子的每一面對應要選擇的詞項,V個面對應着V個可選的詞)。
比如可令K=3,即制作1個含有3個主題的“文檔-主題”骰子,這3個主題可以是:教育、經濟、交通。然后令V = 3,制作3個有着3面的“主題-詞項”骰子,其中,教育主題骰子的3個面上的詞可以是:大學、老師、課程,經濟主題骰子的3個面上的詞可以是:市場、企業、金融,交通主題骰子的3個面上的詞可以是:高鐵、汽車、飛機。 - 每寫一個詞,先扔該“文檔-主題”骰子選擇主題,得到主題的結果后,使用和主題結果對應的那顆“主題-詞項”骰子,扔該骰子選擇要寫的詞。
先扔“文檔-主題”的骰子,假設(以一定的概率)得到的主題是教育,所以下一步便是扔教育主題篩子,(以一定的概率)得到教育主題篩子對應的某個詞:大學。
上面這個投骰子產生詞的過程簡化下便是:“先以一定的概率選取主題,再以一定的概率選取詞”。事實上,一開始可供選擇的主題有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}中抽取出詞:大學。 - 最后,你不停的重復扔“文檔-主題”骰子和”主題-詞項“骰子,重復N次(產生N個詞),完成一篇文檔,重復這產生一篇文檔的方法M次,則完成M篇文檔。
3.1.2 流程總結
pLSA中生成文檔的整個過程便是選定文檔生成主題,確定主題生成詞:
- 按照概率
選擇一篇文檔
- 選定文檔
后,從主題分布中按照概率
選擇一個隱含的主題類別
選定后,從詞分布中按照概率
選擇一個詞
如下圖所示(圖中被塗色的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中,依據Dirichlet采樣到了不同的文檔-主題分布和主題-詞分布。
- 1
- 2
- 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模型中一篇文檔生成的方式:
- 按照先驗概率
選擇一篇文檔
- 從狄利克雷分布α中取樣生成文檔
的主題分布
,換言之,主題分布
由超參數為α的Dirichlet分布生成
- 從主題的多項式分布
中取樣生成文檔
第 j 個詞的主題
- 從狄利克雷分布(即Dirichlet分布)β中取樣生成主題
對應的詞語分布,換言之,詞語分布
由參數為β的Dirichlet分布生成
- 從詞語的多項式分布
中采樣最終生成詞語
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感興趣,保存用戶新聞分析結果,以待推薦