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