目錄
- 樸素貝葉斯相關(guān)知識(shí)點(diǎn)回顧
- 1.1. 什么是樸素貝葉斯分類(lèi)器
- 1.2. 樸素貝葉斯推斷
- 1.3. 樸素貝葉斯學(xué)習(xí)
- sklearn中樸素貝葉斯類(lèi)庫(kù)的簡(jiǎn)介
- 2.1. GaussianNB類(lèi)
- 2.2. MultinomialNB類(lèi)
- 2.3. BernoulliNB類(lèi)
這是《西瓜書(shū)帶學(xué)訓(xùn)練營(yíng)·實(shí)戰(zhàn)任務(wù)》系列的第四篇筆記
1. 樸素貝葉斯相關(guān)知識(shí)點(diǎn)回顧
1.1. 什么是樸素貝葉斯分類(lèi)器
判別式模型(discriminative models):像決策樹(shù)、BP神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等,都可以歸入判別式模型,它們都是直接學(xué)習(xí)出輸出Y與特征X的關(guān)系,如:
- 決策函數(shù) Y=f(X)
- 條件概率 P(Y|X)
生成式模型 (gernerative models):先對(duì)聯(lián)合概率分布 P(X,Y) 進(jìn)行建模,然后再由此獲得P(Y|X) = P(X,Y)/P(X)
貝葉斯學(xué)派的思想:
貝葉斯學(xué)派的思想可以概括為先驗(yàn)概率+數(shù)據(jù)=后驗(yàn)概率。也就是說(shuō)我們?cè)趯?shí)際問(wèn)題中需要得到的后驗(yàn)概率,可以通過(guò)先驗(yàn)概率和數(shù)據(jù)一起綜合得到。數(shù)據(jù)大家好理解,被頻率學(xué)派攻擊的是先驗(yàn)概率,一般來(lái)說(shuō)先驗(yàn)概率就是我們對(duì)于數(shù)據(jù)所在領(lǐng)域的歷史經(jīng)驗(yàn),但是這個(gè)經(jīng)驗(yàn)常常難以量化或者模型化,于是貝葉斯學(xué)派大膽的假設(shè)先驗(yàn)分布的模型,比如正態(tài)分布,beta分布等。這個(gè)假設(shè)一般沒(méi)有特定的依據(jù),因此一直被頻率學(xué)派認(rèn)為很荒謬。雖然難以從嚴(yán)密的數(shù)學(xué)邏輯里推出貝葉斯學(xué)派的邏輯,但是在很多實(shí)際應(yīng)用中,貝葉斯理論很好用,比如垃圾郵件分類(lèi),文本分類(lèi)
如何對(duì)P(X,Y)進(jìn)行建模?
假如我們的分類(lèi)模型樣本是:
(x(1)1,x(1)2,...x(1)n,y1), (x(2)1,x(2)2,...x(2)n,y2),...(x(m)1,x(m)2, ..., x(m)n,ym)
則
P(X, Y) = P(Y) * P( X = (x1, x2, ..., xn) | Y )
其中
P( X = (x1, x2, ..., xn) | Y ) = P( x1 | Y) * P( x2 | Y, x1) * ... P( xn | Y, x1, ... , xn-1)
這是一個(gè)超級(jí)復(fù)雜的有n個(gè)維度的條件分布,很難求出
樸素貝葉斯模型在這里做了一個(gè)大膽的假設(shè),即X的n個(gè)維度之間相互獨(dú)立,這樣就可以得出:
P( X = (x1, x2, ..., xn) | Y ) = P( x1 | Y) * P( x2 | Y) * ... * P( xn | Y)
1.2. 樸素貝葉斯推斷

