【機(jī)器學(xué)習(xí)實(shí)戰(zhàn)(四)】sklearn包中樸素貝葉斯庫(kù)的使用

目錄

    1. 樸素貝葉斯相關(guān)知識(shí)點(diǎn)回顧
    • 1.1. 什么是樸素貝葉斯分類(lèi)器
    • 1.2. 樸素貝葉斯推斷
    • 1.3. 樸素貝葉斯學(xué)習(xí)
    1. 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í)》

(2) 劉建平Pinard《樸素貝葉斯算法原理小結(jié)》

(3) 劉建平Pinard《scikit-learn 樸素貝葉斯類(lèi)庫(kù)使用小結(jié)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容