機(jī)器學(xué)習(xí)筆記5: 樸素貝葉斯算法

樸素貝葉斯模型

在上節(jié)介紹的GDA方法中,輸入特征x是連續(xù)型隨機(jī)變量〖灯荩現(xiàn)在我們介紹一個(gè)算法用于處理x是離散值的情況。

我們以郵件分類(lèi)為例來(lái)介紹這個(gè)算法,郵件分類(lèi)問(wèn)題是文本分類(lèi)(text classification)問(wèn)題的一個(gè)子集身坐。這里我們只考慮把郵件分為兩類(lèi):垃圾郵件(spam email)和非垃圾郵件(non-spam email)。

我們把郵件中所有出現(xiàn)的單詞的集合稱(chēng)為詞匯表(vocabulary)落包。首先我們構(gòu)造特征向量xi部蛇,xi的長(zhǎng)度等于詞匯表里單詞的個(gè)數(shù)。如果詞匯表中第i個(gè)單詞出現(xiàn)在某封郵件中咐蝇,那么xi=1涯鲁,否則xi=0,比如:

上圖表明這封郵件里包含a和buy這兩個(gè)單詞嘹害,但不包含aardvark撮竿,aardwolf,zygmurgy這三個(gè)單詞笔呀。

構(gòu)建完特征向量后幢踏,我們需要對(duì)p(x|y)進(jìn)行建模。假設(shè)詞匯表里有50000個(gè)單詞许师,那么x是50000維的向量且每個(gè)元素在0和1內(nèi)取值房蝉,這樣可能的結(jié)果就有250000種,如果用多項(xiàng)式分布建模的話微渠,就會(huì)有250000 - 1個(gè)參數(shù)搭幻,這顯然是個(gè)天文數(shù)字。

為了簡(jiǎn)化問(wèn)題逞盆,我們就需要做一些假設(shè)檀蹋。我們假設(shè)給定y的情況下,xi之間是條件獨(dú)立的云芦,這個(gè)假設(shè)稱(chēng)為樸素貝葉斯假設(shè)(Naive Bayes assumption)俯逾。舉例來(lái)說(shuō),如果y=1表示垃圾郵件舅逸,buy是第2087個(gè)單詞桌肴,price是第39831個(gè)單詞,那么在已知該郵件是垃圾郵件的情況下琉历,“buy出現(xiàn)在該郵件中”和“price出現(xiàn)在該郵件中”這兩件事是互不相關(guān)的坠七。用形式化的方法表述就是水醋,p(x2087|y)=p(x2087|y, x39831)。注意彪置,我們不是說(shuō)x2087和x39831是互相獨(dú)立的拄踪,而是說(shuō)在給定y的情況下x2087和x39831是條件獨(dú)立的。

因此我們可以作如下推導(dǎo):

其中第一個(gè)等號(hào)基于條件概率鏈?zhǔn)椒▌t悉稠,第二個(gè)等號(hào)基于樸素貝葉斯假設(shè)宫蛆。需要說(shuō)明的是,盡管樸素貝葉斯假設(shè)是個(gè)比較強(qiáng)的假設(shè)的猛,但在實(shí)際問(wèn)題中表現(xiàn)的效果很好耀盗。

我們的模型由φi|y=1 = p(xi=1|y=1),φi|y=0 = p(xi=1|y=0)和φy = p(y=1)這三個(gè)參數(shù)決定卦尊,其似然函數(shù)為

通過(guò)最大化似然函數(shù)叛拷,可以求得:

上式中的∧表示邏輯上的(and)。這個(gè)公式可以從直觀上進(jìn)行解釋?zhuān)热绂?sub>i|y=1就是第j個(gè)單詞出現(xiàn)在垃圾郵件中的次數(shù)除以垃圾郵件的總個(gè)數(shù)岂却。

所有參數(shù)確定后忿薇,對(duì)一個(gè)新特征x作預(yù)測(cè),我們可以計(jì)算出:

根據(jù)p(y=1|x)是否大于0.5來(lái)判斷新郵件是否是垃圾郵件躏哩。

最后署浩,盡管上面我們的x取值只是0或1,但實(shí)際上可以把它擴(kuò)展到多個(gè)離散值的情況扫尺。另外即使x是連續(xù)取值的筋栋,我們可以通過(guò)離散化(discretize),即按一定的區(qū)間將連續(xù)值映射到離散值正驻,然后應(yīng)用樸素貝葉斯算法弊攘。

