貝葉斯分類算法實例--根據姓名推測男女(一)

一.從貝葉斯公式開始
貝葉斯分類其實是利用用貝葉斯公式,算出每種情況下發生的概率,再取概率較大的一個分類作爲結果。我們先來看看貝葉斯公式:

P(A|B) = P(B|A) P(A) / P(B)

其中P(A|B)是指在事件B發生的情況下事件A發生的概率。

在貝葉斯定理中,每個名詞都有約定俗成的名稱:

  • P(A|B)是已知B發生後A的條件概率,也由於得自B的取值而被稱作A的後驗概率。
  • P(A)是A的先驗概率(或邊緣概率)。之所以稱爲"先驗"是因爲它不考慮任何B方面的因素。
  • P(B|A)是已知A發生後B的條件概率,也由於得自A的取值而被稱作B的後驗概率。
  • P(B)是B的先驗概率或邊緣概率。

這裏可以用一個例子來說明這個公式。

看一個簡單的小例子來展示貝葉斯定理

病人的例子:
某個醫院早上收了八個門診病人,如下表
在這裏插入圖片描述
現在又來了第九個病人,是一個打噴嚏的建築工人。請問他患上感冒的概率有多大?

根據貝葉斯定理:

P(A|B) = P(B|A) P(A) / P(B)

可得滿足“打噴嚏”和“建築工人”兩個條件下,感冒的概率如下:

如果你對python感興趣,我這有個學習Python基地,裏面有很多學習資料,感興趣的+Q羣:688244617

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

假定"打噴嚏"和"建築工人"這兩個特徵是獨立的(即這兩個條件沒有相關性,比如不存在說他是建築工人他打噴嚏的概率比較大或者比較小這種關係),因此,上面的等式就變成了。

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

通過統計可得:

 P(感冒|打噴嚏x建築工人) 
 = (2/3) x (1/3) x (3/8) / (5/8) x (3/8) 
 = (16/45)

通過貝葉斯公式算出了滿足條件下感冒的概率,那麼現在貝葉斯分類器如何實現呢?

接上面的例子,從上面我們得出了 P(感冒|打噴嚏x建築工人) 的值,那麼我們可以再算出
P(不感冒|打噴嚏x建築工人) 的值,計算結果如下:

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

 = P(打噴嚏|不感冒) x P(建築工人|不感冒) x P(不感冒)  /  P(打噴嚏) x P(建築工人)
 = (3/5) x (2/5) x (5/8) / (5/8) x (3/8) 
 = (16/25)

OK,現在我們知道來如果新來一個打噴嚏的建築工人,他患感冒的機率是P(感冒|打噴嚏x建築工人)= (16/45)。不患感冒的機率是P(不感冒|打噴嚏x建築工人)= (16/25)。

通過對概率的比較,我們就可以將打噴嚏的建築工人分類到“不感冒”人羣中(不感冒的概率比較大)。 這就是樸素貝葉斯分類器的最簡單的應用了。當然你也看到了,貝葉斯分類器需要我們應用到統計所得的結果,這需要數據量比較大,大到能滿足大數定理(大數定理這裏就不多解釋啦,自行百度即可),以及樣本數據足夠客觀。

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