1. 程式人生 > >理解貝葉斯分類器原理及關係

理解貝葉斯分類器原理及關係

作者:vicky_siyu 致謝:小龍快跑jly, 巧兒、克力,Esther_or so,雨佳小和尚

本文是對貝葉斯分類器的初步理解,通過案例解釋貝葉斯並對貝葉斯分類器的關係進一步分析和理解。本文只是在學習後進行了總結並加入了自己的理解,如有不妥之處,還望海涵,也希望大家多多指教,一起學習!

一、 貝葉斯三連問

貝葉斯分類器是什麼?有什麼用?怎麼用?

為了更好地理解這個問題,我們先看一個案例:
案例(來源於西瓜書):[1]
在這裡插入圖片描述

判斷一個具有特徵:{色澤=青綠,根蒂=蜷縮,敲聲=濁響,紋理=清晰,臍部=凹陷,觸感=硬滑,密度=0.697,含糖率=0.460}的測試樣例瓜是否為好瓜?

這個問題其實就是一個分類問題,而且是個二分類問題,是不是好瓜?分類的原理很簡單,就是判斷這個樣例屬於好瓜的概率和屬於壞瓜的概率哪個更大,即後驗概率P(c│x)哪個更大。

常見的分類方法有決策樹、人工神經網路、支援向量機、貝葉斯分類器等。
(PS:各種分類方法的優缺點可參考[2])
這些分類方法主要分為兩種模型,見下表: [3]

分類模型 判別式模型 生成式模型
分類原理 直接對後驗概率P(c│x)進行建模 對聯合概率分佈p(x,c)建模,之後由條件概率公式得出後驗概率
相關演算法 決策樹、人工神經網路、支援向量機 貝葉斯分類器

簡單說,貝葉斯分類器就是一種分類的方法,而且是一種基於貝葉斯原理,對聯合概率分佈p(x,c)建模,之後由條件概率公式得出後驗概率的生成式模型的方法。(注:P(x,c)= P(x│c) P( c ))

那怎麼用呢?
首先,我們複習一下貝葉斯定理
貝葉斯公式

P(c│x) P(x│c) P(c ) P(x)
屬性x屬於類別c的概率 類別c中x屬性出現的概率 某個類別發生的概率 屬性x出現的概率
後驗 似然 先驗 證據因子

Ps. 似然函式 L(x;θ)在形式上,其實就是樣本的聯合密度。
把x1,x2,x3,…,xn看作常數,而把待定引數θ0,θ2,…,θn看作 L 的自變數。對連續型總體X 和離散型隨機變數X,樣本的似然函式分別是概率密度和分佈率的連乘形式。
(最大似然估計可參考 https://blog.csdn.net/zengxiantao1994/article/details/72787849)

貝葉斯分類器目的就是分類,即判斷含有屬性x的樣本屬於哪一類,也就是判斷後驗P(c│x)在不同的類別時概率的大小,後驗概率越大說明所屬的類別越有可能是正確的類別。因此,我們的目標就轉化為了最大化後驗概率,然後將後驗概率最大的類別判定為該樣本所屬的類別。
在這裡插入圖片描述

對於同一個樣本而言P(x)都是一樣的,對分類結果沒有什麼影響,為了提高執行效率,我們在計算時可以不考慮證據因子P(x)。最大化後驗概率便轉化為了最大化似然與先驗的乘積。

在這裡插入圖片描述
在這裡插入圖片描述
接下來的問題就是分別計算似然與先驗,然後算一下乘積。
案例中的先驗比較好計算,先驗:P(好瓜=是)=8/17≈0.471 P(好瓜=否)=9/17≈0.529。
但是似然就有點麻煩了,樣本有8個特徵屬性,但是這8個特徵屬性都要同時滿足似然才不為0,在現實中其他案例裡特徵屬性更多,維度更高,如果樣本量還很少,計算似然就更麻煩了。所以為了簡化計算,往往採用樸素貝葉斯分類器(Naive Bayes Classifiers, NBC)的方法,即假設各屬性之間相互獨立。
在這裡插入圖片描述
接下來,就讓我們用最簡單的樸素貝葉斯分類器愉快地計算案例中的測試樣本屬於哪一類吧~
(ps.離散的屬性通過統計得出概率,連續的屬性我們假設其為正態分佈計算)

在這裡插入圖片描述

最後計算先驗與類條件概率的乘積,數值大的對應的分類為分類結果:
在這裡插入圖片描述
由計算結果可知,此瓜更有可能是好瓜。

二、 貝葉斯追問

1) 樸素貝葉斯分類器(NBC)假設所有屬性相互獨立,有用嗎?合理嗎?
事實證明,在屬性的相關性不大的情況下,樸素貝葉斯分類器的效果還是不錯的,比如垃圾分類,文字分類至今還在用NBC。但是在生活中,屬性間完全獨立的假設往往很難成立,所以放寬了一點條件,提出了半樸素貝葉斯分類器。

2) 半樸素貝葉斯分類器(Semi-NBC, SNBC)是什麼意思?
NBC不是假設所有屬性都相互獨立嗎?SNBC就是允許屬性間有一定的關聯,常用的是獨依賴估計(One-Dependent Estimator,ODE)。即每個屬性在類別之外最多依賴一個父屬性pai。

3) 那怎麼判斷應該依賴哪個父屬性呢?
常用的方法有三種:SPODE,AODE 和TAN演算法
具體演算法及案例可參考另一篇文章:貝葉斯分類器演算法及案例詳解,https://blog.csdn.net/weixin_43742744/article/details/85494193

4) 如果有的依賴一個父屬性,有的依賴多個父屬性呢?
那可能需要構建貝葉斯網路了
貝葉斯網路可參考:https://blog.csdn.net/v_july_v/article/details/40984699

5) 這些方法有什麼內在聯絡嗎?
在這裡插入圖片描述
6) 這些方法各有什麼優缺點,適用於什麼場景?

樸素貝葉斯分類器(NBC) 半樸素貝葉斯分類器(SNBC) [4] 貝葉斯網路(BN)
應用場景 各屬性之間獨立性較強,依賴性較弱 NBC適用的場景, SNBC都適用,且SNBC更適用於屬性間有較強聯絡的場景 各屬性之間不確定性較大
舉例 垃圾郵件分類,文字分類 文字分類,經濟分析 故障診斷 ,金融分析

7) 想深入瞭解,這些方法能給具體的案例和演算法嗎?
請移步另一篇文章:貝葉斯分類器演算法及案例詳解, https://blog.csdn.net/weixin_43742744/article/details/85494193

參考文獻:

[1] 周志華,《機器學習》,[M],1版,北京:清華大學出版社,2016
[2] 各種分類演算法優缺點比較,[J/OL],https://blog.csdn.net/u012050154/article/details/51501151
[3] 貝葉斯分類器原理與應用,[J/OL],https://blog.csdn.net/leonliu1995/article/details/78821918
[4] 李玉傑,半樸素貝葉斯分類器研究[D].北京:中央民族大學,2017