朴素贝叶斯原理及实现
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                朴素贝叶斯原理及实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                
                            
                            
                            一、理論基礎(chǔ)
 
(一)樸素貝葉斯定理
 
而P(X)對(duì)于所有的CI都是相等的,且假設(shè)X的各個(gè)屬性之間是獨(dú)立的(樸素假設(shè)),則可得:
 
 
 
即符合X特征變量的類別Ci的后驗(yàn)概率可由上述公式計(jì)算出來(lái),然后比較各個(gè)Ci的大小,最大的那個(gè)類別即最有可能發(fā)生的。
(二)示例 1、訓(xùn)練數(shù)據(jù)
 
 
 
2、需要預(yù)測(cè)的數(shù)據(jù)為 X={age=youth,income=medium,student=yes,credit_rating} 計(jì)算此用戶購(gòu)買computer的可能性。 3、計(jì)算為YES的概念 (1)購(gòu)買用戶的總概率。從表中可見14人中有9個(gè)購(gòu)買了電腦,因此概率為:
(2)在購(gòu)買用戶的9人中符合X特征中的age=youth的有2人,比例為:
 
 
 
(3)在購(gòu)買用戶的9人中符合X特征中的income=medium的有4人,比例為:
 
 
 
(4)在購(gòu)買用戶的9人中符合X特征中的student=yes的有6人,比例為
 
 
 
(5)在購(gòu)買用戶的9人中符合X特征中的credit_rating的有6人,比例為
 
 
 
根據(jù)樸素貝葉斯定理,
 
 
 
其中:
 
 
 
P(X)對(duì)所有分類都相等 符合X={age=youth,income=medium,student=yes,credit_rating}的情況下,Ci={buys_computer=yes}的后驗(yàn)熬概率為:
3、使用同樣的方法,可以計(jì)算出符 合X的情況下,Cj=(buys_computer=no)的后驗(yàn)概率為:
 
 
 
4、結(jié)論:由上面的計(jì)算結(jié)果可知,樸素貝葉斯分類預(yù)測(cè)元組X的類為buy_computer=yes。
 
 
(三)三種常見的模型
伯努利模型中,條件概率P(xi|yk)的計(jì)算方式是:
當(dāng)特征值xi為1時(shí),P(xi|yk)=P(xi=1|yk);
當(dāng)特征值xi為0時(shí),P(xi|yk)=1?P(xi=1|yk);
 
 
P(yk)=Nyk+αN+kα
N是總的樣本個(gè)數(shù),k是總的類別個(gè)數(shù),Nyk是類別為yk的樣本個(gè)數(shù),α是平滑值。
P(xi|yk)=Nyk,xi+αNyk+nα
Nyk是類別為yk的樣本個(gè)數(shù),n是特征的維數(shù),Nyk,xi是類別為yk的樣本中,第i維特征的值是xi的樣本個(gè)數(shù),α是平滑值。
當(dāng)α=1時(shí),稱作Laplace平滑,當(dāng)0<α<1時(shí),稱作Lidstone平滑,α=0時(shí)不做平滑。
如果不做平滑,當(dāng)某一維特征的值xi沒在訓(xùn)練樣本中出現(xiàn)過時(shí),會(huì)導(dǎo)致P(xi|yk)=0,從而導(dǎo)致后驗(yàn)概率為0。加上平滑就可以克服這個(gè)問題。
 
 
 
