朴素貝葉斯之所以叫朴素,是因為它假定了所有的屬性之間是獨立的。下面我們就分別說說,屬性值是離散和連續值的朴素貝葉斯對問題的求解方法吧。
1 貝葉斯定理
貝葉斯定理最大的用處是在很多情況下,我們需要求的概率是后驗概率P(B|A),很難直接求解,但是他的先驗概率P(A|B)卻很容易求解,這時候貝葉斯定理就在理論上支持了我們的方法。
貝葉斯定理:
朴素貝葉斯分類的步驟,如下:
1、計算先驗概率P(Yi),其中類別集合。
2、計算條件先驗概率。
3、利用凸優化問題求解最終類別,,則
。
下面詳細說說,步驟3的條件概率求解:
1)、找到一個已知分類的待分類項集合,這個集合叫做訓練樣本集。
2)、統計得到在各類別下各個特征屬性的條件概率估計。即。
3)、如果各個特征屬性是條件獨立的,則根據貝葉斯定理有如下推導:
因為分母對於所有類別為常數,因為我們只要將分子最大化皆可。又因為各特征屬性是條件獨立的,所以有:
3 先驗條件概率P(a|y)及Laplace校准
1)當時離散值的時候,很容易求解,及頻率比就是該先驗條件概率;
2)特別說明下,當特征屬性為連續值時,通常假定其值服從高斯分布(也稱正態分布)。即:
而
因此只要計算出訓練樣本中各個類別中此特征項划分的各均值和標准差;
下面介紹一個連續屬性值的例子,截圖來自國外書刊,見參考文獻【1】。
題目:
解:
另一個需要討論的問題就是當P(a|y)=0怎么辦,當某個類別下某個特征項划分沒有出現時,就是產生這種現象,這會令分類器質量大大降低。為了解決這個 問題,我們引入Laplace校准,它的思想非常簡單,就是對沒類別下所有划分的計數加1,這樣如果訓練樣本集數量充分大時,並不會對結果產生影響,並且 解決了上述頻率為0的尷尬局面。
4 朴素貝葉斯分類實例:檢測SNS社區中不真實賬號
下面討論一個使用朴素貝葉斯分類解決實際問題的例子,為了簡單起見,對例子中的數據做了適當的簡化。
這個問題是這樣的,對於SNS社區來說,不真實賬號(使用虛假身份或用戶的小號)是一個普遍存在的問題,作為SNS社區的運營商,希望可以檢測出這些不真實賬號,從而在一些運營分析報告中避免這些賬號的干擾,亦可以加強對SNS社區的了解與監管。
如果通過純人工檢測,需要耗費大量的人力,效率也十分低下,如能引入自動檢測機制,必將大大提升工作效率。這個問題說白了,就是要將社區中所有賬號在真實賬號和不真實賬號兩個類別上進行分類,下面我們一步一步實現這個過程。
首先設C=0表示真實賬號,C=1表示不真實賬號。
1、確定特征屬性及划分
這一步要找出可以幫助我們區分真實賬號與不真實賬號的特征屬性,在實際應用中,特征屬性的數量是很多的,划分也會比較細致,但這里為了簡單起見,我們用少量的特征屬性以及較粗的划分,並對數據做了修改。
我們選擇三個特征屬性:a1:日志數量/注冊天數,a2:好友數量/注冊天數,a3:是否使用真實頭像。在SNS社區中這三項都是可以直接從數據庫里得到或計算出來的。
下面給出划分:a1:{a<=0.05, 0.05<a<0.2, a>=0.2},a1:{a<=0.1, 0.1<a<0.8, a>=0.8},a3:{a=0(不是),a=1(是)}。
2、獲取訓練樣本
這里使用運維人員曾經人工檢測過的1萬個賬號作為訓練樣本。
3、計算訓練樣本中每個類別的頻率
用訓練樣本中真實賬號和不真實賬號數量分別除以一萬,得到:
4、計算每個類別條件下各個特征屬性划分的頻率
5、使用分類器進行鑒別
下面我們使用上面訓練得到的分類器鑒別一個賬號,這個賬號使用非真實頭像,日志數量與注冊天數的比率為0.1,好友數與注冊天數的比率為0.2。
可以看到,雖然這個用戶沒有使用真實頭像,但是通過分類器的鑒別,更傾向於將此賬號歸入真實賬號類別。這個例子也展示了當特征屬性充分多時,朴素貝葉斯分類對個別屬性的抗干擾性。