比如對(duì)于房?jī)r(jià)預(yù)測(cè)問(wèn)題,我們可以按照上表把住房面積按一定區(qū)間離散化姑曙,如果住房面積是890襟交,那么對(duì)應(yīng)的特征值xi就是3。一般來(lái)說(shuō)伤靠,如果連續(xù)型隨機(jī)變量不能用多元正態(tài)分布建模(不能使用GDA)捣域,那么將其離散化并采用樸素貝葉斯建模是一個(gè)更好的算法。

拉普拉斯平滑處理

樸素貝葉斯算法對(duì)大多數(shù)問(wèn)題都有很好的表現(xiàn)宴合,但是我們還需要對(duì)其作一些修正使得它在文本分類(lèi)問(wèn)題中表現(xiàn)地更出色焕梅。

假設(shè)NIPS是詞匯表里的第35000個(gè)單詞,但是這個(gè)單詞從未在訓(xùn)練數(shù)據(jù)中出現(xiàn)過(guò)形纺,因此:

所以預(yù)測(cè)一個(gè)包含單詞NIPS的郵件是否為垃圾郵件丘侠,我們計(jì)算得到:

這是由于每一項(xiàng)乘積里都有p(x35000|y) = 0徒欣,因此分子分母都為0逐样,這使得我們無(wú)法進(jìn)行計(jì)算。

這個(gè)問(wèn)題從廣義上來(lái)講就是,僅僅因?yàn)橐粋€(gè)事件沒(méi)有在訓(xùn)練集中出現(xiàn)就預(yù)測(cè)它的概率為0不是一個(gè)好主意脂新。對(duì)于φi = p(z=i)挪捕,之前根據(jù)最大似然估計(jì)的結(jié)果為:

為了避免某些φj等于0,我們可以使用拉普拉斯平滑處理(Laplace smoothing)争便,修正參數(shù)如下:

我們?cè)谠瓍?shù)基礎(chǔ)上级零,分子上加了1,分母上加了k滞乙。注意修正之后奏纪,所有
φj之和仍然為1(j從1到k取值)。并且所有的φj都不為0斩启,解決了之前的問(wèn)題序调。

將拉普拉斯平滑處理代入到樸素貝葉斯算法,我們得到修正后的參數(shù):

文本分類(lèi)的事件模型

樸素貝葉斯算法在很多文本分類(lèi)問(wèn)題中都表現(xiàn)地不錯(cuò)兔簇,但還有個(gè)與之相關(guān)的算法表現(xiàn)地更出色发绢。

在文本分類(lèi)的特定領(lǐng)域,樸素貝葉斯算法使用的是多元伯努利事件模型(multi-variate Bernoulli event model)垄琐。在該模型中边酒,我們假設(shè)下一封郵件的發(fā)送方是隨機(jī)的發(fā)送者(可能是垃圾郵件制造者或者是正常發(fā)件人),然后發(fā)送方遍歷整個(gè)字典狸窘,然后決定是否將單詞i寫(xiě)到郵件中墩朦,每個(gè)單詞i寫(xiě)入的概率p(xi=1|y) = φi|y互相獨(dú)立。因此朦前,這封郵件出現(xiàn)的概率為:

我們?cè)俳榻B另一個(gè)模型介杆,稱(chēng)之為多項(xiàng)式事件模型(multinomial event model)。這個(gè)模型引入了一套不同的符號(hào)和特征韭寸,xi表示郵件里第i個(gè)單詞的在字典中的位置春哨,xi在1到|V|中取值,|V|是詞匯表(字典)的大小恩伺。一封由n個(gè)單詞組成的郵件由長(zhǎng)度為n的向量表示(x1, x2, ..., xn)赴背。比如,某封郵件的開(kāi)頭為"A NIPS ..."晶渠,那么x1=1(a是字典里第1個(gè)單詞)凰荚,x2=35000(NIPS是字典里第35000個(gè)單詞)。

