樸素貝葉斯很直觀,計(jì)算量也不大,在很多領(lǐng)域有廣泛的應(yīng)用择同,這里我們就對(duì)樸素貝葉斯算法原理做一個(gè)小結(jié)赁濒。
- 樸素貝葉斯相關(guān)的統(tǒng)計(jì)學(xué)知識(shí)
在了解樸素貝葉斯的算法之前轨奄,我們需要對(duì)相關(guān)必須的統(tǒng)計(jì)學(xué)知識(shí)做一個(gè)回顧。
貝葉斯學(xué)派很古老拒炎,但是從誕生到一百年前一直不是主流挪拟。主流是頻率學(xué)派。頻率學(xué)派的權(quán)威皮爾遜和費(fèi)歇爾都對(duì)貝葉斯學(xué)派不屑一顧击你,但是貝葉斯學(xué)派硬是憑借在現(xiàn)代特定領(lǐng)域的出色應(yīng)用表現(xiàn)為自己贏得了半壁江山玉组。
貝葉斯學(xué)派的思想可以概括為先驗(yàn)概率+數(shù)據(jù)=后驗(yàn)概率。也就是說我們?cè)趯?shí)際問題中需要得到的后驗(yàn)概率丁侄,可以通過先驗(yàn)概率和數(shù)據(jù)一起綜合得到惯雳。數(shù)據(jù)大家好理解,被頻率學(xué)派攻擊的是先驗(yàn)概率鸿摇,一般來說先驗(yàn)概率就是我們對(duì)于數(shù)據(jù)所在領(lǐng)域的歷史經(jīng)驗(yàn)石景,但是這個(gè)經(jīng)驗(yàn)常常難以量化或者模型化,于是貝葉斯學(xué)派大膽的假設(shè)先驗(yàn)分布的模型户辱,比如正態(tài)分布鸵钝,beta分布等。這個(gè)假設(shè)一般沒有特定的依據(jù)庐镐,因此一直被頻率學(xué)派認(rèn)為很荒謬恩商。雖然難以從嚴(yán)密的數(shù)學(xué)邏輯里推出貝葉斯學(xué)派的邏輯,但是在很多實(shí)際應(yīng)用中必逆,貝葉斯理論很好用怠堪,比如垃圾郵件分類揽乱,文本分類。
我們先看看條件獨(dú)立公式粟矿,如果X和Y相互獨(dú)立凰棉,則有:
而條件概率公式:
或者說:
那么,全概率公式:
其中,
從而陌粹,很容易得出貝葉斯公式:
2.樸素貝葉斯的模型
從統(tǒng)計(jì)學(xué)知識(shí)回到我們的數(shù)據(jù)分析撒犀。假如我們的分類模型樣本是:
即我們有m個(gè)樣本,每個(gè)樣本有n個(gè)特征掏秩,特征輸出有K個(gè)類別或舞,定義為。
從樣本我們可以學(xué)習(xí)得到樸素貝葉斯的先驗(yàn)分布,接著學(xué)習(xí)到條件概率分布,然后我們就可以用貝葉斯公式得到X和Y的聯(lián)合分布P(X,Y)了蒙幻。聯(lián)合分布P(X,Y)定義為:
從上面的式子可以看出比較容易通過最大似然法求出映凳,得到的就是類別在訓(xùn)練集里面出現(xiàn)的頻數(shù)。但是很難求出,這是一個(gè)超級(jí)復(fù)雜的有n個(gè)維度的條件分布邮破。樸素貝葉斯模型在這里做了一個(gè)大膽的假設(shè)诈豌,即X的n個(gè)維度之間相互獨(dú)立,這樣就可以得出:
從上式可以看出抒和,這個(gè)很難的條件分布大大的簡(jiǎn)化了矫渔,但是這也可能帶來預(yù)測(cè)的不準(zhǔn)確性。你會(huì)說如果我的特征之間非常不獨(dú)立怎么辦构诚?如果真是非常不獨(dú)立的話蚌斩,那就盡量不要使用樸素貝葉斯模型了铆惑,考慮使用其他的分類方法比較好范嘱。但是一般情況下,樣本的特征之間獨(dú)立這個(gè)條件的確是弱成立的员魏,尤其是數(shù)據(jù)量非常大的時(shí)候丑蛤。雖然我們犧牲了準(zhǔn)確性,但是得到的好處是模型的條件分布的計(jì)算大大簡(jiǎn)化了撕阎,這就是貝葉斯模型的選擇受裹。
最后回到我們要解決的問題,我們的問題是給定測(cè)試集的一個(gè)新樣本特征虏束,我們?nèi)绾闻袛嗨鼘儆谀膫€(gè)類型棉饶?
既然是貝葉斯模型,當(dāng)然是后驗(yàn)概率最大化來判斷分類了镇匀。我們只要計(jì)算出所有的K個(gè)條件概率,然后找出最大的條件概率對(duì)應(yīng)的類別照藻,這就是樸素貝葉斯的預(yù)測(cè)了。
- 樸素貝葉斯的推斷過程
上節(jié)我們已經(jīng)對(duì)樸素貝葉斯的模型也預(yù)測(cè)方法做了一個(gè)大概的解釋汗侵,這里我們對(duì)樸素貝葉斯的推斷過程做一個(gè)完整的詮釋過程幸缕。
我們預(yù)測(cè)的類別是使最大化的類別群发,數(shù)學(xué)表達(dá)式為:
由于對(duì)于所有的類別計(jì)算時(shí),上式的分母是一樣的发乔,都是熟妓,因此,我們的預(yù)測(cè)公式可以簡(jiǎn)化為:
接著我們利用樸素貝葉斯的獨(dú)立性假設(shè)栏尚,就可以得到通常意義上的樸素貝葉斯推斷公式:
- 樸素貝葉斯的參數(shù)估計(jì)
在上一節(jié)中起愈,我們知道只要求出和,我們通過比較就可以得到樸素貝葉斯的推斷結(jié)果译仗。這一節(jié)我們就討論怎么通過訓(xùn)練集計(jì)算這兩個(gè)概率告材。
對(duì)于比較簡(jiǎn)單,通過極大似然估計(jì)我們很容易得到為樣本類別出現(xiàn)的頻率古劲,即樣本類別出現(xiàn)的次數(shù)除以樣本總數(shù)m斥赋。
對(duì)于,這個(gè)取決于我們的先驗(yàn)條件:
a) 如果我們的是離散的值,那么我們可以假設(shè)符合多項(xiàng)式分布产艾,這樣得到 是在樣本類別中疤剑,出現(xiàn)的頻率。即:
其中為樣本類別出現(xiàn)的次數(shù)闷堡,而為類別為的樣本中隘膘,第j維特征出現(xiàn)的次數(shù)。
某些時(shí)候杠览,可能某些類別在樣本中沒有出現(xiàn)弯菊,這樣可能導(dǎo)致為0,這樣會(huì)影響后驗(yàn)的估計(jì)踱阿,為了解決這種情況管钳,我們引入了拉普拉斯平滑,即此時(shí)有:
其中 為一個(gè)大于0的常數(shù)软舌,常常取為1才漆。
b)如果我們我們的是非常稀疏的離散值,即各個(gè)特征出現(xiàn)概率很低佛点,這時(shí)我們可以假設(shè)符合伯努利分布醇滥,即特征出現(xiàn)記為1,不出現(xiàn)記為0超营。即只要出現(xiàn)即可鸳玩,我們不關(guān)注的次數(shù)。這樣得到 是在樣本類別中演闭,出現(xiàn)的頻率不跟。此時(shí)有:
其中,取值為0和1船响。
c)如果我們我們的是連續(xù)值躬拢,我們通常取的先驗(yàn)概率為正態(tài)分布躲履,即在樣本類別中,的值符合正態(tài)分布聊闯。這樣的概率分布是:
其中和是正態(tài)分布的期望和方差工猜,可以通過極大似然估計(jì)求得。為在樣本類別中菱蔬,所有的平均值篷帅。為在樣本類別中,所有的方差拴泌。對(duì)于一個(gè)連續(xù)的樣本值魏身,帶入正態(tài)分布的公式,就可以求出概率分布了蚪腐。
- 樸素貝葉斯算法過程
我們假設(shè)訓(xùn)練集為m個(gè)樣本n個(gè)維度箭昵,如下:
共有K個(gè)特征輸出類別,分別為,每個(gè)特征輸出類別的樣本個(gè)數(shù)為,在第k個(gè)類別中回季,如果是離散特征家制,則特征各個(gè)類別取值為。其中l(wèi)取值為泡一,為特征j不同的取值數(shù)颤殴。
輸出為實(shí)例的分類。
算法流程如下:
如果沒有Y的先驗(yàn)概率鼻忠,則計(jì)算Y的K個(gè)先驗(yàn)概率:涵但,否則為輸入的先驗(yàn)概率。
分別計(jì)算第k個(gè)類別的第j維特征的第l個(gè)個(gè)取值條件概率:
a)如果是離散值:
可以取值為1帖蔓,或者其他大于0的數(shù)字矮瘟。
b)如果是稀疏二項(xiàng)離散值:
此時(shí)只有兩種取值。
c)如果是連續(xù)值不需要計(jì)算各個(gè)l的取值概率讨阻,直接求正態(tài)分布的參數(shù):
需要求出和芥永。 為在樣本類別中篡殷,所有的平均值钝吮。為在樣本類別中,所有的方差板辽。
3)對(duì)于實(shí)例奇瘦,分別計(jì)算:
4)確定實(shí)例的分類
從上面的計(jì)算可以看出,沒有復(fù)雜的求導(dǎo)和矩陣運(yùn)算劲弦,因此效率很高耳标。
- 樸素貝葉斯算法小結(jié)
樸素貝葉斯算法的主要原理基本已經(jīng)做了總結(jié),這里對(duì)樸素貝葉斯的優(yōu)缺點(diǎn)做一個(gè)總結(jié)邑跪。
樸素貝葉斯的主要優(yōu)點(diǎn)有:
1)樸素貝葉斯模型發(fā)源于古典數(shù)學(xué)理論次坡,有穩(wěn)定的分類效率呼猪。
2)對(duì)小規(guī)模的數(shù)據(jù)表現(xiàn)很好,能個(gè)處理多分類任務(wù)砸琅,適合增量式訓(xùn)練宋距,尤其是數(shù)據(jù)量超出內(nèi)存時(shí),我們可以一批批的去增量訓(xùn)練症脂。
3)對(duì)缺失數(shù)據(jù)不太敏感谚赎,算法也比較簡(jiǎn)單,常用于文本分類诱篷。
樸素貝葉斯的主要缺點(diǎn)有:
1) 理論上壶唤,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實(shí)際上并非總是如此棕所,這是因?yàn)闃闼刎惾~斯模型假設(shè)屬性之間相互獨(dú)立闸盔,這個(gè)假設(shè)在實(shí)際應(yīng)用中往往是不成立的,在屬性個(gè)數(shù)比較多或者屬性之間相關(guān)性較大時(shí)琳省,分類效果不好蕾殴。而在屬性相關(guān)性較小時(shí),樸素貝葉斯性能最為良好岛啸。對(duì)于這一點(diǎn)钓觉,有半樸素貝葉斯之類的算法通過考慮部分關(guān)聯(lián)性適度改進(jìn)。
2)需要知道先驗(yàn)概率坚踩,且先驗(yàn)概率很多時(shí)候取決于假設(shè)荡灾,假設(shè)的模型可以有很多種,因此在某些時(shí)候會(huì)由于假設(shè)的先驗(yàn)?zāi)P偷脑驅(qū)е骂A(yù)測(cè)效果不佳瞬铸。
3)由于我們是通過先驗(yàn)和數(shù)據(jù)來決定后驗(yàn)的概率從而決定分類批幌,所以分類決策存在一定的錯(cuò)誤率。
4)對(duì)輸入數(shù)據(jù)的表達(dá)形式很敏感嗓节。
注:本文編輯轉(zhuǎn)載于云時(shí)之間荧缘,由于原文出現(xiàn)公式未在markdown環(huán)境下編輯,因此本文在其基礎(chǔ)上做一下簡(jiǎn)單改進(jìn)拦宣,對(duì)其工作表示衷心感謝截粗。
原文鏈接:http://www.reibang.com/p/163192c6a64e