樸素貝葉斯分類算法

轉載地址:http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html

1、準備知識

 貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理爲基礎,故統稱爲貝葉斯分類。

這個定理解決了現實生活裏經常遇到的問題:已知某條件概率,如何得到兩個事件交換後的概率,也就是在已知P(A|B)的情況下如何求得P(B|A)。這裏先解釋什麼是條件概率:

 表示事件B已經發生的前提下,事件A發生的概率,叫做事件B發生下事件A的條件概率。其基本求解公式爲:

下面不加證明地直接給出貝葉斯定理:

      

2、樸素貝葉斯分類

2.1、樸素貝葉斯分類原理

 樸素貝葉斯分類是一種十分簡單的分類算法,叫它樸素貝葉斯分類是因爲這種方法的思想的很樸素,樸素貝葉斯的思想基礎是這樣的:對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認爲此待分類項屬於哪個類別。

樸素貝葉斯分類的正式定義如下:

1、設爲一個待分類項,而每個a爲x的一個特徵屬性。

2、有類別集合

3、計算

4、如果,則

那麼現在的關鍵就是如何計算第3步中的各個條件概率。我們可以這麼做:

1、找到一個已知分類的待分類項集合,這個集合叫做訓練樣本集。

2、統計得到在各類別下各個特徵屬性的條件概率估計。即

3、如果各個特徵屬性是條件獨立的,則根據貝葉斯定理有如下推導:

      

因爲分母對於所有類別爲常數,因爲我們只要將分子最大化皆可。又因爲各特徵屬性是條件獨立的,所以有:

      

2.2、樸素貝葉斯分類流程圖 

根據上述分析,樸素貝葉斯分類的流程可以由下圖表示(暫時不考慮驗證):

整個樸素貝葉斯分類分爲三個階段:

第一階段——準備工作階段,這個階段的任務是爲樸素貝葉斯分類做必要的準備,主要工作是根據具體情況確定特徵屬性,並對每個特徵屬性進行適當劃分,然後由人工對一部分待分類項進行分類,形成訓練樣本集合。這一階段的輸入是所有待分類數據,輸出是特徵屬性和訓練樣本。這一階段是整個樸素貝葉斯分類中唯一需要人工完成的階段,其質量對整個過程將有重要影響,分類器的質量很大程度上由特徵屬性、特徵屬性劃分及訓練樣本質量決定。

第二階段——分類器訓練階段,這個階段的任務就是生成分類器,主要工作是計算每個類別在訓練樣本中的出現頻率及每個特徵屬性劃分對每個類別的條件概率估計,並將結果記錄。其輸入是特徵屬性和訓練樣本,輸出是分類器。這一階段是機械性階段,根據前面討論的公式可以由程序自動計算完成。

第三階段——應用階段。這個階段的任務是使用分類器對待分類項進行分類,其輸入是分類器和待分類項,輸出是待分類項與類別的映射關係。這一階段也是機械性階段,由程序完成。

3、應用實例— —檢測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、計算每個類別條件下各個特徵屬性劃分的頻率

a1特徵:

                                                              

                                                               

a2特徵:

                                                                     

                                                                     

a3特徵:

                                                                                                  

                                           

      5、使用分類器進行鑑別

      下面我們使用上面訓練得到的分類器鑑別一個賬號,這個賬號使用非真實頭像,日誌數量與註冊天數的比率爲0.1,好友數與註冊天數的比率爲0.2。

      

      

      可以看到,雖然這個用戶沒有使用真實頭像,但是通過分類器的鑑別,更傾向於將此賬號歸入真實賬號類別。這個例子也展示了當特徵屬性充分多時,樸素貝葉斯分類對個別屬性的抗干擾性。

4、代碼實現

後續補充。。。。


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