樸素貝葉斯
在機(jī)器學(xué)習(xí)中病梢,樸素貝葉斯分類器是一系列以假設(shè)特征之間強(qiáng)(樸素)獨(dú)立下運(yùn)用貝葉斯定理為基礎(chǔ)的簡單概率分類器瘦赫。
樸素貝葉斯算法Naive Bayes定義中有兩個關(guān)鍵定義:特征之間強(qiáng)假設(shè)獨(dú)立和貝葉斯定理.這兩個定義就是樸素貝葉斯的關(guān)鍵.接下來先了解一下這兩個定義.
貝葉斯定理
貝葉斯定義是概率論中的一個定理,它跟隨機(jī)變量的條件概率以及邊緣概率分布有關(guān).
通常瓶珊,事件A在事件B(發(fā)生)的條件下的概率,與事件B在事件A(發(fā)生)的條件下的概率是不一樣的耸彪,然而,這兩者之間是有確定的關(guān)系的伞芹,貝葉斯定理就是這種關(guān)系的陳述。貝葉斯公式的一個用途在于通過已知的三個概率函數(shù)推出第四個.
直接給出公式:
其中,P(A|B)是指事件B發(fā)生的情況下事件A發(fā)生的概率(條件概率).在貝葉斯定理中,每個名詞都有約定俗成的名稱:
- P(A|B)是已知B發(fā)生后A的條件概率,也由于得知B的取值而被稱作A的后驗概率;
- P(A)是A的先驗概率(或邊緣概率).之所以稱為"先驗"是因為它不考慮任何B方面的因素;
- P(B|A)是已知A發(fā)生后B的條件概率,也由于得知A的取值而成稱作B的后驗概率;
- P(B)是B的先驗概率(或邊緣概率).
按這些術(shù)語,貝葉斯定理可以表述為:
后驗概率 = (似然性 * 先驗概率)/標(biāo)準(zhǔn)化常量
也就是說,后驗概率與先驗概率和相似度的乘積成正比.
同時,分母P(B),可以根據(jù)全概率公式分解為:
條件獨(dú)立性假設(shè)
如果P(X,Y|Z)=P(X|Z)P(Y|Z)蝉娜,或等價地P(X|Y,Z)=P(X|Z)唱较,則稱事件X,Y對于給定事件Z是條件獨(dú)立的,也就是說召川,當(dāng)Z發(fā)生時南缓,X發(fā)生與否與Y發(fā)生與否是無關(guān)的。
應(yīng)用在自然語言處理中,就是說在文章類別確定的條件下,文章的各個特征(單詞)在類別確定的條件下是獨(dú)立的,并不相關(guān),用通俗的話說,在文章類別確定的條件下,文章各個詞之間出現(xiàn)與否沒有相關(guān)性(事實(shí)上,并不成立).這是一個非常強(qiáng)的假設(shè),但對問題的求解來說變得更加簡單.
樸素貝葉斯的概率模型
設(shè)輸入空間為n為向量的集合,輸出空間為類標(biāo)記集合
.輸入為特征向量
,輸出為類標(biāo)記
. X是定義在輸入空間X上的隨機(jī)變量,Y是定義在輸出空間Y上的隨機(jī)變量.P(X,Y)是X和Y的聯(lián)合概率分布.訓(xùn)練數(shù)據(jù)集:
由P(X,Y)獨(dú)立同分布產(chǎn)生.因此樸素貝葉斯模型也是一個生成模型.
樸素貝葉斯算法通過訓(xùn)練集學(xué)習(xí)聯(lián)合概率分布P(X,Y),具體地,學(xué)習(xí)先驗概率分布以及條件概率分布.其中先驗概率分布
條件概率分布
, k=1,2,...,K
通過兩個概率得到聯(lián)合概率分布P(X,Y) = P(X|Y)P(Y).
條件概率分布P(X=x|Y=c_k)有指數(shù)級數(shù)量的參數(shù),其估計實(shí)際上不可行的.假設(shè)有
個取值,j=1,2,...,n,Y有K個取值,那么參數(shù)個數(shù)為
.
指數(shù)級的參數(shù)估計事實(shí)上并不可行,因此樸素貝葉斯算法針對各個特征之間做了假設(shè),也就是對條件概率分布作了條件獨(dú)立性假設(shè),這是一個很強(qiáng)的假設(shè),通過這個假設(shè),我們的參數(shù)求解變得可行,這也就是樸素貝葉斯的"樸素"的由來.這種情況下,我們同樣假設(shè)有
個取值,j=1,2,...,n,Y有K個取值,那么參數(shù)個數(shù)為
,需要估計的參數(shù)量大大減少.條件獨(dú)立性假設(shè)是
樸素貝葉斯算法分類時,對給定輸入x,通過學(xué)習(xí)到的模型計算后驗概率分布,將后驗概率最大的類作為輸入x的類輸出.后驗概率根據(jù)貝葉斯定理計算:
上面的公式是后驗概率分布中的一項,由于對于相同輸入x下不同類別的后驗概率的分母都相同,而最終的類輸出是后驗概率分布中概率最大對應(yīng)的類別,所以我們可以簡化為只比較分子的大小就可以確定最終的結(jié)果,也就是說,最終類輸出為:
.
如果我們對右邊的乘積概率取log,連乘積就可以轉(zhuǎn)換成為和,計算更簡單(加法總比乘法簡單),上訴公式存在一種變種:
.
同時這種形式,也可以看做是一種線性回歸,權(quán)重系數(shù)為1.
介紹完,樸素貝葉斯的概率模型之后,我們目前的主要問題就集中在如何估計這個模型的個參數(shù):
,估算出參數(shù),我們就可以對輸入向量x做預(yù)測.針對這些參數(shù)的求解方法不同,存在不同的樸素貝葉斯類型,具體介紹三種:伯努利樸素貝葉斯,多項式樸素貝葉斯和高斯樸素貝葉斯.不同類型的樸素貝葉斯對參數(shù)的求法不同,而根源在于對P條件概率(X=x|Y=c_k)的假設(shè)分布不同,也就是說在給定類別的情況下,對X假設(shè)的分布不同:伯努利假設(shè)是伯努利分布(其實(shí)應(yīng)該是多變量伯努利分布),多項式假設(shè)是多項式分布,而高斯也就是假設(shè)是高斯分布(其實(shí)是多變量高斯分布).然后,我們細(xì)化到三種不同類型的樸素貝葉斯理論中.
Bernoulli Naive Bayes 伯努利樸素貝葉斯
伯努利樸素貝葉斯,其實(shí)應(yīng)該叫"Multi-variate Naive Bayes",假設(shè)P(X=x|Y=c_k)是多變量伯努利分布.在了解多變量伯努利分布之前,先介紹一下什么是(單變量的)伯努利分布.
伯努利分布
伯努利分布,又叫做兩點(diǎn)分布或0-1分布,是一個離散型概率分布.稱隨機(jī)變量X有伯努利分布,參數(shù)為p(0< p <1),它分別以概率p和1-p取1和0為值.
最簡單的例子就是拋硬幣,硬幣結(jié)果為正或反.
冪次運(yùn)算變成乘法運(yùn)算,更簡單.當(dāng)x=1時,概率是P(X=1)=p,當(dāng)x=0時,概率P(X=0)=1-p,這樣就可以將兩種情況合在一起.
了解了什么是伯努利分布之后,我們再看什么是多元伯努利分布(多變量 multi-variate Bernoulli).
多元伯努利分布
多元伯努利分布,通俗的講就是同時進(jìn)行多個不同的伯努利實(shí)驗,,其中x是一個向量,
也是一個向量,表示不同伯努利實(shí)驗的參數(shù).
伯努利多項式將文檔的生成模型P(X=x|Y=c_k)假設(shè)服從為多元伯努利分布,由于我們之前做的特征獨(dú)立性假設(shè),是一個向量形式,而其中
,也就是說x向量是onehot形式的向量(每個維度值是0或1),表示這個維度的特征是否出現(xiàn).特征集
有n個特征,特征集的維度決定了輸入空間X的維度,而且特征集的維度可以對應(yīng)到輸入空間的各個維度上.
因為特征之間的獨(dú)立性,所以多元伯努利變成各個伯努利分布的連乘積,需要注意的一點(diǎn)是因為是伯努利分布,0-1,特征出現(xiàn)有一個概率p,特征不出現(xiàn)也有一個概率1-p.最終模型的參數(shù)估計完成之后,對新樣本進(jìn)行預(yù)測時,如果某個特征不出現(xiàn),需要乘上這個特征不出現(xiàn)的概率,不能只計算特征出現(xiàn)的概率!!!兩個向量直接相乘,并不能得到最終的結(jié)果.
對應(yīng)的伯努利樸素貝葉斯模型為:
為了簡化運(yùn)算,我們可以將分母忽略,雖然對應(yīng)的結(jié)果不是真正的概率,但是相同樣本的各個后驗概率之間的大小關(guān)系保持不變,同時如果兩邊同時做log運(yùn)算,后驗概率之間的大小關(guān)系同樣保持不變.因此,
.
了解了多元伯努利分布之后,接下來的工作就是對參數(shù)進(jìn)行估計,計算,
.
參數(shù)估計
參數(shù)估計的過程也是樸素貝葉斯分類器學(xué)習(xí)的過程.而參數(shù)估計可以使用極大似然估計.先驗概率的極大似然估計是
, k=1,2,...,K
其中,I(x)是一個指示函數(shù),如果x為真,I(x)結(jié)果為1,如果x為假,I(x)=0.用語言描述來說,這個概率等于在N個樣本的數(shù)據(jù)集中,類別為
的樣本所占的比例.
條件概率的極大似然估計是:
用語言描述來說,條件概率等于在類別為
的樣本集合(數(shù)據(jù)集的子集)中,第i個特征等于
的概率,
是0或1,而且
服從伯努利分布,所以只需要計算一個,比如P
,
,因為兩個概率和為1(這是同一個變量).
這些參數(shù)估計完之后,樸素貝葉斯就完成了學(xué)習(xí)過程,接下來就可以使用它去進(jìn)行預(yù)測了(應(yīng)用才是最終的目的).
0概率處理
由于是伯努利分布,參數(shù)p在[0,1]之間,有可能存在
,也就是存在0概率.
舉例來說,在當(dāng)前類別下的所有樣本中特征i都出現(xiàn)了(=1),根據(jù)上面的條件概率極大似然估計,可以知道,那么對應(yīng)的,
,那么當(dāng)新樣本來的時候,加入存在一條記錄x,它很巧地沒有第i個特征(這不巧了嗎?不是),由于0概率的存在,那么使用上面的貝葉斯公式,就會出現(xiàn)屬于某個列別的概率為0,
.但這種情況是應(yīng)該避免的,那么如何避免呢?
我們在對條件概率進(jìn)行極大似然估計時,針對分子和分母做一些小變動,
其中,表示第i個特征不同取值的個數(shù),由于這里是one-hot,取值為2,所以
,
乘以
是保證
個不同取值對應(yīng)的條件概率之和為1,不偏袒任意一種情況,一視同仁.
代碼實(shí)現(xiàn)
To Be Continued.
數(shù)學(xué)推導(dǎo)---矩陣形式,批量計算,高效快捷.
Multinomial Naive Bayes 多項式樸素貝葉斯
多項式樸素貝葉斯,假設(shè)P(X=x|Y=c_k)是多項式分布.在了解多項式樸素貝葉斯之前,先介紹一下什么是多項式分布?
多項式分布
將伯努利分布的單變量擴(kuò)展到d維向量,其中
,且
,假設(shè)
的概率是
,并且
,則將得到離散分布:
.
其中x,都是d維向量形式.在此的基礎(chǔ)上擴(kuò)展二項分布到多項式分布(Multinomial distribution),該分布描述的是在n次獨(dú)立實(shí)驗中有
詞
的概率,其密度函數(shù)可以表達(dá)為如下形式:
多項式分布的期望,方差如下:
多項式樸素貝葉斯
多項式分布應(yīng)用到樸素貝葉斯上,對于文檔分類問題來說,假設(shè)給定文檔類型的基礎(chǔ)上文檔生成模型是一個多項式分布.這樣對應(yīng)關(guān)系就是:
- 文檔分類中的d維字典(d個特征)對應(yīng)于多項式分布中的向量的d個維度;
- 文檔分類中,詞
出現(xiàn)與否,對應(yīng)于d維向量中
,兩種取值情況,且
;
- 文檔分類中,詞
出現(xiàn)的概率,對應(yīng)于離散分布中
的概率是
,并且
;
- 文檔分類中,給定類別下,對應(yīng)一次抽樣結(jié)果x(d維向量)的概率為:
,因為如果一個詞不出現(xiàn),即
,那么對應(yīng)
,所以
可以簡寫為
;
- n次獨(dú)立實(shí)驗中有
詞
的概率,對應(yīng)到文檔模型中特征i(第i個詞)出現(xiàn)了
次,n次實(shí)驗對應(yīng)到文檔模型中表示這篇文檔的長度為n(一共有n個詞),對應(yīng)概率密度函數(shù)為:
多項式分布 | 文檔模型 |
---|---|
d維向量 | d個維度,d個特征 |
第i個詞出現(xiàn)與否 | |
|
第i個詞出現(xiàn)的概率 |
給定類別下,一次抽樣結(jié)果的概率(一個詞) | |
n次實(shí)驗 | 對應(yīng)長度為n的文檔n次抽樣結(jié)果 |
需要注意的是,應(yīng)用在文本分類的多項式樸素貝葉斯模型之前,一般多項式條件概率如下:
我們的多項式樸素貝葉斯概率模型為:
這里為了方便,首先我們假設(shè)文章長度和文章的類別之間沒有相關(guān)性(事實(shí)上也并不成立,比如說相對較長的郵件,相比垃圾郵件而言,正常郵件的概率更大),也就是說P(|x|)的分布與文章所屬類別無關(guān).另一方面,由于最終所屬類別是后驗概率最大對應(yīng)的類別,所以,我們可以將文章長度P(|x|)建模的概率,忽略掉,就像我們之前忽略伯努利分布中的分母一樣.
再者,為了更加方便,我們通常對兩邊取log運(yùn)算,將冪次運(yùn)算轉(zhuǎn)換成線性運(yùn)算:
我們也可以將文章長度階乘省略,然后變成:
.
這樣就變成線性運(yùn)算,就和線性回歸一樣,運(yùn)算高效而簡單.
將文檔模型對應(yīng)到多項式分布上得到多項式樸素貝葉斯,在我們對其做出假設(shè)分布之后,剩下的工作就是對假設(shè)分布下每個類別下的d個條件概率以及先驗分布進(jìn)行估計.此外,還需要說明的一點(diǎn)是:多項式樸素貝葉斯模型采用詞袋模型,每個表示第i個特征出現(xiàn)的次數(shù),也就是詞頻term-frequency,有時候也可以使用tf-idf作為值.
參數(shù)估計
參數(shù)估計的過程也是樸素貝葉斯分類器學(xué)習(xí)的過程.而參數(shù)估計可以使用極大似然估計.先驗概率的極大似然估計是
, k=1,2,...,K
其中,I(x)是一個指示函數(shù),如果x為真,I(x)結(jié)果為1,如果x為假,I(x)=0.用語言描述來說,這個概率等于在N個樣本的數(shù)據(jù)集中,類別為
的樣本所占的比例.
條件概率的極大似然估計是:
用語言描述來說,條件概率等于在類別為
的樣本集合(數(shù)據(jù)集的子集)中,第t個特征出現(xiàn)的概率等于
類樣本第t個特征出現(xiàn)的總次數(shù)(考慮詞頻,不再是0,1)占
類樣本的總詞數(shù)(文章長度之和,文章單詞特征是固定的,考慮了詞頻)的比例.
為了方便理解,將表示為第k類樣本集合中第t個特征出現(xiàn)的總次數(shù),
表示為在所有樣本中第k類樣本的總詞數(shù)(第k類樣本長度之和,考慮頻數(shù)),簡寫成:
需要注意的是,
,意思是給定分類下,各個維度的概率之和為1,在文章分類中,就是給定文章分類的情況下,各個詞出現(xiàn)的條件概率之和為1,和每個詞出現(xiàn)多少詞沒有關(guān)系.
0概率處理
和伯努利樸素貝葉斯模型類似,有可能存在某一維度,數(shù)據(jù)集在這一維度上都是0,對應(yīng)到文檔分類上,就是這個詞在所有文章中都沒有出現(xiàn)過(詞典選的不好,特征選擇不好),這種情況就會出現(xiàn)0概率.所以我們需要對條件概率做一點(diǎn)小改動:
其中,d表示數(shù)據(jù)維度為d(有d個特征,每個特征都加,保證概率和為1,
需要乘d).當(dāng)
時,叫做Laplace Smoonthing拉普拉斯平滑,當(dāng)然
也可以小于1.
代碼實(shí)現(xiàn)
To Be Continued
Gaussian Naive Bayes 高斯樸素貝葉斯
高斯樸素貝葉斯,假設(shè)P(X=x|Y=c_k)是多元高斯分布.在了解高斯樸素貝葉斯之前,先介紹一下什么是高斯分布,什么是多元高斯分布?
高斯分布
高斯分布又稱正態(tài)分布荧呐,在實(shí)際應(yīng)用中最為廣泛汉形。對于單變量,高斯分布的參數(shù)有兩個纸镊,分別是均值
和方差
,其概率密度函數(shù)為
多元高斯分布
其中,是D維均值向量,
是DxD的協(xié)方差矩陣,
是
的行列式.多元高斯分布的期望是
,方差是
特殊的,如果D個維度之間相互獨(dú)立,那么多元高斯分布就可以表示成單元高斯分布概率密度函數(shù)的連乘積.
高斯樸素貝葉斯
高斯樸素貝葉斯模型是假設(shè)條件概率P(X=x|Y=c_k)是多元高斯分布,另一方面,由之前的特征的條件獨(dú)立性假設(shè),我們就可以通過對每個特征的條件概率建模,每個特征的條件概率也服從高斯分布.
在類下第i個詞對應(yīng)的高斯分布為:
其中,,
表示c類下第i個特征的均值和方差.
由于特征之間的獨(dú)立性假設(shè),我們可以得到條件概率:
一共有d個特征.
高斯樸素貝葉斯變成:
.
了解了多元高斯分布分布之后,接下來的工作就是對參數(shù)進(jìn)行估計,計算和
.
參數(shù)估計
先驗概率和之前的估算方法相同,不再描述.主要是對高斯分布的均值和方差的估計,采用的方法仍然是極大似然估計.
均值的估計是在樣本類別
中,所有
的平均值;
方差的估計為樣本類別
中所有
的方差.
對于一個連續(xù)的樣本值,帶入高斯分布,就可以求出它的概率分布了.
所有參數(shù)估計完成之后,就可以計算給定樣本的條件概率,進(jìn)而可以計算
,之后就可以確定樣本類別,完成模型預(yù)測.