朴素貝葉斯詳解


朴素貝葉斯詳解

此博客參考借鑒算法學習者的blog,鏈接地址如下:https://blog.csdn.net/AMDS123/article/details/70173402#reply%23reply

貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。而朴素貝葉斯分類是貝葉斯分類中最簡單,也是常見的一種分類方法。這篇文章我們從一個例子入手,詳細的分析整個朴素貝葉斯的計算流程,以及如何完成分類的。

朴素貝葉斯的數學描述:

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

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

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

一、朴素貝葉斯的理論

核心數學公式:


換一種通俗的理解方式:

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

二、例題分析

1.例子的簡要說明

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

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

這里我們聯系到朴素貝葉斯公式:

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

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

2.例子的深入理解分析

上文中的好求的三個量怎樣求的?

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

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

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

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

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

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

  • 我們為什么需要假設特征之間相互獨立那?
    • 非獨立特征的關聯性,會隨着特征數量的增多,呈指數性增長 
      • 我們這么想,假如沒有這個假設,那么我們對右邊這些概率的估計其實是不可做的,這么說,我們這個例子有4個特征,其中帥包括{帥,不帥},性格包括{不好,好,爆好},身高包括{高,矮,中},上進包括{不上進,上進},那么四個特征的聯合概率分布總共是4維空間,總個數為2*3*3*2=36個

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

    • 搜索空間中同時滿足所有特征的樣本數量寥寥無幾
      • 假如我們沒有假設特征之間相互獨立,那么我們統計的時候,就需要在整個特征空間中去找,比如統計p(不帥、性格不好、身高矮、不上進|嫁),

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

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

3.拆成分開連乘形式

上面的公式整理:

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

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(不嫁)=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)

很顯然p(不嫁|不帥、性格不好、身高矮、不上進) = (1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2) = p(嫁|不帥、性格不好、身高矮、不上進) 

 

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

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

4、朴素貝葉斯分類的優缺點

優點

(1) 算法邏輯簡單,易於實現(算法思路很簡單,只要使用貝葉斯公式轉化醫學即可!)

(2)分類過程中時空開銷小(假設特征相互獨立,只會涉及到二維存儲)

缺點:

(1)理論上,朴素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為朴素貝葉斯模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。

(2)而在屬性相關性較小時,朴素貝葉斯性能最為良好。對於這一點,有半朴素貝葉斯之類的算法通過考慮部分關聯性適度改進。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM