1?樸素貝葉斯法的學(xué)習(xí)與分類
??樸素貝葉斯的思想是:對(duì)于給定的一個(gè)訓(xùn)練數(shù)據(jù)集冗懦,首先基于特征條件獨(dú)立假設(shè)學(xué)習(xí)輸入輸出的聯(lián)合概率分布爽冕;然后基于此模型,對(duì)給定的輸入 披蕉,利用貝葉斯定理求出后驗(yàn)概率最大的輸出
颈畸。由于樸素貝葉斯實(shí)際上是學(xué)習(xí)生成數(shù)據(jù)的機(jī)制乌奇,因此屬于生成模型。
1.1?基本方法
??設(shè)輸入空間 眯娱,輸出空間為類標(biāo)記集合
礁苗。輸入為特征向量
, 輸出為類標(biāo)記
徙缴。
是定義在輸入空間
上的隨機(jī)向量试伙,
是定義在輸出空間
上的隨機(jī)變量。
是
和
的聯(lián)合概率分布于样。訓(xùn)練數(shù)據(jù)集
由
獨(dú)立同分布生成疏叨。
??先驗(yàn)概率分布??條件概率分布
由于樸素貝葉斯對(duì)條件概率分布做了條件相互獨(dú)立的假設(shè)。因此有
??后驗(yàn)概率計(jì)算根據(jù)貝葉斯定理進(jìn)行 (具體過程可參考李航《統(tǒng)計(jì)學(xué)習(xí)方法(第二版)):
??對(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ù):其中
是分類決策函數(shù)誓军。結(jié)合聯(lián)合分布的條件期望袱讹,故經(jīng)驗(yàn)風(fēng)險(xiǎn)函數(shù)為
為使經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化,只需對(duì)
逐個(gè)極小化昵时,由此可得:
這樣一來捷雕,根據(jù)期望風(fēng)險(xiǎn)最小化準(zhǔn)則就得到了后驗(yàn)概率最大化準(zhǔn)則:
即樸素貝葉斯采用的原理
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
(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');
??可以看出和原文說的一樣分類效果確實(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è)特征 在各個(gè)類別
下服從正態(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');
??可以看到學(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)概率 以及條件概率
〕砻可以應(yīng)用極大似然估計(jì)法或者貝葉斯估計(jì)法估計(jì)相應(yīng)的概率柠偶。貝葉斯估計(jì)相較于極大似然估計(jì)的區(qū)別在于貝葉斯估計(jì)在隨機(jī)變量各個(gè)取值的頻數(shù)上賦予一個(gè)正數(shù)
,當(dāng)
時(shí)即為極大似然估計(jì)睬关。
??下面給出樸素貝葉斯的學(xué)習(xí)與分類算法诱担。
??算法 4.1 (樸素貝葉斯算法)
??輸入:訓(xùn)練數(shù)據(jù)集 ,其中
电爹,
该肴;
是第
個(gè)樣本的第
個(gè)特征,
藐不,
,
是第
個(gè)特征可能取的第
個(gè)值秦效,
雏蛮,
;實(shí)例
阱州;
??輸出:對(duì)實(shí)例 的分類挑秉;
??(1) 計(jì)算先驗(yàn)概率以及條件概率
??(2) 對(duì)于給定的實(shí)例 ,計(jì)算
??(3) 確定實(shí)例 的類
??其中苔货,去掉標(biāo)紅的符號(hào)后的算法即為采用極大似然估計(jì)犀概,保留標(biāo)紅符號(hào)后的算法則為采用貝葉斯估計(jì)立哑。
??貝葉斯估計(jì)是為了解決極大似然估計(jì)中要估計(jì)的概率值為 0 的情況。常取姻灶,這時(shí)稱為拉普拉斯平滑铛绰。