機器學習十大算法之一:樸素貝葉斯Bayes

機器學習十大算法之一:樸素貝葉斯Bayes


1 課題導入

1.1 貝葉斯公式

01-貝葉斯公式.png-8.9kB
P(AB)=P(A)+P(B)P(AB)
P(AB)=P(A|B)P(B)=P(B|A)P(A)
貝葉斯公式:

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

1.2 先驗概率、後驗概率、可能性

先驗概率:先驗概率僅僅依賴於主觀上的經驗估計,也就是事先根據已有的知識的推斷,先驗概率就是沒有經過實驗驗證的概率,根據已知進行的主觀臆測。
eg: 拋一枚硬幣,在拋之前,主觀推斷P(正面朝上) = 0.5

後驗概率: 後驗概率是指在得到“結果”的信息後重新修正的概率,如貝葉斯公式中的。是“執果尋因”問題中的”果”。先驗概率與後驗概率有不可分割的聯繫,後驗概率的計算要以先驗概率爲基礎。解釋下來就是,在已知果(B)的前提下,得到重新修正的因(A)的概率P(A|B),稱爲A的後驗概率,也即條件概率。後驗概率可以通過貝葉斯公式求解。

P(e|H) 就是似然函數,P(e)相當於是一個歸一化項,整個公式就是表達了“後驗概率正比於先驗概率乘以似然函數”。

02-先驗與後驗.png-189.5kB

1.3 概率基礎知識

1.3.1 條件概率

         是指事件A在另外一個事件B已經發生條件下的發生概率。條件概率表示爲:P(A|B),讀作“在B條件下A的概率”。
P(A|B)=P(AB)/P(B)
P(B|A)=P(AB)/P(A)
所以:P(A|B)=P(B|A)P(A)/P(B)

1.3.2 全概率公式

P(B)=i=1nP(Ai)P(B|Ai)

1.3.3 貝葉斯公式

P(Ai|B)=P(B|Ai)P(Ai)i=1nP(B|Ai)P(Ai)

1.3.4 拉普拉斯平滑

a. 拉普拉斯平滑的意義

        爲了解決零概率的問題,法國數學家拉普拉斯最早提出用加1的方法估計沒有出現過的現象的概率,所以加法平滑也叫做拉普拉斯平滑。
         假定訓練樣本很大時,每個分量x的計數加1造成的估計概率變化可以忽略不計,但可以方便有效的避免零概率問題。

b. 拉普拉斯平滑公式

         公式P(yk|x)=P(yk)P(xi|yk) ,是一個多項乘法公式,其中有一項數值爲0,則整個公式就爲0,顯然不合理,避免每一項爲零的做法就是,在分子、 分母上各加一個數值。

P(y)=(Dy+1)/(D+N)
  • 其中:分子 - 每個分類Dy 加1,爲了避免零概率的出現;
  • 分母D+N,N爲分類總數,必須爲N,這樣才能保證最後概率的總和爲1
  • 案例1:現在有3個類別,A類有3個樣本,B類有2個樣本,C類有5個樣本。根據拉普拉斯平滑公式:
    P(A)=(3+1)/(3+2+5+3)=4/13    
    P(B)=(2+1)/(3+2+5+3)=3/13    
    P(C)=(5+1)/(3+2+5+3)=6/13

P(xi|D)=(Dxi+1)/(D)+N

  • 其中:D表示樣本空間
  • xi 表示第i 個分類
  • Dxi 表示xi 類別中的樣本數

     在實際的使用中也經常使用加α(1≥α≥0)來代替簡單加1。 如果對N個計數都加上α, 這時分母也要記得加上N*α。

c. 在使用樸素貝葉斯進行多分類算法實現時,纔會需要用到拉普拉斯平滑,smooth係數:分子+α,分母+n*α

例題:

【例】發生一起汽車撞人逃跑事件,已知只有兩種顏色的車,比例爲藍色15%,綠色85%,目擊者指證是藍車,但根據現場分析,當時那種條件目擊者看正確車的顏色的可能性是80%,那麼,肇事的車是藍車的概率到底是多少()?
A.15%          B.41%          C.80%          D.83%
解:

  • 設A={目擊者看到車是藍色的}, B={車的實際顏色是藍色}
    P(A)=80%×15%+20%×85%=29%
    即: 車是藍色(15%)×目擊者看正確(80%)+車是綠色(85%)×目擊者看錯了(20%)
    P(AB)=80%×15%=12%
    即: 車是藍色(15%)×目擊者看正確(80%)
    P(B|A)=P(AB)/P(A)=12%/29%≈41%

