做者:櫻花豬算法
摘要:網絡
本文爲七月算法(julyedu.com)12月機器學習第十五次課在線筆記。主題模型是對文字隱含主題進行建模的方法。它克服了傳統信息檢索中文檔類似度計算方法的缺點,而且可以在海量互聯網數據中自動尋找出文字間的語義主題。主題模型在天然語言和基於文本的搜索上都起到很是大的做用。機器學習
引言:函數
兩篇文檔是否相關每每不僅決定於字面上的詞語重複,還取決於文字背後的語義關聯。對語義關聯的挖掘,可讓咱們的搜索更加智能化。而主題模型則是用於解決這個方法的很是經典的模型。主題模型是對文字隱含主題進行建模的方法。它克服了傳統信息檢索中文檔類似度計算方法的缺點,而且可以在海量互聯網數據中自動尋找出文字間的語義主題。學習
主題模型的主要思想就是經過對文檔的統計分析找到對應的主題,再有主題來找到在這個主題下會產生詞語的機率。在操做中,文檔和詞都是已知條件而主題模型則是隱變量,基於這一點咱們可以很好的利用EM算法特性。文章介紹了pLSA和LDA兩種方法,經過課程可以更加實際的瞭解主題模型的應用。spa
預備知識:3d
1、預備概念orm
一、函數:blog
函數是階乘在實數上的推廣:ci
二、Beta分佈
Beta分佈的機率密度:
其中係數B爲:
Gamma函數能夠當作階乘的實數域推廣:
Bata分佈的指望:
樸素貝葉斯的分析能夠勝任許多文本分類問題。
可是樸素貝葉斯的分析沒法解決語料中一詞多義和多詞一義的問題——它更像是詞法分析,而非語義分析。
o若是使用詞向量做爲文檔的特徵,一詞多義和多詞一義會形成計算文檔間類似度的不許確性。
o能夠經過增長「主題」的方式,必定程度的解決上述問題:
n一個詞可能被映射到多個主題中o——一詞多義
n多個詞可能被映射到某個主題的機率很高o——多詞一義
基於機率統計的pLSA模型(probabilistic Latent Semantic Analysis,機率隱語義分析),增長了主題模型,造成簡單的貝葉斯網絡,可使用EM算法學習模型參數。
D表明文檔,Z表明主題(隱含類別),W表明單詞;
P(di)表示文檔di的出現機率,
P(zk|di)表示文檔di中主題zk出現的機率,
P(wj|zk)表示給定主題zk的前提下單詞wj出現的機率。
每一個文檔在全部主題上服從多項分佈;每一個主題在全部詞項上服從多項分佈。
整個文檔的生成過程是這樣的:
以P(di)的機率選中文檔di;
以P(zk|di)的機率選中主題zk;
以P(wj|zk)的機率產生一個單詞wj。
觀察數據爲(di,wj)對,主題zk是隱含變量。
(di,wj)的聯合分佈爲:
而對應了兩組多項分佈,而計算每一個文檔的主題分佈,就是該模型的任務目標。
pLSA模型算法:
觀察數據爲(di,wj)對,主題zk是隱含變量。
目標函數(極大似然估計):
未知變量/自變量
使用逐次逼近的辦法:(EM算法)
假定P(zk|di)、P(wj|zk)已知,求隱含變量zk的後驗機率;(E-step)
在(di,wj,zk)已知的前提下,求關於參數P(zk|di)、P(wj|zk)的似然函數指望極大值,獲得最優解P(zk|di)、P(wj|zk),(M-step)
帶入上一步,從而循環迭代;
PLSA模型總結
pLSA應用於信息檢索、過濾、天然語言處理等領域,pLSA考慮到詞分佈和主題分佈,使用EM算法來學習參數。
opLSA能夠看作機率化的矩陣分解。
o雖然推導略顯複雜,但最終公式簡潔清晰,很符合直觀理解;推導過程使用了EM算法,也是學習EM算法的重要素材。
2、LDA模型
pLSA不須要先驗信息便可完成自學習——這是它的優點。若是在特定的要求下,須要有先驗知識的影響呢?LDA模型
LDA模型:是一個三層結構的貝葉斯模型,須要超參數。
一、共軛先驗分佈
在貝葉斯機率理論中,若是後驗機率P(θ|x)和先驗機率p(θ)知足一樣的分佈律,那麼,先驗分佈和後驗分佈被叫作共軛分佈,同時,先驗分佈叫作似然函數的共軛先驗分佈。
經過共軛先驗分佈咱們可以從
二項分佈-->多項分佈
Bata分佈-->Dirichlet分佈
Bata分佈:
Dirichlet分佈:
簡記:
是參數向量,共K個
定義在(K-1)維的單純形上,其餘區域的機率密度爲0
對稱Dirichlet分佈:
,其中
>1時,的機率增大
<1時,退化爲均勻分佈
>1時,的機率增大
三、LDA模型
LDA的解釋:
共有m篇文章,一共涉及了K個主題;
每篇文章(長度爲Nm)都有各自的主題分佈,主題分佈是多項分佈,該多項分佈的參數服從Dirichlet分佈,該Dirichlet分佈的參數爲α;
每一個主題都有各自的詞分佈,詞分佈爲多項分佈,該多項分佈的參數服從Dirichlet分佈,該Dirichlet分佈的參數爲β;
o對於某篇文章中的第n個詞,首先從該文章的主題分佈中採樣一個主題,而後在這個主題對應的詞分佈中採樣一個詞。不斷重複這個隨機生成過程,直到m篇文章所有完成上述過程。
字典中共有V個term(不可重複),這些term出如今具體的文章中,就是word——在具體某文章中的word固然是有可能重複的。
語料庫中共有m篇文檔d1,d2…dm;
對於文檔di,由Ni個word組成,可重複;
語料庫中共有K個主題T1,T2…Tk;
α和β爲先驗分佈的參數,通常事先給定:如取0.1的對稱Dirichlet分佈——表示在參數學習結束後,指望每一個文檔的主題不會十分集中。
oθ是每篇文檔的主題分佈
對於第i篇文檔di的主題分佈是θi=(θi1,θi2…,θiK),是長度爲K的向量;
對於第i篇文檔di,在主題分佈θi下,能夠肯定一個具體的主題zij=k,k∈[1,K],
表示第k個主題的詞分佈,k∈[1,K],對於第k個主題Tk的詞分佈φk=(φk1,φk2…φkv),是長度爲v的向量
由zij選擇φzij,表示由詞分佈φzij肯定term,即獲得觀測值wij。
圖中K爲主題個數,M爲文檔總數,Nm是第m個文檔的單詞總數。β是每一個Topic下詞的多項分佈的Dirichlet先驗參數,α是每一個文檔下Topic的多項分佈的Dirichlet先驗參數。zmn是第m個文檔中第n個詞的主題,wmn是m個文檔中的第n個詞。兩個隱含變量θ和φ分別表示第m個文檔下的Topic分佈和第k個Topic下詞的分佈,前者是k維(k爲Topic總數)向量,後者是v維向量(v爲詞典中term總數)。
因爲在詞和文檔之間加入的主題的概念,能夠較好的解決一詞多義和多詞一義的問題。
在實踐中發現,LDA用於短文檔每每效果不明顯——這是能夠解釋的:由於一個詞被分配給某個主題的次數和一個主題包括的詞數目還沒有斂。每每須要經過其餘方案「鏈接」成長文檔。
LDA能夠和其餘算法相結合。首先使用LDA將長度爲Ni的文檔降維到K維(主題的數目),同時給出每一個主題的機率(主題分佈),從而可使用if-idf繼續分析或者直接做爲文檔的特徵進入聚類或者標籤傳播算法——用於社區發現等問題。