Day9~10 第四章 樸素貝葉斯


1?樸素貝葉斯法的學(xué)習(xí)與分類

??樸素貝葉斯的思想是:對(duì)于給定的一個(gè)訓(xùn)練數(shù)據(jù)集冗懦,首先基于特征條件獨(dú)立假設(shè)學(xué)習(xí)輸入輸出的聯(lián)合概率分布爽冕;然后基于此模型,對(duì)給定的輸入 x披蕉,利用貝葉斯定理求出后驗(yàn)概率最大的輸出 y颈畸。由于樸素貝葉斯實(shí)際上是學(xué)習(xí)生成數(shù)據(jù)的機(jī)制乌奇,因此屬于生成模型

1.1?基本方法

??設(shè)輸入空間 \mathcal{X}\subseteq \mathbb{R}^n 眯娱,輸出空間為類標(biāo)記集合 \mathcal{Y}=\{c_1,c_2,\dots,c_K\}礁苗。輸入為特征向量 x\in\mathcal{X}, 輸出為類標(biāo)記 y\in\mathcal{Y}徙缴。X 是定義在輸入空間 \mathcal{X} 上的隨機(jī)向量试伙,Y 是定義在輸出空間 \mathcal{Y} 上的隨機(jī)變量。P(X,Y)XY 的聯(lián)合概率分布于样。訓(xùn)練數(shù)據(jù)集T=\{(x_1,y_1),(x_2,y_2),\dots ,(x_N,y_N)\}P(X,Y) 獨(dú)立同分布生成疏叨。
??先驗(yàn)概率分布P(Y=c_k),\quad k = 1,2,\dots K??條件概率分布P(X=x|Y=c_k)由于樸素貝葉斯對(duì)條件概率分布做了條件相互獨(dú)立的假設(shè)。因此有P(X=x|Y=c_k) = \prod\limits_{j=1}^n P\big(X^{(j)} = x^{(j)}|Y=c_k\big)
??后驗(yàn)概率計(jì)算根據(jù)貝葉斯定理進(jìn)行 (具體過程可參考李航《統(tǒng)計(jì)學(xué)習(xí)方法(第二版)):y=\arg\max\limits_{c_k} P(Y=c_k)\prod\limits_{j} P\big(X^{(j)} = x^{(j)}|Y=c_k\big)

??對(duì)于條件相互獨(dú)立的假設(shè)太強(qiáng)百宇,有半樸素貝葉斯之類的算法通過考慮部分關(guān)聯(lián)性適度改進(jìn)考廉,例如為了計(jì)算量不至于太大,我們假定每個(gè)屬性只依賴另外的一個(gè)屬性携御。解決特征之間的相關(guān)性昌粤,我們還可以使用主成分分析(PCA)的方法,去除特征相關(guān)性啄刹,再進(jìn)行樸素貝葉斯計(jì)算涮坐。

1.2?后驗(yàn)概率最大化的含義

