朴素贝叶斯文本分类
?
俺不是大牛啊,只能寫寫這種淺顯的文章了,算是拋磚引玉吧
?????????????????????????????
naive bayes(樸素貝葉斯,下面簡稱NB ^_^)是ML中的一個非常基礎和簡單的算法,常常
用它來做分類,我用它做過text classification。現在的研究中大概已經很少有人用它來
實驗了(除非是做base line),但確實是個很好的入門的算法,來幫助自己更加深刻的理
解ML的本質。
首先從bayes公式開頭吧
????? P(C/W) = P(C) * P(W/C) / P(W)
這個公式是ML中最基本也是最常用到的公式,怎么強調它的重要性都不過分。為了更容易理解這個公式,我將bayes公式放在文本分類問題中進行解釋。
?
公式的左邊,C代表的是文本的類別(例如是體育或者娛樂),W往往是一個測試樣本(例如某一篇新聞),P(C/W)代表的是這個樣本歸屬于該類別的概率,我們實際中的任務常常就是要得到樣本歸屬各個類別的概率值P(C1/W),P(C2/W)...P(CN/W),然后最大概率值所對應的類別Ci就是該樣本被分配的類。
?
?
計算這個概率值的方法就是bayes公式的右邊。
P(C)表示C這個類別在所有文本中的概率,是先驗概率。實際中,這個值往往通過訓練語
料計算得到,例如,將訓練語料中所有的體育文本數除以訓練語料總的文本數,就是體育這
個類別的先驗概率。
P(W)則是通過這個公式計算:
??????? P(W) =? ∑P(W/Ci) * P(Ci)
可以看出,P(W)的計算可以通過 P(C)和P(W/C)得到。
P(W/C)的計算下面將重點介紹。
現在的問題是怎樣計算P(W/C)。在現實中,W這個樣本往往是用向量表示的,包括了很多的分量 W = (w1, w2, w3,? ... wn), 所以 P(W/C) = P(w1, w2, w3,? ... wn / C),
NB的核心在于它假設向量的所有分量之間是獨立的。
????? Wi is independent of Wj, if i != j
對!這個假設就是NB的全部內容了,是不是很簡單。有了這個假設,P(W/C)的計算就變為:
???? ?P(W/C) = ∏ P(wi / C)
有人可能會問,那么 P(Wi / C)怎么求呢。以文本分類為例,將文本作為一個向量,那么Wi
的分量就是一個詞在這個文本中是否存在。例如:
???? Wi =? 1?? if? "喬丹" 在文本中出現
????????????? 0?? otherwise
對于這個Wi,它的P(Wi / C體育) 就是統計所有的體育文章中有多少篇出現了“喬丹”這
詞,然后用 出現篇章數 / 所有體育篇章數就是我們要的概率值了。
?
好了,終于寫完了,回過頭看,其實NB很簡單,就是在bayes公式的基礎上多了一個獨立性假設,很好理解的。至于它的性能,各有各的說法,我認為很多時候你對于特征的提取和方法參數的設置更重要于算法本身,當然,that is another open question
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?
總結
- 上一篇: 如何学习和做研究
- 下一篇: What Is Text Mining?