樸素貝葉斯分類算法

樸素貝葉斯分類算法


貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理爲基礎,故統稱爲貝葉斯分類。而樸素樸素貝葉斯分類是貝葉斯分類中最簡單,也是常見的一種分類方法。這篇文章我儘可能用直白的話語總結一下我們學習會上講到的樸素貝葉斯分類算法,希望有利於他人理解。


1  分類問題綜述


 對於分類問題,其實誰都不會陌生,日常生活中我們每天都進行着分類過程。例如,當你看到一個人,你的腦子下意識判斷他是學生還是社會上的人;你可能經常會走在路上對身旁的朋友說“這個人一看就很有錢”之類的話,其實這就是一種分類操作。


既然是貝葉斯分類算法,那麼分類的數學描述又是什麼呢?


從數學角度來說,分類問題可做如下定義:已知集合,確定映射規則y = f(x),使得任意有且僅有一個,使得成立


其中C叫做類別集合,其中每一個元素是一個類別,而I叫做項集合(特徵集合),其中每一個元素是一個待分類項,f叫做分類器。分類算法的任務就是構造分類器f。


分類算法的內容是要求給定特徵,讓我們得出類別,這也是所有分類問題的關鍵。那麼如何由指定特徵,得到我們最終的類別,也是我們下面要講的,每一個不同的分類算法,對應着不同的核心思想。


2  樸素貝葉斯分類


那麼既然是樸素貝葉斯分類算法,它的核心算法又是什麼呢?

是下面這個貝葉斯公式:




換個表達形式就會明朗很多,如下:




我們最終求的p(類別|特徵)即可!就相當於完成了我們的任務。


3  例題分析


下面我先給出例子問題。

例1.如下表所示,訓練數據學習一個樸素貝葉斯分類器並確定x=(2,S)T的類標記y。表中x1、x2爲特徵,取值的集合分別爲X1={1,2,3},X2={S,M,L},類標記Y={1,-1}


根據貝葉斯算法得到如下概率:

P(Y=1)=9/15,P(Y=-1)=6/15

P(X1=1|Y=1)=2/9,P(X1=2|Y=1)=3/9,P(X1=3|Y=1)=4/9

P(X2=S|Y=1)=1/9,P(X2=M|Y=1)=4/9,P(X2=L|Y=1)=4/9

P(X1=1|Y=-1)=3/6,P(X1=2|Y=-1)=2/6,P(X1=3|Y=-1)=1/6

