原文章為scikit-learn中"用戶指南"-->"監(jiān)督學(xué)習(xí)的第九節(jié):Naive Bayes"######
這個(gè)樸素貝葉斯方法是一組基于貝葉斯理論的監(jiān)督學(xué)習(xí)算法,其對(duì)每個(gè)特征對(duì)都定義了一個(gè)"簡(jiǎn)單"假設(shè)。對(duì)給定的類變量** y 和獨(dú)立的特征向量 x1 至 xn **,貝葉斯理論的關(guān)系如下所示:

使用樸素的獨(dú)立假設(shè)后:

對(duì)全體** i **而言,其等式又能簡(jiǎn)化為:

因?yàn)?* P(x1, ..., xn) **在給定輸入時(shí),它的值就已經(jīng)固定不變了,所以可以使用下列的分類規(guī)則:

然后我們使用最大先驗(yàn)(MAP, Maximum A Posteriori)估計(jì)器來(lái)估計(jì)** P(y) 和 P(xi | y) 的值。前者對(duì)后者來(lái)說(shuō),表示的是在訓(xùn)練集中,類 y **出現(xiàn)的相對(duì)頻率。
不同的貝葉斯分類器的不同點(diǎn)在于,它們各自對(duì)** P(xi | y) **分布有著不同的假設(shè)。
盡管上面的假設(shè)有點(diǎn)過(guò)于簡(jiǎn)化了,但是樸素貝葉斯分類器卻能夠很好的作用于現(xiàn)實(shí)場(chǎng)景,例如著名的文檔分類和垃圾郵件過(guò)濾等功能。它們只需要小部分的訓(xùn)練集就能夠估計(jì)出必要的參數(shù)的值.(如果想要知道貝葉斯的原理和它需要的數(shù)據(jù)類型的話,可以參考下方的引用)
樸素貝葉斯學(xué)習(xí)器和分類器能夠極其快速地適應(yīng)大多復(fù)雜的方法。類條件特征分布的解耦意味著每一個(gè)分布能夠獨(dú)立的被估計(jì)成一個(gè)一維分布。而這一點(diǎn)能夠有效的應(yīng)對(duì)由于"維度詛咒"所引起的問(wèn)題。
在另一方面,盡管樸素貝葉斯作為一個(gè)出色的分類器很出名,但是它作為一個(gè)很糟糕的估計(jì)器也是很出名,所以在實(shí)際應(yīng)用上,不要太過(guò)于注重函數(shù)** predict_proba **的輸出值。
引用
- H. Zhang (2004).The optimality of Naive Bayes.Proc. FLAIRS.
1.9.1. 高斯樸素貝葉斯#
GaussianNB 實(shí)現(xiàn)了用于分類的高斯樸素貝葉斯,其將特征的似然假定成高斯:

參數(shù)** σy 和 μy **的值是使用最大似然來(lái)估計(jì)出的。
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> from sklearn.naive_bayes import GaussianNB
>>> gnb = GaussianNB()
>>> y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)
>>> print("Number of mislabeled points out of a total %d points : %d"
... % (iris.data.shape[0],(iris.target != y_pred).sum()))
Number of mislabeled points out of a total 150 points : 6
1.9.2. 多項(xiàng)式樸素貝葉斯#
MultinomialNB 實(shí)現(xiàn)了用于處理多項(xiàng)式分布的數(shù)據(jù)的樸素貝葉斯算法,并且這種算法屬于用于文本分類的貝葉斯經(jīng)典的兩種變種算法之一(一般是用詞向量技術(shù)來(lái)表示原始數(shù)據(jù),不過(guò)用 tf-idf 向量來(lái)表示也有比較好的表現(xiàn))。這個(gè)模型的分布會(huì)通過(guò)向量(** θy = θy1, ..., θyn )來(lái)為每一類 y 進(jìn)行參數(shù)化,其中 n 為特征的數(shù)量(在文本分類中應(yīng)為詞匯的大小), θyi 表示特征 i 表現(xiàn)為屬于類 y **的概率。
參數(shù)** θy **由一個(gè)平滑版本的最大似然來(lái)估計(jì)出的。例如相對(duì)頻率計(jì)數(shù):

