樸素貝葉斯(一)

樸素貝葉斯(Naive Bayes)是一種簡單的分類算法,它的經典應用案例爲人所熟知:文本分類(如垃圾郵件過濾)。

總結

1、樸素貝葉斯有個前提的假設:每個條件(屬性)互相之間是獨立的。

2、最初公式的分母是一個常數,忽略不計。

3、在做詞分類時,考慮到詞很多需要做大量的乘法會影響效率,再者小數的乘法會越乘越小導致數據很小丟失數據,因此對最終的公式做ln處理,不影響單調性,把乘法轉換成加法。

4、爲了防止在計算時出現概率爲0的情況,做一些平滑處理。
  (1)先驗概率,分子加α,分母加kα k是類別總數(感覺不用平滑,分子爲某個類別樣本,而且有些地方的講解沒有用平滑)
  (2)每個條件的概率,分子加α,分母加nα n是特徵維度
  當α=1時,稱作Laplace平滑,當0<α<1時,稱作Lidstone平滑,α=0時不做平滑。

上面的四點會在下面的詳細講解點出。

公式及其推導

最初公式:

給定訓練數據集(X,Y),其中每個樣本x都包括n維特徵,即x=(x1,x2,x3,...,xn),類標記集合含有k種類別,即y=(y1,y2,...,yk)

如果現在來了一個新樣本x,求其類別。

那麼問題就轉化爲求解P(y1|x),P(y2|x),...,P(yk|x)中最大的那個,即求後驗概率最大的輸出:argmaxykP(yk|x)

P(yk|x)就通過貝葉斯定理求得:

分子中的P(yk)是先驗概率,根據訓練集樣本數就可以簡單地計算出來。

分母P(x)可以根據全概率公式算,但是對於任何輸入的數據都是一個常數,所以可以忽略不計。


而條件概率P(x|yk)=P(x1,x2,...,xn|yk),它的參數規模是指數數量級別的,假設第i維特徵xi可取值的個數有Si個,類別取值個數爲k個,那麼參數個數爲:kni=1Si

這顯然不可行。針對這個問題,樸素貝葉斯算法對條件概率分佈作出了獨立性的假設,通俗地講就是說假設各個維度的特徵x1,x2,...,xn互相獨立,在這個假設的前提上,條件概率可以轉化爲:

公式最終轉化成:


平滑處理:

某些屬性在某些類別上不存在,因此會導致p(xi|yk)爲0,因此需要一下平滑處理(我一般不會對先驗概率公式(下面第一個公式)做平滑,因爲某個類別的樣本數不會爲0):

N是樣本總數,k是類別總數,Nyk是類別爲yk的樣本個數,α是平滑值。

      Nyk是類別爲yk的樣本個數,n是特徵的維數,Nyk,xi是類別爲yk的樣本中,第i維特徵的值是xi的樣本個數,α是平滑值。

α=1時,稱作Laplace平滑,當0<α<1時,稱作Lidstone平滑,α=0時不做平滑。


例1(來自下面的鏈接):

由此可以判定y=-1。


參考:http://blog.csdn.net/u013007900/article/details/78049587

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