樸素貝葉斯

2022-08-01 09:54:14 字數 2212 閱讀 2679

樸素貝葉斯演算法是以後驗概率最大為理論基礎而得出的分類模型。要了解樸素貝葉斯,就需要先了解貝葉斯公式。

首先,先看下面這個例子:

假設一所學校裡面有40%的男生,60%的女生。

你在這所學校的大道上走,迎面走來乙個人,由於比較遠,看不清楚特徵。現在需要你判斷ta的性別,請問你的答案是什麼?

根據學校人數的分布情況,你知道這個學校女生多,因此,回答女生沒一點毛病。

好了,現在ta走近了一點,可以看到這個人穿著長褲。已知,男生總是穿著長褲,女生有一般穿著長褲,一半穿著裙子(短褲什麼的在這個學校不流行,所以沒人穿)。那麼,現在你的回答是什麼?

這個雖然麻煩一點,但是,簡單的算一算還是能夠得到答案的:男生全部穿長褲,所以所有男生都有可能是ta,但女生有一般是穿的長裙,因此只有一半的女生有可能ta。假設學校總共有100人(雖然有點小,但畢竟有人),那麼候選人中有40個男生,30個女生。因此,是男生的概率大一些。

ok,你們又近了一些,你發現ta留著長髮!!!仔細想想,女生中有2/3的是留著長髮的,而男生,嘻嘻,就只有乙個(比較非主流撒)。那個留著長髮的男生你正好認識,好像他是戴眼鏡的,而ta,並沒有戴眼鏡!!!沒錯,真相只有乙個,ta是乙個女生,哇咔咔,真佩服自己,推理小王子有沒有。

這個例子中,根據乙個又乙個特徵的出現,我們得到了最後的結果,而從bayes的角度,則可以這樣理解:

在剛開始,我們僅僅知道先驗概率,即學校的男女比例p(男生)和p(女生)。

之後,我們又得到了ta的乙個特徵——穿長褲。那麼,我們就需要來修正之前得到的先驗概率了,因為有一半的女生已經被排除了。

\[p(ta = 男生) = p(男生) * p(長褲|男生) / p(長褲)

\]\[p(ta = 女生) = p(女生) * p(長褲|女生) / p(長褲)

\]這個就是bayes公式,其一半角式如下:

\[posterior = \frac

\]或者是:

\[p(\omega_i | x) = \frac

\]高大上的bayes公式就這麼出來了。

樸素貝葉斯的思想基礎可以概括如下:對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就分到哪一類中。僅僅如此,還不能稱之為樸素。其之所以樸素,是因為它假定了變數之間相互獨立。這個假設很強,強到是個人都覺得有問題。簡單想想,如果有兩個特徵:穿裙子和性別,那麼,很容易想到,穿裙子的基本都是女生(男生穿個裙子,確定不是在演小品?),所以,這兩個特徵之間相互不獨立。在現實中,像這種例子還有很多,但是,樸素貝葉斯作為大殺器,在這種強假設的情況下,仍有優異的表現,不得不說,貝葉斯的強大啊。

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

設\[x=\

\]為乙個待分類項,而每個\(a\)為\(x\)的乙個特徵屬性。

有類別集合

\[c=\

\]計算

\[p(y_1|x),p(y_2|x),...,p(y_n|x)\]求

\[\mathop_ p(y_k|x)

\]所以,問題的關鍵就在於求解\(p(y_k|x)\)。

假設我們已經有乙個訓練樣本集\(x\)。那麼,就可以統計各個特徵在各個類別下的條件概率估計,即

\[p(a_1|y_1),p(a_2|y_1),...,p(a_m|y_1);\\

p(a_1|y_2),p(a_2|y_2),...,p(a_m|y_2);\\

...\\

p(a_1|y_n),p(a_2|y_n),...,p(a_m|y_m)

\]如果各個屬性見條件獨立,則根據貝葉斯定理可得

\[p(y_y|x)=\frac

\]由於分母是個常數,因此只需要將分子最大化即可,又因為各特徵屬性是條件獨立的,所以有

\[p(x|y_i)p(y_i)=p(y_i)\pi_^mp(a_j|y_i)

\]計算\(p(y_k|x)\)時,由於特徵空間較為稀疏,因此,常常會出現概率為0的情況,這是我們不願意看到了。

比如:\[p(a_1|y) = 0, p(a_k|y)=1,k\in[2,3,...m]

\]在這種情況下,認為其概率為0顯然是不合適的,因此,需要對其進行一些修正。常用的修正方法是拉普拉斯修正法。

原有的\(p(a_j|y_i)\)的計算方式為

\[p(a_j=a_|y_i) = \frac)}

\]引入拉普拉斯修正以後,計算公式變為

\[p(a_j=a|y_i) = \frac) + 1}

\]由於分子中含有常數1,因此分子必定非0,也就消除了上述的風險。

樸素貝葉斯

樸素貝葉斯演算法是一種基於概率統計的分類方法,它主要利用貝葉斯公式對樣本事件求概率,通過概率進行分類。以下先對貝葉斯公式做個了解。對於事件a b,若p b 0,則事件a在事件b發生的條件下發生的概率為 p a b p a b p b 將條件概率稍作轉化即可得到貝葉斯公式如下 p a b p b a ...

樸素貝葉斯

1.準備資料 從文字中構建詞向量 2.訓練演算法 從詞向量計算概率 3.測試演算法 儲存為 bayes.py 檔案 參考 coding utf 8 from numpy import 文字轉化為詞向量 def loaddataset postinglist my dog has flea probl...

樸素貝葉斯

機器學習是將資料轉化為決策面的過程 scikit learn縮寫為sklearn 訓練乙個分類器,學習之後 其處理的準確性 def nbaccuracy features train,labels train,features test,labels test from sklearn.bayes ...