其中** Nyi = Σ(χ∈T)·xi **是一個(gè)在訓(xùn)練集 ** T 中,特征 i 出現(xiàn)在類 y 的次數(shù),然后 Ny = Σ(i = 1)^(|T|)·(Nyi) 則是在每個(gè) y **類中,所有特征的總出現(xiàn)次數(shù)。
然后平滑先驗(yàn)** α >= 0 則會(huì)根據(jù)考慮到?jīng)]在訓(xùn)練樣本出現(xiàn)的特征來(lái)防止在后續(xù)計(jì)算中出現(xiàn)零概率的可能性。當(dāng) α = 1 時(shí)這個(gè)平滑過(guò)程就是拉普拉斯平滑,而 α < 1 **的平滑則叫做Lidstone平滑。
1.9.3. 伯努利樸素貝葉斯#
BernoulliNB 實(shí)現(xiàn)了對(duì)有多項(xiàng)式伯努利分布的數(shù)據(jù)的NB訓(xùn)練和分類算法。即存在多個(gè)以二進(jìn)制變量(Bernoulli, boolean)所定義的特征值。也正因?yàn)槿绱?,這個(gè)類需要特征以二進(jìn)制向量的方式來(lái)表示;如果存在非二進(jìn)制類型的特征,** BernoulliNB 也會(huì)試圖將其變成二進(jìn)制(不過(guò)還是取決于 binarize **參數(shù)的設(shè)置)。
伯努利樸素貝葉斯的決策規(guī)則基于下列公式:

這一公式與多項(xiàng)式NB的不同點(diǎn)在于,這公式明確地對(duì)特征** i **的不出現(xiàn)進(jìn)行了懲罰,而多項(xiàng)式的該公式變體則只會(huì)簡(jiǎn)單的忽略沒(méi)出現(xiàn)的特征。
在文本分類中,可以用詞頻向量(而不是詞數(shù)向量)來(lái)訓(xùn)練和使用這個(gè)分類器。**BernoulliNB **會(huì)在一些數(shù)據(jù)集上有更好的表現(xiàn),特別是那些短篇文章。不過(guò)時(shí)間允許的話,還是建議分別對(duì)這兩種模型來(lái)做評(píng)估以選擇更符合條件的那個(gè)。
引用
- C.D. Manning, P. Raghavan and H. Schütze (2008). Introduction to Information Retrieval. Cambridge University Press, pp. 234-265.
- A. McCallum and K. Nigam (1998). A comparison of event models for Naive Bayes text classification. Proc. AAAI/ICML-98 Workshop on Learning for Text Categorization, pp. 41-48.
- V. Metsis, I. Androutsopoulos and G. Paliouras (2006). Spam filtering with Naive Bayes – Which Naive Bayes? 3rd Conf. on Email and Anti-Spam (CEAS).
1.9.4. 超核樸素貝葉斯模型的擬合過(guò)程#
樸素貝葉斯模型能夠用來(lái)解決擁有難以存入內(nèi)存的數(shù)據(jù)集的大規(guī)模分類問(wèn)題。為了解決這一問(wèn)題,MultinomialNB, BernoulliNB, 和 GaussianNB 提供了一個(gè) ** partial_fit **方法,可以跟其他分類器一樣增量地使用,例如文檔的超核分類所示。
與** fit 函數(shù)相反,第一次調(diào)用 partial_fit **函數(shù)時(shí)需要傳入所有可預(yù)見的類標(biāo)簽列表。
如果要知道更多在scikit-learn中關(guān)于可用策略的描述的話,可以參考這篇 out-of-core learning 文檔。
注意:
因?yàn)闃闼刎惾~斯模型里的** partial_fit **方法存在一些計(jì)算開銷,所以在每次操作的時(shí)候,在內(nèi)存(RAM)允許的情況下,盡可能的擴(kuò)大數(shù)據(jù)塊的大小以減少多次調(diào)用所產(chǎn)生的額外開銷。
(在嘗試翻譯這篇文檔的時(shí)候難免會(huì)因?yàn)楦鞣N問(wèn)題而出現(xiàn)錯(cuò)翻,如果發(fā)現(xiàn)的話,煩請(qǐng)指出,謝謝> <)