1. 程式人生 > >機器學習及python實現——樸素貝葉斯分類器

機器學習及python實現——樸素貝葉斯分類器

問題引入

考慮構建一個垃圾郵件分類器,通過給定的垃圾郵件和非垃圾郵件的資料集,通過機器學習構建一個預測一個新的郵件是否是垃圾郵件的分類器。郵件分類器是通常的文字分類器中的一種。

樸素貝葉斯方法

貝葉斯假設

假設當前我們已經擁有了一批標識有是垃圾郵件還是非垃圾郵件的資料集,然後我們來構建一個分類器。

我們可以通過一個特徵向量來表示一封郵件,向量的維度就是字典中單詞的個數。如果字典中的第i個單詞包含在郵件中,那個這個向量的xi=1,否則xi=0。假設字典中單詞個數為50000,那麼如下向量
這裡寫圖片描述

表示郵件中存在單詞a,buy,而aardvark,aardwolf和zygmurgy不存在。從這裡可以看到,向量的維度為字典單詞的個數,這裡為50000。

有了特徵向量,我們來構建模型,實際上,我們需要構建的就是這樣一個條件概率模型p(x|y),這裡字典的大小為50000,那麼x{0,1}50000,顯然這種指數級的引數來估計是不可行的。若要構建p(x|y),我們必須要做一些假設條件,我們假設每個xi針對給定的y具有條件獨立性,這就是樸素貝葉斯假設。在這個假設條件下,例如在給定y=1的條件下x200x5相互獨立,即p(x200|y)=p(x5|y,x200),這裡需要注意的是不是假設x200x5相互獨立,而是在給定y的條件下相互獨立。

樸素貝葉斯方法

有了以上的樸素貝葉斯假設,那我們可以構建我們的模型p(x|y),

===p(x1,x2,x3...x50000|y
)
p(x1|y)p(x2|y,x1)p(x3|y,x1,x2)...p(x50000|y,x1,x2,x3...)p(x1|y)p(x2|y)p(x3|y)...p(x50000|y)i=1np(xi|y)

將模型引數化ϕi|y=1=p(xi=1|y=1)ϕi|y=1=p(xi=1|y=1)ϕy=1=p(y=1)。樸素貝葉斯方法,學習就是意味著估計這些引數,可以應用極大似然估計法估計相應的概率。先驗概率的極大似然估計是:

ϕj|y=1=mi=11(x(i)j=1y(i)=1)mi=11(y(i)=1)
ϕj|y=0=mi=11(x(i)j=1y(i)=0)