下面是一組人類身體特征的統(tǒng)計(jì)資料。 性別 身高(英尺) 體重(磅) 腳掌(英寸) 男 6 180 12 男 5.92 190 11 男 5.58 170 12 男 5.92 165 10 女 5 100 6 女 5.5 150 8 女 5.42 130 7 女 5.75 150 9 已知某人身高6英尺、體重130磅,腳掌8英寸,請(qǐng)問該人是男是女? 根據(jù)樸素貝葉斯分類器,計(jì)算下面這個(gè)式子的值。 P(身高|性別) x P(體重|性別) x P(腳掌|性別) x P(性別) 這里的困難在于,由于身高、體重、腳掌都是連續(xù)變量,不能采用離散變量的方法計(jì)算概率。而且由于樣本太少,所以也無(wú)法分成區(qū)間計(jì)算。怎么辦? 這時(shí),可以假設(shè)男性和女性的身高、體重、腳掌都是正態(tài)分布,通過樣本計(jì)算出均值和方差,也就是得到正態(tài)分布的密度函數(shù)。有了密度函數(shù),就可以把值代入,算出某一點(diǎn)的密度函數(shù)的值。 比如,男性的身高是均值5.855、方差0.035的正態(tài)分布。所以,男性的身高為6英尺的概率的相對(duì)值等于1.5789(大于1并沒有關(guān)系,因?yàn)檫@里是密度函數(shù)的值,只用來(lái)反映各個(gè)值的相對(duì)可能性)。
對(duì)于腳掌和體重同樣可以計(jì)算其均值與方差。有了這些數(shù)據(jù)以后,就可以計(jì)算性別的分類了。
P(身高=6|男) x P(體重=130|男) x P(腳掌=8|男) x P(男) = 6.1984 x e-9 P(身高=6|女) x P(體重=130|女) x P(腳掌=8|女) x P(女) = 5.3778 x e-4 1 2 3 4 1 2 3 4 可以看到,女性的概率比男性要高出將近10000倍,所以判斷該人為女性。
 
 
P(xi|yk)=12πσ2yk,i√e?(xi?μyk,i)22σ2yk,i
μyk,i表示類別為yk的樣本中,第i維特征的均值。 σ2yk,i表示類別為yk的樣本中,第i維特征的方差。
 
 
4、簡(jiǎn)單總結(jié)
(1)多項(xiàng)式模型:適用于屬性值為有限的多個(gè)數(shù)值的情況,如收入分為高中低三個(gè)層次。
(2)高斯模型:適用于屬性值為連續(xù)的情況,如收入的具體數(shù)值,觀看某個(gè)電視劇的次數(shù)等。當(dāng)然也可以將這些值劃分到一定的區(qū)間,然后使用多項(xiàng)式模型,但這樣就沒這么精確了。
(3)伯努利模型:適用于屬性值只是2個(gè)的情況。如性別作為標(biāo)簽,值只是男和女。其實(shí)這只是一種特殊的二項(xiàng)式。
(4)如果一個(gè)訓(xùn)練集數(shù)據(jù)足夠多且是高斯分布的話;利用多項(xiàng)式分布進(jìn)行訓(xùn)練的話,訓(xùn)練出的模型會(huì)逼近高斯分布。也就是說(shuō)數(shù)據(jù)量大大多于屬性值的數(shù)量時(shí),完全可以用多項(xiàng)式模型代替高斯模型。這是spark mllib目前未實(shí)現(xiàn)高斯分布的一個(gè)原因。另一個(gè)可能的原因是數(shù)據(jù)分布在各個(gè)節(jié)點(diǎn),無(wú)法算方差,最終還是要落在一個(gè)節(jié)點(diǎn)上進(jìn)行計(jì)算。
 
 
二、spark實(shí)現(xiàn) (一)二項(xiàng)式及多項(xiàng)式模型1、訓(xùn)練數(shù)據(jù)
說(shuō)明: (1)樸素貝葉斯要求各個(gè)屬性間是獨(dú)立的,但事實(shí)上這些數(shù)據(jù)的屬性是不獨(dú)立的,比如年齡和是否學(xué)生就不是獨(dú)立的屬性。這里只是作為一個(gè)示例 (2)上述屬性中,是否學(xué)生符合伯努利模型,其余3個(gè)屬性均符合二項(xiàng)式模型。
 
 
三、spark mllib?API使用
 
 
 
 
 
 
 
 
 
 
 
 
                            
                        
                        
                        簡(jiǎn)單的說(shuō):一個(gè)樣本屬于某個(gè)類別的概率是:這個(gè)類別出現(xiàn)的概率 * 已知這個(gè)類別出現(xiàn)的情況下各個(gè)屬性出現(xiàn)的概率的乘積