1.5 樸素貝葉斯分類流程

         對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認爲此待分類項屬於哪個類別:

  • 1.x={a1,a2,,am} 爲待分類項,每個a爲x的一個特徵屬性;
  • 2.有類別集合C={y1,y2,,ym}
  • 3.計算P(y1|x),P(y2|x),,P(ym|x)
  • 4.如果P(yk|x)=max{P(y1|x),P(y2|x),,P(yn|x),},xyk

                                    03-貝葉斯分類基本流程.png-127.7kB

第一階段——準備階段

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

第二階段——分類器訓練階段

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

第三階段——應用階段。

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

1.6 連續變量貝葉斯計算

         下面將重點討論特徵屬性是連續值的情況:當特徵屬性爲連續值時,通常假定其值服從高斯分佈(也稱正態分佈)。即:

g(x,μ,σ)=12πσexμ22σ2

而:
P(ak|yi)=g(ak,μk,σk)

         因此只要計算出訓練樣本中各個類別中此特徵項劃分的各均值和標準差,代入上述公式即可得到需要的估計值。 均值與標準差的計算在此不再贅述。

1.7 案例:

         對於SNS社區來說, 不真實賬號(使用虛假身份或用戶的小號) 是一個普遍存在的問題,作爲SNS社區的運營商,希望可以檢測出這些不真實賬號, 從而在一些運營分析報告中避免這些賬號的干擾,亦可以加強對SNS社區的瞭解與監管。
         如果通過純人工檢測,需要耗費大量的人力,效率也十分低下,如能引入自動檢測機制,必將大大提升工作效率。這個問題說白了,就是要將社區中所有賬號在真實賬號和不真實賬號兩個類別上進行分類,下面我們一步一步實現這個過程。

  • 首先設C=0表示真實賬號, C=1表示不真實賬號。

1.7.1 確定特徵屬性及劃分

         這一步要找出可以幫助我們區分真實賬號與不真實賬號的特徵屬性,在實際應用中,特徵屬性的數量是很多的,劃分也會比較細緻,但這裏爲了簡單起見,我們用少量的特徵屬性以及較粗的劃分,並對數據做了修改。
我們選擇三個特徵屬性:a1:日誌數量/註冊天數,a2:好友數量/註冊天數,a3:是否使用真實頭像。在SNS社區中這三項都是可以直接從數據庫裏得到或
計算出來的。下面給出劃分:
a1{a<=0.05,0.05<a<0.2,a>=0.2}
a2{a<=0.1,0.1<a<0.8,a>=0.8}
a3{a=0,a=1}

1.7.2 獲取訓練樣本

         這裏使用運維人員曾經人工檢測過的1萬個賬號作爲訓練樣本。

1.7.3 計算訓練樣本中每個類別的頻率

         用訓練樣本中真實賬號和不真實賬號數量分別除以一萬,得到:
P(C=0)=8900/10000=0.89
P(C=1)=1100/10000=0.11

1.7.4 計算每個類別條件下各個特徵屬性劃分的頻率:

04概率計算-1.png-48.9kB    04概率計算-2.png-43.4kB

1.7.5 使用分類器進行鑑別

         下面我們使用上面訓練得到的分類器鑑別一個賬號,這個賬號使用非真實頭像,日誌數量與註冊天數的比率爲0.1,好友數與註冊天數的比率爲0.2。
04概率計算-3.png-71.3kB
         可以看到,雖然這個用戶沒有使用真實頭像,但是通過分類器的鑑別,更傾向於將此賬號歸入真實賬號類別。
這個例子也展示了當特徵屬性充分多時,樸素貝葉斯分類對個別屬性的抗干擾性。

1.8 樸素貝葉斯優缺點總結

1.8.1 優點:

  • 1.算法邏輯簡單,易於實現(算法思路很簡單,只要使用貝葉斯公式轉化即可!)
  • 2.分類過程中時空開銷小( 假設特徵相互獨立, 只會涉及到二維存儲)

1.8.2 缺點

         理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。 但是實際上並非總是如此,這是因爲樸素貝葉斯模型假設屬性之間相互獨立, 這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時, 分類效果不好。
         而在屬性相關性較小時,樸素貝葉斯性能最爲良好。對於這一點, 有半樸素貝葉斯之類的算法通過考慮部分關聯性適度改進

2 半樸素貝葉斯