??樸素貝葉斯將實(shí)例分到后驗(yàn)概率最大的類中等價(jià)于經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化。選則 0-1 損失函數(shù):L(Y,f(X)) = \left\{\begin{align} 1,&\ \ Y\neq f(X)\\ 0,&\ \ Y=f(X)\\ \end{align}\right.其中 f(X) 是分類決策函數(shù)誓军。結(jié)合聯(lián)合分布的條件期望袱讹,故經(jīng)驗(yàn)風(fēng)險(xiǎn)函數(shù)為R_{\text{exp}}(f)=E[L(Y,f(x))]=E_X\sum\limits_{k=1}^K [L(c_k,f(x))]P(c_k|X)為使經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化,只需對(duì) X=x 逐個(gè)極小化昵时,由此可得:\begin{align}L(Y,f(X)) &= \arg\min\limits_{y\in\mathcal{Y}}\sum\limits_{k=1}^K [L(c_k,y)]P(c_k|X=x)\\ &=\arg\min\limits_{y\in\mathcal{Y}}\sum\limits_{k=1}^K P(y\neq c_k|X=x)\\ &=\arg\min\limits_{y\in\mathcal{Y}}\big(1- P(y= c_k|X=x)\big)\\ &=\arg\max\limits_{y\in\mathcal{Y}}P(y= c_k|X=x)\\ \end{align}這樣一來捷雕,根據(jù)期望風(fēng)險(xiǎn)最小化準(zhǔn)則就得到了后驗(yàn)概率最大化準(zhǔn)則:f(x)=\arg\max\limits_{c_k}P(c_k|X=x)即樸素貝葉斯采用的原理

1.3?對(duì)看到的一個(gè)有關(guān)樸素貝葉斯假設(shè)分析的思考

??看到一篇文章說樸素貝葉斯的假設(shè)有兩條:
??1、自變量之間獨(dú)立
??2壹甥、連續(xù)型自變量關(guān)于因變量服從正態(tài)分布
??關(guān)鍵在于第二條救巷,這說明了樸素貝葉斯對(duì)自變量不服從正態(tài)分布的數(shù)據(jù)集擬合效果極差
??但是在我學(xué)習(xí)以及推導(dǎo)過程中并未發(fā)現(xiàn)該要求句柠,于是我就嘗試復(fù)刻了他的分析過程浦译,代碼是用數(shù)學(xué)軟件 matlab 編寫的:

(1)生成數(shù)據(jù)集并繪制散點(diǎn)圖

% 隨機(jī)生成一個(gè) [0,1] x [0,1] 上的 xy<0.25 類別為 1;yx>0.25 類別為 2 的數(shù)據(jù)集
x = (randi(101,500,1)-1)./100;
y = (randi(101,500,1)-1)./100;
z = zeros(500,1);

for i = 1:500
    if y(i)>0.2*sin(20*x(i))+0.5
        z(i) = 1;
    else
        z(i) = 2;
    end
end

% 繪制原數(shù)據(jù)散點(diǎn)圖 標(biāo)簽為1為紅色 標(biāo)簽為2為藍(lán)色
figure
hold on
ezplot('y=0.2*sin(20*x)+0.5');
title('{y}={0.2}{\times}{sin}({20}{\times}{x})+{0.5}')
set(gca,'Xlim',[-0.05,1.05]);
set(gca,'Ylim',[-0.05,1.05]);
gscatter(x,y,z,'br','o');
hold off
原始數(shù)據(jù)散點(diǎn)圖

(2)采用樸素貝葉斯法分類

nbGau = fitcnb([x,y], z);
nbGauResubErr = resubLoss(nbGau);

cp = cvpartition(z,'KFold',10);
nbGauCV = crossval(nbGau, 'CVPartition',cp);
nbGauCVErr = kfoldLoss(nbGauCV)

figure
hold on
ezplot('y=0.2*sin(20*x)+0.5');
title('{y}={0.2}{\times}{sin}({20}{\times}{x})+{0.5}')
set(gca,'Xlim',[-0.05,1.05]);
set(gca,'Ylim',[-0.05,1.05]);
labels = predict(nbGau, [x y]);
gscatter(x,y,labels,'br','o');
樸素貝葉斯分類結(jié)果

??可以看出和原文說的一樣分類效果確實(shí)不是很好溯职,但是在編寫的過程中我已經(jīng)發(fā)現(xiàn)問題了:這里的樸素貝葉斯是采用的先驗(yàn)為高斯分布(正態(tài)分布)的樸素貝葉斯精盅,這樣自然的對(duì)自變量不服從正態(tài)分布的數(shù)據(jù)集擬合效果會(huì)不好!
??那既然發(fā)現(xiàn)問題了谜酒,有沒有辦法解決呢叹俏?那當(dāng)然是有的!常見的樸素貝葉斯有以下幾種:
??1. GaussianNB
??先驗(yàn)為高斯分布(正態(tài)分布)的樸素貝葉斯甚带,適用于樣本特征的分布大部分為連續(xù)性她肯,其假定各個(gè)特征 x_i 在各個(gè)類別 y 下服從正態(tài)分布佳头。
??2. MutinomiaINB
??先驗(yàn)為多項(xiàng)式分布的樸素貝葉斯。描述各類樣本出現(xiàn)的次數(shù)或者出現(xiàn)次數(shù)的比例晴氨,常用于文本分類康嘉,特征表示的是次數(shù)。適用于樣本分布為多元離散值籽前。
??3. BernuoliNB
??先驗(yàn)為伯努利分布的樸素貝葉斯亭珍。假設(shè)特征為先驗(yàn)概率為二元伯努利分布。適用于樣本特征是二元離散值或者稀疏的多元離散值枝哄。

??不難發(fā)現(xiàn)肄梨,我們其實(shí)可以嘗試使用先驗(yàn)為多項(xiàng)式分布的 MutinomiaINB 來進(jìn)行學(xué)習(xí),代碼也只需設(shè)置 fitcnb 函數(shù)的先驗(yàn)分布參數(shù):

nbGau = fitcnb([x,y], z,'DistributionNames','mvmn');  %修改先驗(yàn)分布參數(shù)為 'mvmn' 
nbGauResubErr = resubLoss(nbGau);

cp = cvpartition(z,'KFold',10);
nbGauCV = crossval(nbGau, 'CVPartition',cp);
nbGauCVErr = kfoldLoss(nbGauCV)

figure
hold on
ezplot('y=0.2*sin(20*x)+0.5');
title('{y}={0.2}{\times}{sin}({20}{\times}{x})+{0.5}')
set(gca,'Xlim',[-0.05,1.05]);
set(gca,'Ylim',[-0.05,1.05]);
labels = predict(nbGau, [x y]);
gscatter(x,y,labels,'br','o');
3.jpg

??可以看到學(xué)習(xí)結(jié)果比之前明顯好了不少!這提醒我們挠锥,在使用樸素貝葉斯模型進(jìn)行學(xué)習(xí)的時(shí)候要考慮特征向量符合什么樣的先驗(yàn)分布众羡,這樣才能具有更好的分類效果。這一點(diǎn)不僅僅可以運(yùn)用在樸素貝葉斯上蓖租,對(duì)于其他的模型也是同理粱侣,只有考慮好了特征的分布性質(zhì),才能采用更加適合的模型進(jìn)行學(xué)習(xí)蓖宦!


2?樸素貝葉斯的參數(shù)估計(jì)以及算法

??在樸素貝葉斯法中齐婴,學(xué)習(xí)意味著估計(jì)先驗(yàn)概率 P(Y=c_k) 以及條件概率 P(X^{(j)}=x^{(j)}|Y=c_k)〕砻可以應(yīng)用極大似然估計(jì)法或者貝葉斯估計(jì)法估計(jì)相應(yīng)的概率柠偶。貝葉斯估計(jì)相較于極大似然估計(jì)的區(qū)別在于貝葉斯估計(jì)在隨機(jī)變量各個(gè)取值的頻數(shù)上賦予一個(gè)正數(shù) \lambda>0,當(dāng) \lambda = 0 時(shí)即為極大似然估計(jì)睬关。
??下面給出樸素貝葉斯的學(xué)習(xí)與分類算法诱担。
??算法 4.1 (樸素貝葉斯算法)
??輸入:訓(xùn)練數(shù)據(jù)集 T=\{ x_1,x_2,\dots, x_N\},其中 x_i = ( x_i^{( 1 )} , x_i^{(2)} , ? ? , x_i^{(k)})^T电爹,i=1,2,\dots,N该肴;x_i^{(j)} 是第 i 個(gè)樣本的第 j 個(gè)特征,x_i^{(j)}\in\{a_{j1},a_{j2},\dots,a_{jS_j}\}藐不,j=1,2,\dots,na_{jl} 是第 j 個(gè)特征可能取的第 l 個(gè)值秦效,l=1,2,\dots,S_j雏蛮,y_i\in\{c_1,c_2,\dots,c_K\};實(shí)例 x阱州;
??輸出:對(duì)實(shí)例 x 的分類挑秉;
??(1) 計(jì)算先驗(yàn)概率以及條件概率P_{\color{red}{\lambda}}(Y=c_k)=\frac{\sum\limits_{i=1}^N I(y_i=c_k)\color{red}{+\lambda}}{N\color{red}{+K\lambda}},\quad k=1,2,\dots,K. P_{\color{red}{\lambda}}(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum\limits_{i=1}^N I(x^{(j)}_i=a_{jl}|y_i=c_k)\color{red}{+\lambda}}{\sum\limits_{i=1}^N I(y_i=c_k)\color{red}{+S_j\lambda}}, j=1,2,\dots,n;\quad l=1,2,\dots,S_j;\quad k=1,2,\dots,K.
??(2) 對(duì)于給定的實(shí)例 x=(x^{(1)},x^{(2)},\dots,x^{(n)})^T,計(jì)算P_{\color{red}{\lambda}}(Y=c_k)\prod\limits_{j=1}^n P_{\color{red}{\lambda}}(X^{(j)}=x^{(j)}|Y=c_k),\quad k=1,2,\dots,K
??(3) 確定實(shí)例 x 的類y=\arg\max\limits_{c_k} P_{\color{red}{\lambda}}(Y=c_k)\prod\limits_{j} P_{\color{red}{\lambda}}\big(X^{(j)} = x^{(j)}|Y=c_k\big)

??其中苔货,去掉標(biāo)紅的符號(hào)后的算法即為采用極大似然估計(jì)犀概,保留標(biāo)紅符號(hào)后的算法則為采用貝葉斯估計(jì)立哑。
??貝葉斯估計(jì)是為了解決極大似然估計(jì)中要估計(jì)的概率值為 0 的情況。常取 \lambda = 1姻灶,這時(shí)稱為拉普拉斯平滑铛绰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市产喉,隨后出現(xiàn)的幾起案子捂掰,更是在濱河造成了極大的恐慌,老刑警劉巖曾沈,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件这嚣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡塞俱,警方通過查閱死者的電腦和手機(jī)姐帚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來障涯,“玉大人罐旗,你說我怎么就攤上這事∠穹” “怎么了尤莺?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)生棍。 經(jīng)常有香客問我颤霎,道長(zhǎng),這世上最難降的妖魔是什么涂滴? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任友酱,我火速辦了婚禮,結(jié)果婚禮上柔纵,老公的妹妹穿的比我還像新娘缔杉。我一直安慰自己,他們只是感情好搁料,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布或详。 她就那樣靜靜地躺著,像睡著了一般郭计。 火紅的嫁衣襯著肌膚如雪霸琴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天昭伸,我揣著相機(jī)與錄音梧乘,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛选调,可吹牛的內(nèi)容都是我干的夹供。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仁堪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哮洽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起枝笨,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤袁铐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后横浑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剔桨,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年徙融,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洒缀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡欺冀,死狀恐怖树绩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隐轩,我是刑警寧澤饺饭,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站职车,受9級(jí)特大地震影響瘫俊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悴灵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一扛芽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧积瞒,春花似錦川尖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缰贝,卻和暖如春嘲更,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背揩瞪。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留篓冲,地道東北人李破。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓宠哄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嗤攻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毛嫉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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