根據(jù)貝葉斯定理,事件X發(fā)生時(shí),類別Ci發(fā)生的后驗(yàn)概率為:
而P(X)對(duì)于所有的CI都是相等的,且假設(shè)X的各個(gè)屬性之間是獨(dú)立的(樸素假設(shè)),則可得:
即符合X特征變量的類別Ci的后驗(yàn)概率可由上述公式計(jì)算出來(lái),然后比較各個(gè)Ci的大小,最大的那個(gè)類別即最有可能發(fā)生的。
(二)示例 1、訓(xùn)練數(shù)據(jù)
2、需要預(yù)測(cè)的數(shù)據(jù)為 X={age=youth,income=medium,student=yes,credit_rating} 計(jì)算此用戶購(gòu)買computer的可能性。 3、計(jì)算為YES的概念 (1)購(gòu)買用戶的總概率。從表中可見14人中有9個(gè)購(gòu)買了電腦,因此概率為:
(2)在購(gòu)買用戶的9人中符合X特征中的age=youth的有2人,比例為:
(3)在購(gòu)買用戶的9人中符合X特征中的income=medium的有4人,比例為:
(4)在購(gòu)買用戶的9人中符合X特征中的student=yes的有6人,比例為
(5)在購(gòu)買用戶的9人中符合X特征中的credit_rating的有6人,比例為
根據(jù)樸素貝葉斯定理,
其中:
P(X)對(duì)所有分類都相等 符合X={age=youth,income=medium,student=yes,credit_rating}的情況下,Ci={buys_computer=yes}的后驗(yàn)熬概率為:
3、使用同樣的方法,可以計(jì)算出符 合X的情況下,Cj=(buys_computer=no)的后驗(yàn)概率為:
4、結(jié)論:由上面的計(jì)算結(jié)果可知,樸素貝葉斯分類預(yù)測(cè)元組X的類為buy_computer=yes。
(三)三種常見的模型
1、伯努利模型
與多項(xiàng)式模型一樣,伯努利模型適用于離散特征的情況,所不同的是,伯努利模型中每個(gè)特征的取值只能是1和0(以文本分類為例,某個(gè)單詞在文檔中出現(xiàn)過,則其特征值為1,否則為0).伯努利模型中,條件概率P(xi|yk)的計(jì)算方式是:
當(dāng)特征值xi為1時(shí),P(xi|yk)=P(xi=1|yk);
當(dāng)特征值xi為0時(shí),P(xi|yk)=1?P(xi=1|yk);
2、多項(xiàng)式模型
當(dāng)特征是離散的時(shí)候,使用多項(xiàng)式模型。多項(xiàng)式模型在計(jì)算先驗(yàn)概率P(yk)和條件概率P(xi|yk)時(shí),會(huì)做一些平滑處理,具體公式為:P(yk)=Nyk+αN+kα
N是總的樣本個(gè)數(shù),k是總的類別個(gè)數(shù),Nyk是類別為yk的樣本個(gè)數(shù),α是平滑值。
P(xi|yk)=Nyk,xi+αNyk+nα
Nyk是類別為yk的樣本個(gè)數(shù),n是特征的維數(shù),Nyk,xi是類別為yk的樣本中,第i維特征的值是xi的樣本個(gè)數(shù),α是平滑值。
當(dāng)α=1時(shí),稱作Laplace平滑,當(dāng)0<α<1時(shí),稱作Lidstone平滑,α=0時(shí)不做平滑。
如果不做平滑,當(dāng)某一維特征的值xi沒在訓(xùn)練樣本中出現(xiàn)過時(shí),會(huì)導(dǎo)致P(xi|yk)=0,從而導(dǎo)致后驗(yàn)概率為0。加上平滑就可以克服這個(gè)問題。
3、高斯模型
當(dāng)特征是連續(xù)變量的時(shí)候,運(yùn)用多項(xiàng)式模型就會(huì)導(dǎo)致很多P(xi|yk)=0(不做平滑的情況下),此時(shí)即使做平滑,所得到的條件概率也難以描述真實(shí)情況。所以處理連續(xù)的特征變量,應(yīng)該采用高斯模型。下面是一組人類身體特征的統(tǒng)計(jì)資料。 性別 身高(英尺) 體重(磅) 腳掌(英寸) 男 6 180 12 男 5.92 190 11 男 5.58 170 12 男 5.92 165 10 女 5 100 6 女 5.5 150 8 女 5.42 130 7 女 5.75 150 9 已知某人身高6英尺、體重130磅,腳掌8英寸,請(qǐng)問該人是男是女? 根據(jù)樸素貝葉斯分類器,計(jì)算下面這個(gè)式子的值。 P(身高|性別) x P(體重|性別) x P(腳掌|性別) x P(性別) 這里的困難在于,由于身高、體重、腳掌都是連續(xù)變量,不能采用離散變量的方法計(jì)算概率。而且由于樣本太少,所以也無(wú)法分成區(qū)間計(jì)算。怎么辦? 這時(shí),可以假設(shè)男性和女性的身高、體重、腳掌都是正態(tài)分布,通過樣本計(jì)算出均值和方差,也就是得到正態(tài)分布的密度函數(shù)。有了密度函數(shù),就可以把值代入,算出某一點(diǎn)的密度函數(shù)的值。 比如,男性的身高是均值5.855、方差0.035的正態(tài)分布。所以,男性的身高為6英尺的概率的相對(duì)值等于1.5789(大于1并沒有關(guān)系,因?yàn)檫@里是密度函數(shù)的值,只用來(lái)反映各個(gè)值的相對(duì)可能性)。
對(duì)于腳掌和體重同樣可以計(jì)算其均值與方差。有了這些數(shù)據(jù)以后,就可以計(jì)算性別的分類了。
P(身高=6|男) x P(體重=130|男) x P(腳掌=8|男) x P(男) = 6.1984 x e-9 P(身高=6|女) x P(體重=130|女) x P(腳掌=8|女) x P(女) = 5.3778 x e-4 1 2 3 4 1 2 3 4 可以看到,女性的概率比男性要高出將近10000倍,所以判斷該人為女性。
- 總結(jié)
 