1.3. 樸素貝葉斯學(xué)習(xí)
需要從訓(xùn)練樣本中學(xué)習(xí)到以下兩個(gè)參數(shù):
-
先驗(yàn)概率 P(c)
P(c)表示了樣本空間中各類(lèi)樣本所占的比例
根據(jù)大數(shù)定律,當(dāng)訓(xùn)練集中包含充足的獨(dú)立同分布樣本時(shí),P(c)可根據(jù)各類(lèi)樣本出現(xiàn)的頻率來(lái)估計(jì)
-
類(lèi)條件概率(又稱(chēng)為似然) P(xi | c)
(1)如果 xi 是離散的,可以假設(shè) xi符合多項(xiàng)式分布,這樣得到 P(xi | c) 是在樣本類(lèi)別 c 中,特征 xi 出現(xiàn)的頻率
(2)如果 xi 是連續(xù)屬性,可以假設(shè) P(xi | c) ~ N( μc,i , σ2c,i )
2. sklearn中樸素貝葉斯類(lèi)庫(kù)的簡(jiǎn)介
在scikit-learn中,一共有3個(gè)樸素貝葉斯的分類(lèi)算法類(lèi)
GaussianNB:先驗(yàn)為高斯分布的樸素貝葉斯
MultinomialNB:先驗(yàn)為多項(xiàng)式分布的樸素貝葉斯
BernoulliNB:先驗(yàn)為伯努利分布的樸素貝葉斯
這三個(gè)類(lèi)適用的分類(lèi)場(chǎng)景各不相同
一般來(lái)說(shuō),如果樣本特征的分布大部分是連續(xù)值,使用GaussianNB會(huì)比較好
如果如果樣本特征的分大部分是多元離散值,使用MultinomialNB比較合適
如果樣本特征是二元離散值或者很稀疏的多元離散值,應(yīng)該使用BernoulliNB。
2.1. GaussianNB類(lèi)
GaussianNB類(lèi)的主要參數(shù)僅有一個(gè),即先驗(yàn)概率priors
這個(gè)值默認(rèn)不給出,如果不給出此時(shí)P(Y=c)= mc / m,如果給出的話就以priors 為準(zhǔn)
在使用GaussianNB的fit方法擬合數(shù)據(jù)后,我們可以進(jìn)行預(yù)測(cè)。此時(shí)預(yù)測(cè)有三種方法
predict方法:就是我們最常用的預(yù)測(cè)方法,直接給出測(cè)試集的預(yù)測(cè)類(lèi)別輸出;
predict_proba方法:給出測(cè)試集樣本在各個(gè)類(lèi)別上預(yù)測(cè)的概率;
predict_log_proba方法:和predict_proba類(lèi)似,它會(huì)給出測(cè)試集樣本在各個(gè)類(lèi)別上預(yù)測(cè)的概率的一個(gè)對(duì)數(shù)轉(zhuǎn)化;
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
#擬合數(shù)據(jù)
clf.fit(X, Y)
#進(jìn)行預(yù)測(cè)
clf.predict([[-0.8, -1]])
2.2. MultinomialNB類(lèi)
MultinomialNB假設(shè)特征的先驗(yàn)概率為多項(xiàng)式分布,即如下式:

MultinomialNB參數(shù)比GaussianNB多,但是一共也只有僅僅3個(gè)
參數(shù)alpha:為上面的常數(shù)λ。如果你沒(méi)有特別的需要,用默認(rèn)的1即可。如果發(fā)現(xiàn)擬合的不好,需要調(diào)優(yōu)時(shí),可以選擇稍大于1或者稍小于1的數(shù)
參數(shù)fit_prior:是否要考慮先驗(yàn)概率,如果是false,則所有的樣本類(lèi)別輸出都有相同的類(lèi)別先驗(yàn)概率;否則可以自己用第三個(gè)參數(shù)class_prior輸入先驗(yàn)概率,或者不輸入第三個(gè)參數(shù)class_prior讓MultinomialNB自己從訓(xùn)練集樣本來(lái)計(jì)算先驗(yàn)概率
參數(shù)class_prior:輸入先驗(yàn)概率,若不輸入第三個(gè)參數(shù)class_prior讓MultinomialNB自己從訓(xùn)練集樣本來(lái)計(jì)算先驗(yàn)概率
2.3. BernoulliNB類(lèi)

其中,x i 只能取0或1
BernoulliNB一共有4個(gè)參數(shù),其中3個(gè)參數(shù)的名字和意義和MultinomialNB完全相同
唯一增加的一個(gè)參數(shù)是binarize,這個(gè)參數(shù)主要是用來(lái)幫BernoulliNB處理二項(xiàng)分布的。如果不輸入,則BernoulliNB認(rèn)為每個(gè)數(shù)據(jù)特征都已經(jīng)是二元的。否則的話,小于binarize的會(huì)歸為一類(lèi),大于binarize的會(huì)歸為另外一類(lèi)
參考資料:
(1) 周志華《機(jī)器學(xué)習(xí)》


