趣味案例理解朴素貝葉斯


機器學習(10)之趣味案例理解朴素貝葉斯

轉載:https://mp.weixin.qq.com/s/s0v_afLVqtJhZyn3qHlseQ

01

病人分類的例子

讓我從一個例子開始講起,你會看到貝葉斯分類器很好懂,一點都不難。某個醫院早上收了六個門診病人,如下表。
症狀 職業 疾病
打噴嚏 護士 感冒
打噴嚏 農夫 過敏
頭疼 建築工人 腦震盪
頭疼 建築工人 感冒
打噴嚏 教師 感冒
頭疼 教師 腦震盪

現在又來了第七個病人,是一個打噴嚏的建築工人。請問他患上感冒的概率有多大? 根據貝葉斯定理:

P(A|B) = P(B|A) P(A) / P(B)
可得:
P(感冒|打噴嚏x建築工人) 
    = P(打噴嚏x建築工人|感冒) x P(感冒) 
    / P(打噴嚏x建築工人)

假定"打噴嚏"和"建築工人"這兩個特征是獨立的,因此,上面的等式就變成了

P(感冒|打噴嚏x建築工人) 
    = P(打噴嚏|感冒) x P(建築工人|感冒) x P(感冒)
    / P(打噴嚏) x P(建築工人)

這是可以計算的。

P(感冒|打噴嚏x建築工人) 
    = 0.66 x 0.33 x 0.5 / 0.5 x 0.33 
    = 0.66
因此,這個打噴嚏的建築工人,有66%的概率是得了感冒。同理,可以計算這個病人患上過敏或腦震盪的概率。比較這幾個概率,就可以知道他最可能得什么病。
這就是貝葉斯分類器的基本方法:在統計資料的基礎上,依據某些特征,計算各個類別的概率,從而實現分類。

02

朴素貝葉斯分類器的公式

假設某個體有n項特征(Feature),分別為F1、F2、...、Fn。現有m個類別(Category),分別為C1、C2、...、Cm。貝葉斯分類器就是計算出概率最大的那個分類,也就是求下面這個算式的最大值:

P(C|F1F2...Fn) 
  = P(F1F2...Fn|C)P(C) / P(F1F2...Fn)
由於 P(F1F2...Fn) 對於所有的類別都是相同的,可以省略,問題就變成了求
   P(F1F2...Fn|C)P(C)

的最大值。

朴素貝葉斯分類器則是更進一步,假設所有特征都彼此獨立,因此
P(F1F2...Fn|C)P(C) 
  = P(F1|C)P(F2|C) ... P(Fn|C)P(C)

上式等號右邊的每一項,都可以從統計資料中得到,由此就可以計算出每個類別對應的概率,從而找出最大概率的那個類。

雖然"所有特征彼此獨立"這個假設,在現實中不太可能成立,但是它可以大大簡化計算,而且有研究表明對分類結果的准確性影響不大。


下面再通過兩個例子,來看如何使用朴素貝葉斯分類器。


 

03

賬號分類

根據某社區網站的抽樣統計,該站10000個賬號中有89%為真實賬號(設為C0),11%為虛假賬號(設為C1)。接下來,就要用統計資料判斷一個賬號的真實性。

 C0 = 0.89
 C1 = 0.11

假定某一個賬號有以下三個特征

F1: 日志數量/注冊天數 
F2: 好友數量/注冊天數 
F3: 是否使用真實頭像(真實頭像為1,非真實頭像為0)
F1 = 0.1 
F2 = 0.2 
F3 = 0

請問該賬號是真實賬號還是虛假賬號?方法是使用朴素貝葉斯分類器,計算下面這個計算式的值。

P(F1|C)P(F2|C)P(F3|C)P(C)

雖然上面這些值可以從統計資料得到,但是這里有一個問題:F1和F2是連續變量,不適宜按照某個特定值計算概率。一個技巧是將連續值變為離散值,計算區間的概率。比如將F1分解成[0, 0.05]、(0.05, 0.2)、[0.2, +∞]三個區間,然后計算每個區間的概率。在我們這個例子中,F1等於0.1,落在第二個區間,所以計算的時候,就使用第二個區間的發生概率。

根據統計資料,可得:

P(F1|C0) = 0.5, P(F1|C1) = 0.1 
P(F2|C0) = 0.7, P(F2|C1) = 0.2 
P(F3|C0) = 0.2, P(F3|C1) = 0.9
因此
P(F1|C0) P(F2|C0) P(F3|C0) P(C0) 
   = 0.5 x 0.7 x 0.2 x 0.89 
   = 0.0623
P(F1|C1) P(F2|C1) P(F3|C1) P(C1) 
   = 0.1 x 0.2 x 0.9 x 0.11 
   = 0.00198

可以看到,雖然這個用戶沒有使用真實頭像,但是他是真實賬號的概率,比虛假賬號高出30多倍,因此判斷這個賬號為真。

04

性別分類

下面是一組人類身體特征的統計資料。

性別 身高(英尺) 體重(磅) 腳掌(英寸)
6 180 12
5.92 190 11
5.58 170 12
5.92 165 10
5 100 6
5.5 150 8
5.42 130 7
mv 5.75 150.9 9
已知某人身高6英尺、體重130磅,腳掌8英寸,請問該人是男是女?根據朴素貝葉斯分類器,計算下面這個式子的值。

 

P(身高|性別) x P(體重|性別) x P(腳掌|性別) x P(性別)

這里的困難在於,由於身高、體重、腳掌都是連續變量,不能采用離散變量的方法計算概率。而且由於樣本太少,所以也無法分成區間計算。怎么辦?這時,可以假設男性和女性的身高、體重、腳掌都是正態分布,通過樣本計算出均值和方差,也就是得到正態分布的密度函數。有了密度函數,就可以把值代入,算出某一點的密度函數的值。比如,男性的身高是均值5.855、方差0.035的正態分布。所以,男性的身

高為6英尺的概率的相對值等於1.5789(大於1並沒有關系,因為這里是密度函數的值,只用來反映各個值的相對可能性)。

有了這些數據以后,就可以計算性別的分類了。

 

P(身高=6|男) x P(體重=130|男) x P(腳掌=8|男) x P(男) 
    = 6.1984 x e-9
P(身高=6|女) x P(體重=130|女) x P(腳掌=8|女) x P(女) 
    = 5.3778 x e-4
可以看到,女性的概率比男性要高出將近10000倍,所以判斷該人為女性。


免責聲明!

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



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