P(xi|yk)=12πσ2yk,i√e?(xi?μyk,i)22σ2yk,i
μyk,i表示類別為yk的樣本中,第i維特征的均值。 σ2yk,i表示類別為yk的樣本中,第i維特征的方差。
4、簡(jiǎn)單總結(jié)
(1)多項(xiàng)式模型:適用于屬性值為有限的多個(gè)數(shù)值的情況,如收入分為高中低三個(gè)層次。
(2)高斯模型:適用于屬性值為連續(xù)的情況,如收入的具體數(shù)值,觀看某個(gè)電視劇的次數(shù)等。當(dāng)然也可以將這些值劃分到一定的區(qū)間,然后使用多項(xiàng)式模型,但這樣就沒這么精確了。
(3)伯努利模型:適用于屬性值只是2個(gè)的情況。如性別作為標(biāo)簽,值只是男和女。其實(shí)這只是一種特殊的二項(xiàng)式。
(4)如果一個(gè)訓(xùn)練集數(shù)據(jù)足夠多且是高斯分布的話;利用多項(xiàng)式分布進(jìn)行訓(xùn)練的話,訓(xùn)練出的模型會(huì)逼近高斯分布。也就是說(shuō)數(shù)據(jù)量大大多于屬性值的數(shù)量時(shí),完全可以用多項(xiàng)式模型代替高斯模型。這是spark mllib目前未實(shí)現(xiàn)高斯分布的一個(gè)原因。另一個(gè)可能的原因是數(shù)據(jù)分布在各個(gè)節(jié)點(diǎn),無(wú)法算方差,最終還是要落在一個(gè)節(jié)點(diǎn)上進(jìn)行計(jì)算。
二、spark實(shí)現(xiàn) (一)二項(xiàng)式及多項(xiàng)式模型1、訓(xùn)練數(shù)據(jù)
說(shuō)明: (1)樸素貝葉斯要求各個(gè)屬性間是獨(dú)立的,但事實(shí)上這些數(shù)據(jù)的屬性是不獨(dú)立的,比如年齡和是否學(xué)生就不是獨(dú)立的屬性。這里只是作為一個(gè)示例 (2)上述屬性中,是否學(xué)生符合伯努利模型,其余3個(gè)屬性均符合二項(xiàng)式模型。
三、spark mllib?API使用
總結(jié)
以上是生活随笔為你收集整理的朴素贝叶斯原理及实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: spark 调度模块详解及源码分析
 - 下一篇: spark提交应用的全流程分析