P(X2=S|Y=-1)=3/6,P(X2=M|Y=-1)=2/6,P((X2=L|Y=-1)=1/6

所以對於給定的x=(2,S)T計算:

P(Y=1)P(X1=2|Y=1)P(X2=S|Y=1)=(9/15)(3/9)(1/9)=1/45

P(Y=-1)P(X1=2|Y=-1)P(X2=S|Y=-1)=(6/15)(2/6)(1/6)=1/15

所以分類結果爲y=-1


拉普拉斯平滑(Laplace smoothing):由於概率計算中間可能會出現所要估計概率值爲0的情況,進而使得後驗概率的計算結果受到影響,使分類結果產生偏差,所以會採用Laplace校準

如此以來,對於上面的問題,按照拉普拉斯平滑後估計概率爲:(入=1)

P(Y=1)=10/17,P(Y=-1)=7/17

P(X1=1|Y=1)=3/12,P(X1=2|Y=1)=4/12,P(X1=3|Y=1)=5/12

P(X2=S|Y=1)=2/12,P(X2=M|Y=1)=5/12,P(X2=L|Y=1)=5/12

P(X1=1|Y=-1)=4/9,P(X1=2|Y=-1)=3/9,P(X1=3|Y=-1)=2/9

P(X2=S|Y=-1)=4/9,P(X2=M|Y=-1)=3/9,P((X2=L|Y=-1)=2/9

所以對於給定的x=(2,S)T計算:

P(Y=1)P(X1=2|Y=1)P(X2=S|Y=1)=(10/17)(4/12)(2/12)=0.0327

P(Y=-1)P(X1=2|Y=-1)P(X2=S|Y=-1)=(7/17)(3/9)(4/9)=0.0610

所以分類結果爲y=-1

例2.給定數據如下:




現在給我們的問題是,如果一對男女朋友,男生想女生求婚,男生的四個特點分別是不帥,性格不好,身高矮,不上進,請你判斷一下女生是還是不嫁

這是一個典型的分類問題,轉爲數學問題就是比較p(嫁|(不帥、性格不好、身高矮、不上進))與p(不嫁|(不帥、性格不好、身高矮、不上進))的概率誰的概率大,我就能給出嫁或者不嫁的答案!

這裏我們聯繫到樸素貝葉斯公式:



我們需要求p(嫁|(不帥、性格不好、身高矮、不上進),這是我們不知道的,但是通過樸素貝葉斯公式可以轉化爲好求的三個量.


p(不帥、性格不好、身高矮、不上進|嫁)、p(不帥、性格不好、身高矮、不上進)、p(嫁)(至於爲什麼能求,後面會講,那麼就太好了,將待求的量轉化爲其它可求的值,這就相當於解決了我們的問題!


樸素貝葉斯算法的樸素一詞解釋


那麼這三個量是如何求得?

是根據已知訓練數據統計得來,下面詳細給出該例子的求解過程。

回憶一下我們要求的公式如下:



那麼我只要求得p(不帥、性格不好、身高矮、不上進|嫁)、p(不帥、性格不好、身高矮、不上進)、p(嫁)即可,好的,下面我分別求出這幾個概率,最後一比,就得到最終結果。

p(不帥、性格不好、身高矮、不上進|嫁) = p(不帥|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上進|嫁),那麼我就要分別統計後面幾個概率,也就得到了左邊的概率!

等等,爲什麼這個成立呢?學過概率論的同學可能有感覺了,這個等式成立的條件需要特徵之間相互獨立吧!

對的!這也就是爲什麼樸素貝葉斯分類有樸素一詞的來源,樸素貝葉斯算法是假設各個特徵之間相互獨立,那麼這個等式就成立了!

但是爲什麼需要假設特徵之間相互獨立呢?

1、我們這麼想,假如沒有這個假設,那麼我們對右邊這些概率的估計其實是不可做的,這麼說,我們這個例子有4個特徵,其中帥包括{帥,不帥},性格包括{不好,好,爆好},身高包括{高,矮,中},上進包括{不上進,上進},那麼四個特徵的聯合概率分佈總共是4維空間,總個數爲2*3*3*2=36個。

36個,計算機掃描統計還可以,但是現實生活中,往往有非常多的特徵,每一個特徵的取值也是非常之多,那麼通過統計來估計後面概率的值,變得幾乎不可做,這也是爲什麼需要假設特徵之間獨立的原因。

2、假如我們沒有假設特徵之間相互獨立,那麼我們統計的時候,就需要在整個特徵空間中去找,比如統計p(不帥、性格不好、身高矮、不上進|嫁),

我們就需要在嫁的條件下,去找四種特徵全滿足分別是不帥,性格不好,身高矮,不上進的人的個數,這樣的話,由於數據的稀疏性,很容易統計到0的情況。 這樣是不合適的。

根據上面倆個原因,樸素貝葉斯法對條件概率分佈做了條件獨立性的假設,由於這是一個較強的假設,樸素貝葉斯也由此得名!這一假設使得樸素貝葉斯法變得簡單,但有時會犧牲一定的分類準確率。

好的,上面我解釋了爲什麼可以拆成分開連乘形式。那麼下面我們就開始求解!

我們將上面公式整理一下如下:




下面我將一個一個的進行統計計算(在數據量很大的時候,根據中心極限定理,頻率是等於概率的,這裏只是一個例子,所以我就進行統計即可)。

p(嫁)=?

首先我們整理訓練數據中,嫁的樣本數如下:



則 p(嫁) = 6/12(總樣本數) = 1/2

p(不帥|嫁)=?統計滿足樣本數如下:


則p(不帥|嫁) = 3/6 = 1/2 在嫁的條件下,看不帥有多少

p(性格不好|嫁)= ?統計滿足樣本數如下:



則p(性格不好|嫁)= 1/6

p(矮|嫁) = ?統計滿足樣本數如下:



則p(矮|嫁) = 1/6

p(不上進|嫁) = ?統計滿足樣本數如下:



則p(不上進|嫁) = 1/6

下面開始求分母,p(不帥),p(性格不好),p(矮),p(不上進)

統計樣本如下:



不帥統計如上紅色所示,佔4個,那麼p(不帥) = 4/12 = 1/3




性格不好統計如上紅色所示,佔4個,那麼p(性格不好) = 4/12 = 1/3




身高矮統計如上紅色所示,佔7個,那麼p(身高矮) = 7/12




不上進統計如上紅色所示,佔4個,那麼p(不上進) = 4/12 = 1/3

到這裏,要求p(不帥、性格不好、身高矮、不上進|嫁)的所需項全部求出來了,下面我帶入進去即可,



= (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)


下面我們根據同樣的方法來求p(不嫁|不帥,性格不好,身高矮,不上進),完全一樣的做法,爲了方便理解,我這裏也走一遍幫助理解。首先公式如下:




下面我也一個一個來進行統計計算,這裏與上面公式中,分母是一樣的,於是我們分母不需要重新統計計算!

p(不嫁)=?根據統計計算如下(紅色爲滿足條件):




則p(不嫁)=6/12 = 1/2

p(不帥|不嫁) = ?統計滿足條件的樣本如下(紅色爲滿足條件):




則p(不帥|不嫁) = 1/6

p(性格不好|不嫁) = ?據統計計算如下(紅色爲滿足條件):



則p(性格不好|不嫁) =3/6 = 1/2

p(矮|不嫁) = ?據統計計算如下(紅色爲滿足條件):



則p(矮|不嫁) = 6/6 = 1


p(不上進|不嫁) = ?據統計計算如下(紅色爲滿足條件):


則p(不上進|不嫁) = 3/6 = 1/2


那麼根據公式:


p (不嫁|不帥、性格不好、身高矮、不上進) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)

很顯然(1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2)

於是有p (不嫁|不帥、性格不好、身高矮、不上進)>p (嫁|不帥、性格不好、身高矮、不上進)

所以我們根據樸素貝葉斯算法可以給這個女生答案,是不嫁!!!!


貝葉斯分類算法的優缺點

優點:
1、樸素貝葉斯模型發源於古典數學理論,有着堅實的數學基礎,以及穩定的分類效率;
2、NBC模型所需估計的參數很少,對缺失數據不太敏感,算法也比較簡單,易於實現

缺點:
1、理論上,NBC模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因爲NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的(可以考慮用聚類算法先將相關性較大的屬性聚類),這給NBC模型的正確分類帶來了一定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最爲良好;
2、需要知道先驗概率;
3、分類決策存在錯誤率。



發佈了301 篇原創文章 · 獲贊 365 · 訪問量 159萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章