2.1 半樸素貝葉斯定義

         在樸素的分類中,我們假定了各個屬性之間的獨立,這是爲了計算方便,防止過多的屬性之間的依賴導致的大量計算。這正是樸素的含義,雖然樸素貝葉斯的分類效果不錯,但是屬性之間畢竟是有關聯的,某個屬性依賴於另外的屬性,於是就有了半樸素貝葉斯分類器:

P(c|x)P(c)i=0nP(xi|c,pai)

         在正式進行計算的時候,將另外一個依賴的屬性加進去,計算量不會複雜太多,由於是基於“計數”,所以基本和樸素的計算方式類似。

2.2 超父ODE算法:SPODE

         因此,對某個樣本x 的預測樸素貝葉斯公式就由如下:

h(x)=max(P(c)i=0dP(xi|c))

修正爲如下的半樸素貝葉斯分類器公式:
h(x)=max(P(c)i=0dP(xi|pai))

         從上式中, 可以看到類條件概率P(xi|c) 修改爲了xi 依賴於分類c和一個依賴屬性pai

2.3 AODE算法

         上述超父ODE算法:SPODE。顯然,這個算法是每個屬性值只與其他唯一一個有依賴關係。基於它之上,又提出另一種基於集成學習機制,更爲強大的獨依賴分類器,AODE,算法思路很簡單,就是在SPODE算法的基礎上在外面包一個循環,就是嘗試將每個屬性作爲超父屬性來構建SPODE,請看下面的公式, 在SPODE外面包了一個循環,然後求它們的和作爲當前預測樣本的分類:

h(x)=max(j=1dP(c,xj)i=0dP(xi|c,xi))

2.4 確定依賴

2.4.1 SOPDE方法。

         這種方法是假定所有的屬性都依賴於共同的一個父屬性。

2.4.2 TAN方法。

         每個屬性依賴的另外的屬性由最大帶權生成樹來確定。
         (1) 先求每個屬性之間的互信息來作爲他們之間的權值。
         (2) 構件完全圖。權重是剛纔求得的互信息。然後用最大帶權生成樹算法求得此圖的最大帶權的生成樹。
         (3) 找一個根變量, 然後依次將圖變爲有向圖。
         (4) 添加類別y到每個屬性的的有向邊。

2.4.3 ODE-獨依賴估計

         樸素貝葉斯與兩種半樸素貝葉斯分類器所考慮的屬性依賴關係, 假定每個屬性僅依賴於其他最多一個屬性,稱其依賴的這個屬性爲其超父屬性,這種關係稱爲:獨依賴估計(ODE)。
05半樸素貝葉斯依賴.png-63.1kB

2.5 案例

2.5.1 題目要求

06案例.png-115.3kB
         測試集上要預測的某個樣本如下:
06-案例.png-27.5kB

2.5.2 解題

         採用拉普拉斯修正後的先驗概率P(c)的計算公式:P(c)=Dc+1D+N
         基於類c和類外的依賴屬性pai的條件概率計算公式:P(xi|c,pai)=Dc,pai,xi+1Dc,pai+Ni
屬性的依賴關係定義如下:
大小的依賴屬性爲:形狀,且屬性取值爲大時依賴形狀爲圓形;
顏色不存在依賴屬性;
形狀的依賴屬性爲大小,且屬性取值爲圓形時依賴大小爲大;
則先驗概率 P(c) :
P(c = 好果) = (4+1) / (10+2) = 5/12
P(c = 一般) = (6+1) / (10+2) = 7/12
帶有依賴屬性的類條件概率:
P(大小=大 | c=好果, 形狀=圓形) = (2+1)/(3+2) = 3/5
P(顏色=青色 | c=好果) = (0+1) /(4+2) = 1/6
P(形狀=圓形 | c=好果, 大小=大) = (2+1) / (3+2) = 3/5
P(大小=大 | c=一般, 形狀=圓形) = (1+1) /( 2+2) = 2/4
P(顏色=青色 | c=一般) = (5+1)/(6+2) = 6/8
P(形狀=圓形 | c=一般, 大小=大) = (1+1)/(3+2) = 2/5
P(c=好果) * P(大小=大 | c=好果, 形狀=圓形) * P(顏色=青色 | c=好果) * P(形狀=圓形 | c=好果, 大小=大)
= 5/12 * 3/5 * 1/6 * 3/5 = 0.025
P(c=一般) * P(大小=大 | c=一般, 形狀=圓形) * P(顏色=紅色 | c=一般) * P(形狀=圓形 | c=一般, 大小=大)
= 7/12 * 2/4 * 6/8 * 2/5= 0.0875
因此, 測試集上要預測的這個樣本和樸素貝葉斯分類器要預測的結果是相同的, 都爲一般的果子。

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