在多項(xiàng)式事件模型中褒脯,我們?nèi)噪S機(jī)選擇發(fā)送者(和多元伯努利事件模型一樣便瑟,概率是p(y)),然后發(fā)送者根據(jù)多項(xiàng)式分布決定第一個(gè)單詞x1出來(lái)(概率是p(x1|y))番川,再以同樣的方式?jīng)Q定后續(xù)的單詞x2, ..., xn到涂,直到選出n個(gè)單詞構(gòu)成這封郵件脊框。因此,在該模型下郵件出現(xiàn)的概率為:

注意這個(gè)公式和在多元伯努利事件模型下推導(dǎo)出來(lái)的公式非常類(lèi)似践啄,但實(shí)際上這里的每一項(xiàng)都表示不同的含義浇雹,尤其是xi|y現(xiàn)在服從多項(xiàng)式分布,而不是伯努利分布屿讽。

該模型的參數(shù)和之前一樣昭灵,它們是 φk|y=1 = p(xj=k|y=1),φk|y=0 = p(xj=k|y=0)和φy = p(y)伐谈。注意對(duì)于任意的j烂完,p(xj|y)的值都是一樣的,也就是說(shuō)單詞在郵件中出現(xiàn)的位置與概率無(wú)關(guān)诵棵。

給定訓(xùn)練數(shù)據(jù)集(x(i), y(i))窜护,其似然函數(shù)為:

通過(guò)最大化似然函數(shù),可以求得:

應(yīng)用拉普拉斯平滑非春,我們?cè)诜肿由霞?柱徙,在分母上加|V|,修正后的參數(shù)為:

盡管樸素貝葉斯算法不是最好的分類(lèi)算法奇昙,但它的效果卻是驚人地好护侮。由于它的簡(jiǎn)單和易于實(shí)現(xiàn)的特性,我們通常把它作為首選試驗(yàn)的算法储耐。

總結(jié)

  • 在分類(lèi)問(wèn)題中常用的分類(lèi)算法是樸素貝葉斯算法羊初,模型需要滿(mǎn)足樸素貝葉斯假設(shè),即給定y的情況下什湘,xi之間是條件獨(dú)立的
  • 如果x是連續(xù)型隨機(jī)變量长赞,可以通過(guò)離散化后應(yīng)用樸素貝葉斯算法;對(duì)于某些不能使用GDA建模的模型闽撤,該方法是一個(gè)更好的算法
  • 為了解決樸素貝葉斯算法中某些參數(shù)為0導(dǎo)致預(yù)測(cè)失效得哆,可以采用拉普拉斯平滑對(duì)參數(shù)修正
  • 文本分類(lèi)的兩種事件模型:多元伯努利事件模型和多項(xiàng)式事件模型,后者通常效果更好

參考資料

  • 斯坦福大學(xué)機(jī)器學(xué)習(xí)課CS229講義 pdf
  • 網(wǎng)易公開(kāi)課:機(jī)器學(xué)習(xí)課程 雙語(yǔ)字幕視頻
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哟旗,一起剝皮案震驚了整個(gè)濱河市贩据,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闸餐,老刑警劉巖饱亮,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異舍沙,居然都是意外死亡近上,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)拂铡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)壹无,“玉大人歼跟,你說(shuō)我怎么就攤上這事「裨猓” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵留瞳,是天一觀的道長(zhǎng)拒迅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)她倘,這世上最難降的妖魔是什么璧微? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮硬梁,結(jié)果婚禮上前硫,老公的妹妹穿的比我還像新娘。我一直安慰自己荧止,他們只是感情好屹电,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著跃巡,像睡著了一般危号。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上素邪,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天外莲,我揣著相機(jī)與錄音,去河邊找鬼兔朦。 笑死偷线,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沽甥。 我是一名探鬼主播声邦,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摆舟!你這毒婦竟也來(lái)了翔忽?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤盏檐,失蹤者是張志新(化名)和其女友劉穎歇式,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體胡野,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡材失,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硫豆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龙巨。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡笼呆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旨别,到底是詐尸還是另有隱情诗赌,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布秸弛,位于F島的核電站铭若,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏递览。R本人自食惡果不足惜叼屠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绞铃。 院中可真熱鬧镜雨,春花似錦、人聲如沸儿捧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)菲盾。三九已至西剥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亿汞,已是汗流浹背瞭空。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疗我,地道東北人咆畏。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吴裤,于是被迫代替她去往敵國(guó)和親旧找。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容