樸素貝葉斯分類算法

樸素貝葉斯分類算法

  • 主要內容
    • 貝葉斯定理
    • 樸素貝葉斯分類算法詳解
    • 樸素貝葉斯分類算法實例講解
    • 拉普拉斯平滑

1、貝葉斯定理
  貝葉斯定理是關於隨機事件A和B的條件概率(或邊緣概率)的一則定理。已知某條件概率,如何得到兩個事件交換後的概率,也就是在已知P(A|B) 的情況下如何求得P(B|A) 。其中,P(A|B) 是在B發生的情況下A發生的可能性,計算如下:

這裏寫圖片描述

  貝葉斯定理:
這裏寫圖片描述


2、樸素貝葉斯分類算法詳解
  (1)x=(x1,x2,...xD) 表示含有D維屬性的數據對象。訓練集S 含有K 個類別,表示爲y=(y1,y2,...yK)
  (2)已知待分類數據對象x ,預測x 所屬類別,計算方式如下:

這裏寫圖片描述
所得yk 即爲x 所屬類別。上式表示,已知待分類數據對象x 的情況下,分別計算x 屬於y1y2...yK 的概率,選取其中概率的最大值,此時所對應的yk ,即爲x 所屬類別。
  (3)根據貝葉斯定理,P(yk|x) 計算方式如下:
這裏寫圖片描述
計算過程中,P(x) 對於P(yk|x) ,相當於常數。因此,若想得到P(yk|x) 最大值,只需計算P(x|yk)P(yk) 最大值。如果類別的先驗概率未知,即P(yk) 未知,則通常假定這些類別是等概率的,即P(y1)=P(y2)=...=P(yK)
  (4)假設數據對象x 的各屬性之間相互獨立,P(x|yk) 計算方式如下:
這裏寫圖片描述

  (5)P(xd|yk) 的計算方式如下:
  如果屬性Ad 是離散屬性或分類屬性。訓練集中屬於類別yk 的數據對象,在屬性Ad 下的相異屬性值共有n個;訓練集中屬於類別yk ,且在屬性Ad 下的屬性值爲xd 的數據對象共有m個。因此,P(xd|yk) 計算方式如下:
這裏寫圖片描述

  如果屬性Ad 是連續屬性。通常假設連續屬性均服從均值爲μ 、標準差爲σ 的高斯分佈, 即
這裏寫圖片描述

因此,P(xd|yk) 計算方式如下:
這裏寫圖片描述
其中,μykσyk 表示訓練集中屬於類別yk 的數據對象在屬性Ad 下的均值和標準差。
  例如,設x=(35,40000) ,其中A1A2 分別是屬性age、income。設類別屬性爲buys_computer,x 的類別屬性值爲yes,即buys_computer=yes。針對連續屬性age,假設訓練集S 中購買計算機的顧客年齡爲38±12 ,即μage=38σage=12 。將xage=35μage=38σage=12 待入至上述高斯函數中,所得結果即爲P(age=35|buys_computer=yes) 的值。


3、樸素貝葉斯分類算法實例講解
  給定訓練數據如表1,使用樸素貝葉斯分類預測未知數據對象的類標號。數據對象用屬性age、income、student、credit_rating描述。類別屬性buys_computer具有兩個不同值,即yes、no。

表1 AllElectronics 顧客數據庫標記類的訓練數據這裏寫圖片描述

  待分類數據對象x=(age=youth,income=medium,student=yes,credit_rating=fair)
  計算P(yk)
P(buys_computer=yes)=9/14=0.643
P(buys_computer=no)=5/14=0.357

  計算P(xd|yk)
P(age=youth|buys_computer=yes)=2/9=0.222
P(age=youth|buys_computer=no)=3/5=0.600
P(income=medium|buys_computer=yes)=4/9=0.444
P(income=medium|buys_computer=no)=2/5=0.400
P(student=yes|buys_computer=yes)=6/9=0.667
P(student=yes|buys_computer=no)=1/5=0.200
P(credit_rating=fair|buys_computer=yes)=6/9=0.667
P(credit_rating=fair|buys_computer=no)=2/5=0.400

  計算P(x|yk)
(1)P(x|buys_computer=yes)=P(age=youth|buys_computer=yes)×P(income=medium|buys_computer=yes)×P(student=yes|buys_computer=yes)×P(credit_rating=fair|buys_computer=yes)=0.222×0.444×0.667×0.667=0.044

同理:
P(x|buys_computer=no)=0.600×0.400×0.200×0.400=0.019

  計算P(x|yk)P(yk)
P(x|buys_computer=yes)P(buys_computer=yes)=0.044×0.643=0.028
P(x|buys_computer=no)P(buys_computer=no)=0.019×0.357=0.007

  由於0.028>0.007 ,因此,待分類數據對象x 的類別爲buys_computer=yes


4、拉普拉斯平滑
  如果待分類數據對象x=(age=youth,income=medium,student=yes,credit_rating=worse) ,而原始訓練集的屬性credit_rating中沒有worse屬性值,此時P(credit_rating=worse|buys_computer=yes)=0 ,導致P(x|buys_computer=yes)=0 。然而真實情況中,待分類數據對象x 可能有較高的概率屬於buys_computer=yes類別。
  如何解決上述問題呢?這裏介紹一種簡單的方法——拉普拉斯平滑處理,思想大致如下:待分類樣本x 的第d 個屬性特徵xd 在類別yk 中出現的概率表示爲P(xd|yk)=mn ,其中針對訓練樣本集合,n 表示類別yk 中數據對象的總個數,m 表示第d 個屬性特徵xd 在類別yk 中出現的次數。假設,拉普拉斯平滑處理參數爲λ 。經過拉普拉斯平滑處理之後,P(xd|yk)=m+λn+Rλ ,其中R 表示類別yk 中樣本第d 個屬性特徵不同取值的個數。相應的,P(yk)=nN ,經過拉普拉斯平滑處理之後,變爲P(yk)=n+λN+Kλ ,其中N 表示訓練樣本總個數,K 表示訓練樣本類別個數。我們不難發現,通過拉普拉斯平滑處理能夠有效避免概率爲零的情況。
   假定在某個訓練數據集上只有兩種類別,類別buys_computer=no包含500個對象,類別buys_computer=yes包含1000個對象。其中,當buys_computer=yes時,有0個對象income=low,990個對象income=medium,10個對象income=high。不使用拉普拉斯平滑處理,這些事件的概率分別是P(income=low|buys_computer=yes)=0P(income=medium|buys_computer=yes)=9901000P(income=high|buys_computer=yes)=101000P(buys_computer=yes)=10001500 。當使用拉普拉斯平滑處理時,假設拉普拉斯平滑處理參數爲λ=1 ,分別得到如下的概率:

P(income=low|buys_computer=yes)=11003,P(income=medium|buys_computer=yes)=9911003,P(income=high|buys_computer=yes)=111003,P(buys_computer=yes)=10011502

經過拉普拉斯平滑處理之後的概率估計與對應的之前的概率估計很接近,但有效避免了零概率值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章