Andrew Ng機器學習公開課筆記 -- 樸素貝葉斯算法

網易公開課,第5,6課
notes,http://cs229.stanford.edu/notes/cs229-notes2.pdf算法

前面討論了高斯判別分析,是一種生成學習算法,其中x是連續值
這裏要介紹第二種生成學習算法,Naive Bayes算法,其中x是離散值的向量
這種算法經常使用於文本分類,好比分類垃圾郵件函數

首先,如何表示一個文本,即x?學習

image
以上面這種向量來表示,字典中的詞是否在該文本中出現
其中每一個詞,能夠看做是一個特徵,對於特徵的選取,能夠過濾到stop word,或只選取出現屢次的值。。。spa

那麼訓練集,就是一系列(x向量,y),其中y爲0或1表示non-spam,spam3d

其次,如何建模?blog

咱們能夠考慮直接對P(y|x)進行建模,可是x中的feature數通常是比較多的,講義中假設爲50000,那麼能夠想象x的取值可能性爲image ,因此若是要找出每一種x的可能性來建模,基本不可能索引

因此這種case,須要使用生成學習算法,經過對P(x|y)進行建模,來間接計算出P(y|x)
由於y的取值只有0,1,看似容易一些
但這裏x的取值是image,爲一個image 參數向量的多項分佈,仍然過於複雜事件

因此最終,提出Naive Bayes (NB) assumption,用於近似和簡單對P(x|y)進行建模
這個假設很是簡單,即每一個詞或feature都是獨立出現的
image ip

因此上面推導的第二行能夠簡化爲第三行的形式
雖然這個假設在現實中不可能爲真,可是實際的效果挺好get

接着寫出joint likelihood,用於建模
image
其中,
image
image image
image

省去推導過程,獲得
image 

其實這裏獲得這些結果,就算不用最大似然去推導,單純從機率角度去思考,也會獲得這個結果。好比image ,想固然應該是,全部y=1的文本中包含第j個單詞的比例
因此這裏使用最大似然推導是一個流程,顯得更嚴謹
其實能夠更直觀的獲得上面的結果

最後,若是對一個新的x進行預測?

比較簡單,用上面的公式計算出每一部分,就能夠獲得最終的結果
對於生成算法,分別計算出P(y=1|x)和P(y=0|x)
image

 

Laplace smoothing

上面給出的Naive Bayes有個問題是,當給出的x中出現一個訓練集從未出現過的詞的時候,這時候根據訓練集去計算imageimage都會獲得0
因而會獲得這個結果,

image

這明顯是不合理的,這種不合理是因爲你的訓練集是很是有限的致使的,因此這裏須要使用Laplace smoothing來避免這種狀況

z取值{1, . . . , k},
那麼給定m個z的觀察值,image
如今要根據觀察值,來判斷image
根據上面的最大似然結論,
image
這裏問題就在於,若是j在m個觀察值中沒有出現,那麼經過這個公式算出的image 爲0
這明顯不合理,由於在訓練集中沒有看到的現象,你不能說他出現的機率爲0,只不過是由於訓練集有限,沒有出現罷了
Laplace用於描述明天太陽升起的機率,雖然你每天看到太陽升起,但明天太陽依然會升起的機率必定不是1
因此利用Laplace smoothing,變化爲
image 
分子加1,很容易理解,沒有就至少算出現一次
分母之因此要加k,是爲了保證image

回到咱們的問題,通過Laplace smoothing的Naive Bayes分類器變爲,
image

Naive Bayes的擴展
1. x取值的擴展
基本的算法中,x取值爲{0,1}
能夠擴展成x的取值爲{1, 2, . . . , k},
區別就是image ,由Bernoulli分佈變爲多項分佈
這種擴張經常使用於使用GDA對連續x進行分類效果很差時,
將連續的x離散化,好比下面把房屋的面積進行離散化
image
而後使用Naive Bayes進行分類每每會獲得比較好的效果

2. multi-variate Bernoulli event model
這種擴展每每也是用於文本分類,由於普通的bayes方法只是考慮這個詞是否存在,而沒有考慮這個詞的出現頻率
事件模型就是對這個的一種改進,
首先表示一個文本或email的方式變了
普通bayes中,x長度取決於字典的大小,由於xi表示字典中第i個詞是否出現
而這裏,x長度取決於文本長短,xi表示在文本中i位置上的詞中字典中的索引,以下例

For instance, if an email starts with 「A NIPS . . . ,」then x1 = 1 (「a」 is the first word in the dictionary), and x2 = 35000 (if「nips」 is the 35000th word in the dictionary).

而後是建模,設
image
image image
image

joint似然函數爲,m是訓練集的大小,n是每一個文本中的詞的個數
image

能夠獲得,一樣省去推導過程
image 能夠看到,這裏在考慮字典中索引爲k的詞時,會把在文本中出現的次數相加 因此這裏不單單考慮是否出現,還考慮到到次數

相關文章
相關標籤/搜索