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