1. 程式人生 > >機器學習讀書筆記(四)樸素貝葉斯基礎篇之網站賬號分類

機器學習讀書筆記(四)樸素貝葉斯基礎篇之網站賬號分類

pan 技巧 nbsp 增強 就是 使用 分類問題 預測 結果

一、條件概率

在學習計算p1和p2概率之前,我們需要了解什麽是條件概率,就是指在事件B發生的情況下,事件A發生的概率,用P(A|B)來表示。

技術分享圖片

根據文氏圖,可以很清楚地看到在事件B發生的情況下,事件A發生的概率就是P(A∩B)除以P(B)。

技術分享圖片

這就是條件概率的計算公式。

二、貝葉斯推斷

對條件概率公式進行變形,可以得到如下形式:

技術分享圖片

我們把P(A)稱為”先驗概率”,即在B事件發生之前,我們對A事件概率的一個判斷。

P(A|B)稱為”後驗概率”,即在B事件發生之後,我們對A事件概率的重新評估。

P(B|A)/P(B)稱為”可能性函數”,這是一個調整因子,使得預估概率更接近真實概率。

所以,條件概率可以理解成下面的式子:

後驗概率 = 先驗概率 x 調整因子

這就是貝葉斯推斷的含義。我們先預估一個”先驗概率”,然後加入實驗結果,看這個實驗到底是增強還是削弱了”先驗概率”,由此得到更接近事實的”後驗概率”。

三、樸素貝葉斯

理解了貝葉斯推斷,那麽讓我們繼續看看樸素貝葉斯。貝葉斯和樸素貝葉斯的概念是不同的,區別就在於“樸素”二字,樸素貝葉斯對條件個概率分布做了條件獨立性的假設。

讓我們從一個例子開始講起:

某個醫院早上來了六個門診的病人,他們的情況如下表所示:

技術分享圖片

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

根據貝葉斯定理:

技術分享圖片

上面等式變成:

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

可以計算出:

P(感冒|打噴嚏X建築工人)=0.66 X0.33 X 0.5 / (0.5X 0.33)=0.66

因此,這個打噴嚏的建築工人,有66%的概率是得了感冒。同理,可以計算這個病人患上過敏或腦震蕩的概率。比較這幾個概率,就可以知道他最可能得什麽病。

這就是貝葉斯分類器的基本方法:在統計資料的基礎上,依據某些特征,計算各個類別的概率,從而實現分類。

四、網站賬號分類

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

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

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多倍,因此判斷這個賬號為真。

五、樸素貝葉斯的優缺點

優點

生成式模型,通過計算概率來進行分類,可以用來處理多分類問題。

對缺失數據不太敏感,算法也比較簡單,高效且易於實現,常用於文本分類。

缺點

由於樸素貝葉斯的“樸素”特點,所以會帶來一些準確率上的損失。

需要知道先驗概率,且先驗概率很多時候取決於假設,假設的模型可以有很多種,因此在某些時候會由於假設的先驗模型的原因導致預測效果不佳。

機器學習讀書筆記(四)樸素貝葉斯基礎篇之網站賬號分類