建模
完成了特征表示、特征選擇后,下一步就是訓(xùn)練分類模型了。機(jī)器學(xué)習(xí)分類模型可以分成兩種:1)生成式模型;2)判別式模型??梢院唵握J(rèn)為,兩者區(qū)別生成式模型直接對(duì)樣本的聯(lián)合概率分布進(jìn)行建模:
生成式模型的難點(diǎn)在于如何去估計(jì)類概率密度分布p(x|y)。本文采用的樸素貝葉斯模型,其”Naive”在對(duì)類概率密度函數(shù)簡化上,它假設(shè)了條件獨(dú)立:
根據(jù)對(duì)p(x|y)不同建模形式,Naive Bayes模型主要分成:Muti-variate Bernoulli Model (多項(xiàng)伯努利模型)和Multinomial event model(多項(xiàng)事件模型)[4]。一次伯努利事件相當(dāng)于一次投硬幣事件(0,1兩種可能),一次多項(xiàng)事件則相當(dāng)于投色子(1到6多種可能)。我們結(jié)合傳統(tǒng)的文本分類解釋這兩類模型:
多項(xiàng)伯努利模型
已知類別的條件下,多項(xiàng)伯努利對(duì)應(yīng)樣本生X成過程:遍歷字典中的每個(gè)單詞(t1,t2…t|V|),判斷這個(gè)詞是否在樣本中出現(xiàn)。每次遍歷都是一次伯努利實(shí)驗(yàn),|V|次遍歷:
其中1(condition)為條件函數(shù),該函數(shù)表示當(dāng)條件成立是等于1,不成立時(shí)等于0;|V|則表示字典的長度。
多項(xiàng)事件模型
已知類別的條件下,多項(xiàng)事件模型假設(shè)樣本的產(chǎn)生過程:對(duì)文本中第k個(gè)位置的單詞,從字典中選擇一個(gè)單詞,每個(gè)位置k產(chǎn)生單詞對(duì)應(yīng)于一次多項(xiàng)事件。樣本X=(w1,w2…ws)的類概率密度:
采用向量空間模型表示樣本時(shí),上式轉(zhuǎn)成:
其中N(ti,X) 表示特征詞i在樣本X出現(xiàn)的次數(shù)。
參數(shù)估計(jì)
好啦,一大堆無聊公式的折磨后,我們終于要見到勝利的曙光:模型參數(shù)預(yù)估。一般的方法有最大似然估計(jì)、最大后驗(yàn)概率估計(jì)等。本文使用的是多項(xiàng)伯努利模型,我們直接給出多項(xiàng)伯努利模型參數(shù)估計(jì)結(jié)論:
還記得特征表示一節(jié)中統(tǒng)計(jì)的term_category_frequency和category_frequency兩張表嗎?此時(shí),就要發(fā)揮它的作用了!我們,只需要查詢這兩張表,就可以完成參數(shù)的估計(jì)了,是不是很happy? 過程雖然有點(diǎn)曲折,但是結(jié)果是美好的~ 具體參數(shù)意義可以參見特征表示一節(jié)。
接下來的coding的可能需要關(guān)注的兩個(gè)點(diǎn):
參數(shù)平滑
在計(jì)算類概率密度p(X | Cj)時(shí),如果在類Cj下沒有出現(xiàn)特征ti ,p(ti | Cj)=0,類概率密度連乘也將會(huì)等于0,額,對(duì)于一個(gè)樣本如果在某條件下某個(gè)特征沒有出現(xiàn),便認(rèn)為她產(chǎn)生的可能等于零,這樣的結(jié)論實(shí)在是過武斷,解決方法是加1平滑: