lda整體流程
先定義一些字母的含義:
lda以文件集合d作為輸入(會有切詞,去停用詞,取詞幹等常見的預處理,略去不表),希望訓練出的兩個結果向量(設聚成k個topic,voc中共包含m個詞):
lda的核心公式如下:
p(w|d) = p(w|t)*p(t|d)
直觀的看這個公式,就是以topic作為中間層,可以通過當前的θd和φt給出了文件d中出現單詞w的概率。其中p(t|d)利用θd計算得到,p(w|t)利用φt計算得到。
實際上,利用當前的θd和φt,我們可以為乙個文件中的乙個單詞計算它對應任意乙個topic時的p(w|d),然後根據這些結果來更新這個詞應該對應的topic。然後,如果這個更新改變了這個單詞所對應的topic,就會反過來影響θd和φt。
lda學習過程
lda演算法開始時,先隨機地給θd和φt賦值(對所有的d和t)。然後上述過程不斷重複,最終收斂到的結果就是lda的輸出。再詳細說一下這個迭代的學習過程:
1)針對乙個特定的文件ds中的第i單詞wi,如果令該單詞對應的topic為tj,可以把上述公式改寫為:
pj(wi|ds) = p(wi|tj)*p(tj|ds)
先不管這個值怎麼計算(可以先理解成直接從θds和φtj中取對應的項。實際沒這麼簡單,但對理解整個lda流程沒什麼影響,後文再說)。
2)現在我們可以列舉t中的topic,得到所有的pj(wi|ds),其中j取值1~k。然後可以根據這些概率值結果為ds中的第i個單詞wi選擇乙個topic。最簡單的想法是取令pj(wi|ds)最大的tj(注意,這個式子裡只有j是變數),即
argmax[j]pj(wi|ds)
當然這只是一種方法(好像還不怎麼常用),實際上這裡怎麼選擇t在學術界有很多方法,我還沒有好好去研究。
3)然後,如果ds中的第i個單詞wi在這裡選擇了乙個與原先不同的topic,就會對θd和φt有影響了(根據前面提到過的這兩個向量的計算公式可以很容易知道)。它們的影響又會反過來影響對上面提到的p(w|d)的計算。對d中所有的d中的所有w進行一次p(w|d)的計算並重新選擇topic看作一次迭代。這樣進行n次迴圈迭代之後,就會收斂到lda所需要的結果了。
nmf的缺點:只能對訓練樣本中的文字進行主題識別,而對不在樣本中的文字是無法識別其主題的。根本原因在於nmf與plsa這類主題模型方法沒有考慮主題概率分布的先驗知識,比如文字中出現體育主題的概率肯定比哲學主題的概率要高,這點**於我們的先驗知識,但是無法告訴nmf主題模型。而lda主題模型則考慮到了這一問題,目前來說,絕大多數的文字主題模型都是使用lda以及其變體。
編碼通俗解釋
很久很久以前,有一群人,他們決定用8個可以開合的電晶體來組合成不同的狀態,以表示世界上的萬物。他們看到8個開關狀態是好的,於是他們把這稱為 位元組 再後來,他們又做了一些可以處理這些位元組的機器,機器開動了,可以用位元組來組合出很多狀態,狀態開始變來變去。他們看到這樣是好的,於是它們就這機器稱為 計...
通俗解釋挖礦
位元幣本質上並不是乙個 幣 而是乙個記賬系統而已,而這個記賬系統中的最大單位,就是 1btc 而這個記賬系統,其實是需要委託乙個人來幫大家記總賬,記好了以後再把賬本複製分發到每個人手裡,然後這個系統會給這個記賬人一點工資作為獎勵。這個記賬人,就是礦工。那麼這裡就有了乙個問題了,我們怎麼保證這個記賬人...
ClearType通俗解釋
在解決了ie9字型模糊的問題後,我又繼續研究了一下windows的字型渲染方式,還動手編寫了乙個程式,這裡做乙個總結。windows的字型渲染型別有五種 和 可調整字型大小,右鍵撥出選單可以改變字型名稱和字型顏色,顯示效果如下 當然了,這張圖是我用放大鏡放大後的結果,這樣更加明顯一些嘛。其中的sys...