前言:在所有的機(jī)器學(xué)習(xí)分類算法中,樸素貝葉斯和其他絕大多數(shù)的分類算法都不同涂圆。對(duì)于大多數(shù)的分類算法们镜,比如決策樹,KNN乘综,邏輯回歸憎账,支持向量機(jī)等套硼,他們都是判別方法卡辰,也就是直接學(xué)習(xí)出特征輸出Y和特征X之間的關(guān)系,要么是決策函數(shù)Y=f(X),要么是條件分布P(Y|X)九妈。但是樸素貝葉斯卻是生成方法反砌,也就是直接找出特征輸出Y和特征X的聯(lián)合分布,然后用P(Y|X)=P(X,Y)/P(X)得出萌朱。
? ? 樸素貝葉斯很直觀宴树,計(jì)算量也不大,在很多領(lǐng)域有廣泛的應(yīng)用晶疼。
1. 樸素貝葉斯分類
? ? 在給出貝葉斯公式之前先介紹一下貝葉斯學(xué)派。
????貝葉斯學(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)概率就是我們對(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ú)立牡辽,則有: P(X,Y) = P(X)P(Y)
我們接著看看條件概率公式:P(Y|X) = P(X,Y)/P(X)? P(X|Y)=P(X,Y)/P(Y)
下面給出幾個(gè)貝葉斯的基本概念:
先驗(yàn)概率P(A):在不考慮任何情況下,A事件發(fā)生的概率敞临。
注意:1)先驗(yàn)概率是已經(jīng)給定的态辛。
? ? ? ? ? ?2)根據(jù)歷史統(tǒng)計(jì)出來的
條件概率P(B|A):A事件發(fā)生的情況下,B事件發(fā)生的概率挺尿。
后驗(yàn)概率P(A|B):在B事件發(fā)生之后奏黑,對(duì)A事件發(fā)生的概率的重新評(píng)估炊邦。
全概率:如果A和A'構(gòu)成樣本空間的一個(gè)劃分,那么事件B的概率為:A和A'的概 率分別乘以B對(duì)這兩個(gè)事件的概率之和熟史。
樸素貝葉斯分類算法的核心是什么馁害?
下面是貝葉斯公式,換個(gè)通俗易懂的表達(dá)式蹂匹。
碘菜,我們最終出P(類別|特征)即可!
? ? 算法思想:基于概率預(yù)測
邏輯回歸通過擬合曲線(或者學(xué)習(xí)超平面)實(shí)現(xiàn)分類限寞,決策樹通過尋找最佳劃分特征進(jìn)而學(xué)習(xí)樣本路徑實(shí)現(xiàn)分類忍啸,支持向量機(jī)通過尋找分類超平面進(jìn)而最大化類別間隔實(shí)現(xiàn)分類。相比之下履植,樸素貝葉斯獨(dú)辟蹊徑吊骤,通過考慮特征概率來預(yù)測分類。
2. 樸素貝葉斯的類型
樸素貝葉斯按照數(shù)據(jù)的先驗(yàn)概率的不同可以分為高斯樸素貝葉斯静尼,伯努利樸素貝葉斯白粉,多項(xiàng)式樸素貝葉斯。
1. 高斯樸素貝葉斯
Gaussian Naive Bayes是指當(dāng)特征屬性為連續(xù)值時(shí)鼠渺,而且分布服從高斯分布鸭巴,那么在計(jì)算P(x|y)的時(shí)候可以直接使用高斯分布的概率分布:
因此只需要計(jì)算出各個(gè)類別中此特征劃分的各個(gè)均值和標(biāo)準(zhǔn)差。
2. 伯努利樸素貝葉斯
Bernoulli Naive Bayes是指當(dāng)特征屬性為連續(xù)值時(shí)拦盹,而且分布服從伯努利分布鹃祖,那么在計(jì)算P(x|y)的時(shí)候可以直接使用伯努利分布的概率分布公式:
伯努利分布是一種離散分布,只有兩種可能的結(jié)果普舆。1表示成功恬口,出現(xiàn)的概率為p;0表示失敗沼侣,出現(xiàn)的概率為q=1-p祖能;其中均值為E(x)=p,方差為Var(X)=p(1-p)
3. 多項(xiàng)式樸素貝葉斯
Multinomial Naive Bayes是指當(dāng)特征屬性服從多項(xiàng)分布,從而蛾洛,對(duì)于每個(gè)類別 y养铸,參數(shù)為θy=(θy1,θy2,...,θyn),其中n為特征屬性數(shù)目轧膘,那么P(xi|y)的概率為θyi.
api 介紹:
? ? 樸素貝葉斯是一類比較簡單的算法钞螟,scikit-learn中樸素貝葉斯類庫的使用也比較簡單。相對(duì)于決策樹谎碍,KNN之類的算法鳞滨,樸素貝葉斯需要關(guān)注的參數(shù)是比較少的,這樣也比較容易掌握蟆淀。在scikit-learn中拯啦,一共有3個(gè)樸素貝葉斯的分類算法類闽晦。分別是GaussianNB,MultinomialNB和BernoulliNB提岔。其中GaussianNB就是先驗(yàn)為高斯分布的樸素貝葉斯,MultinomialNB就是先驗(yàn)為多項(xiàng)式分布的樸素貝葉斯笋敞,而BernoulliNB就是先驗(yàn)為伯努利分布的樸素貝葉斯碱蒙。
? ? 這三個(gè)類使用的分類場景各不相同,一般來說夯巷,如果樣本特征的分布大部分是連續(xù)值赛惩,使用GaussianNB會(huì)比較好。如果樣本特征的分大部分是多元離散值趁餐,使用MultinomialNB比較合適喷兼。而如果樣本特征是二元離散值或者和稀疏的多元離散值,應(yīng)該使用BernoulliNB后雷。
????在使用GaussianNB的fit方法擬合數(shù)據(jù)后季惯,我們可以進(jìn)行預(yù)測。此時(shí)預(yù)測有三種方法臀突,包括predict勉抓,predict_log_proba和predict_proba。
predict方法就是我們最常用的預(yù)測方法候学,直接給出測試集的預(yù)測類別輸出藕筋。
predict_proba則不同,它會(huì)給出測試集樣本在各個(gè)類別上預(yù)測的概率梳码。容易理解隐圾,predict_proba預(yù)測出的各個(gè)類別概率里的最大值對(duì)應(yīng)的類別,也就是predict方法得到類別掰茶。
predict_log_proba和predict_proba類似暇藏,它會(huì)給出測試集樣本在各個(gè)類別上預(yù)測的概率的一個(gè)對(duì)數(shù)轉(zhuǎn)化。轉(zhuǎn)化后predict_log_proba預(yù)測出的各個(gè)類別對(duì)數(shù)概率里的最大值對(duì)應(yīng)的類別濒蒋,也就是predict方法得到類別叨咖。
3. 拉普拉斯平滑
????為了解決零概率的問題,法國數(shù)學(xué)家拉普拉斯最早提出用加1的方法估計(jì)沒有出現(xiàn)過的現(xiàn)象的概率啊胶,所以加法平滑也叫做拉普拉斯平滑甸各。假定訓(xùn)練樣本很大時(shí),每個(gè)分量x的計(jì)數(shù)加1造成的估計(jì)概率變化可以忽略不計(jì)焰坪,但可以方便有效的避免零概率問題
? ? 對(duì)于離散的特征趣倾,我們還要考慮后驗(yàn)條件概率等于0的情況,因?yàn)檫@樣的情況可能會(huì)帶來較大偏差某饰。比如儒恋,當(dāng)輸入的數(shù)據(jù)某個(gè)特征出現(xiàn)了一個(gè)訓(xùn)練集中沒有出現(xiàn)的值善绎,那么此時(shí)的條件概率=0。然而不管其他特征值再這個(gè)
中出現(xiàn)了多少次诫尽,這個(gè)數(shù)據(jù)點(diǎn)都不再屬于
禀酱。這就好像一個(gè)從來都只看過鳥在天上飛的人,突然有一天看到了一只在地上走的鳥牧嫉,不管它的其它特征多么像鳥剂跟,這個(gè)人都斷定所看到的的絕對(duì)不是鳥。為了避免這種莫名其妙的變化酣藻,我們需要讓概率值“平滑”一些曹洽,寧愿這個(gè)值很小也不要讓它是0。這就要用到下列的拉普拉斯平滑來估計(jì)后驗(yàn)概率:
辽剧,其中
表示訓(xùn)練集中
可能的取值數(shù)送淆,
是一個(gè)玄學(xué)參數(shù),取0時(shí)上式就是極大似然估計(jì)怕轿,所以通常取1.
4. 樸素貝葉斯分類的優(yōu)缺點(diǎn)
優(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ù)不太敏感,算法也比較簡單渡紫,常用于文本分類到推。
缺點(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ù)測效果不佳哥捕。
3)由于我們是通過先驗(yàn)和數(shù)據(jù)來決定后驗(yàn)的概率從而決定分類牧抽,所以分類決策存在一定的錯(cuò)誤率。
4)對(duì)輸入數(shù)據(jù)的表達(dá)形式很敏感遥赚。
適用場景:文本分類扬舒。