郭 慧
(山西大學商務學院信息學院,山西 太原 030031)
預測任務是數(shù)據(jù)挖掘的任務之一,它可以通過屬性的值,預測特定屬性的值。分類屬于預測任務,通過訓練集的學習,得到一個目標函數(shù)(模型)f,把每個屬性值x通過該函數(shù)映射到離散的目標屬性y上。貝葉斯算法是一種基于統(tǒng)計的分類算法[1,2]。在對小樣本數(shù)據(jù)進行學習時,貝葉斯算法表現(xiàn)出良好的分類能力。為了對抗有的樣本中沒有數(shù)據(jù)的問題,引入了平滑的概念,實現(xiàn)了更為有效的分類[3]。
針對分類問題,旨在實現(xiàn)從訓練數(shù)據(jù)D={(x1,y1),(x2,y2),…,(xN,yN)}中得出訓練目標P(Y=ck|X=x),給定x,求出x屬于ck類別的概率[4]。根據(jù)概率論的相關(guān)知識,我們可以將該概率轉(zhuǎn)換為聯(lián)合概率與邊緣概率的商。具體的求解過程如下:
(1)
上述推導中,假設(shè)每一個樣本中的特征之間在給定類別下,是相互條件獨立的,也就是:
P(X=x|Y=ck)=
P((X(1)=x(1),…,X(N)=x(N))|Y=ck)=
P(X(1)=x(1)|Y=ck),…,P(X(N)=x(N)|Y=ck)=
則式(1)等價于
貝葉斯分類器采用argmax函數(shù)進行分類,具體如下:
(2)
類別ck在訓練數(shù)據(jù)的統(tǒng)計取得最大值時,自變量x的值,可以采用極大似然估計求出,具體如下:
在實際數(shù)據(jù)中,有的樣本為空。這種情況可采用平滑方法對抗有的樣本中沒有數(shù)據(jù),具體如下:
(3)
(4)
以具體實例說明貝葉斯方法的計算過程。
訓練樣本如表1所示[5]。
表1 訓練樣本
其中,每一列代表的含義如下:
Day:第幾天,Outlook:天氣,Temperature:溫度,Humidity:潮濕度,Wind:風力,PlayTennis:是否打網(wǎng)球。
給定新的樣本數(shù)據(jù)Outlook=sunny,Temperature=cool,Humidity=high,Wind=strong,問PlayTennis的情況。
設(shè)λ=1,根據(jù)式(3)和式(4)分別進行計算。
P(yes)=(8+1)/(12+2)=9/14
P(no)=(4+1)/(12+2)=5/14
P(outlook=sunny|yes)=(2+1)/(8+3)=3/11
P(outlook=sunny|no)=(3+1)/(4+3)=4/7
P(temperature=cool|yes)=(3+1)/(8+3)=4/11
P(temperature=cool|no)=(1+1)/(4+3)=2/7
P(humidity=high|yes)=(3+1)/(8+2)=4/10
P(humidity=high|no)=(3+1)/(4+2)=4/6
P(wind=strong|yes)=(3+1)/(8+2)=4/10
P(wind=strong|no)=(2+1)/(4+2)=3/6
根據(jù)式(2),計算在不同分類下,P(Y=ck)∏jP(X(j)=x(j)|Y=ck)的值。
P(yes)P(sunny|yes)P(cool|yes)P(high|yes)P(strong|yes)=(9/14)*(3/11)*(4/11)*(4/10)*(4/10)=0.0102
(5)
P(no)P(sunny|no)P(cool|no)P(high|no)P(strong|no)=(5/14)*(4/7)*(2/7)*(4/6)*(3/6)=0.019 4
(6)
因為式(6)>(5),所以,給定新樣本的預測結(jié)果PlayTennis=No。
為了進一步驗證貝葉斯分類算法的效果,把該算法應用到UCI數(shù)據(jù)集iris上,采用MATLAB R2017b實現(xiàn)。
2/3的數(shù)據(jù)作為訓練集,1/3的數(shù)據(jù)作為測試集。主要算法如下:
步驟1:計算訓練集中每一類的概率。如:第一種分類的概率
pClass1 = size(rows1,1) / size(training_set,1)
步驟2:計算屬性在該分類下的概率。如:在第一種分類下第j個屬性的概率 pAttributeClass(j,1)
=1/(sqrt(2*pi)*stdValue1(j))* exp(-(attribute(j)-meanValue1(j))^2/ (2*stdValue1(j)^2));
步驟3:比較樣本屬性的分類概率。如:若第i個測試樣本屬性概率乘積最大,也就是if (max([pXC1*pClass1, pXC2*pClass2, pXC3*pClass3]) == pXC1*pClass1) ,則測試樣本分類為1,test_set(i,5) = 1。
最終,貝葉斯分類算法在iris測試集上的準確率為:0.979167。
分析了貝葉斯分類算法的原理以及實現(xiàn)過程,運用貝葉斯分類算法在iris數(shù)據(jù)集上進行分類測試,準確率高,在測試集的48個樣本中,正確的有47個。說明貝葉斯分類算法對于小樣本數(shù)據(jù)有好的分類效果。
[1] 蔡永泉,王玉棟.以特征關(guān)聯(lián)項改進貝葉斯分類器正確率[J].計算機應用與軟件,2017,34(8):286-290.
[2] Dong W Y, Zhou M C. Gaussian Classifier-based Evolutionary Strategy for Multimodal[J].Optimization. IEEE Transactions on Neural Networks & Learning Systems,2014,25(6):1200-1216.
[3] 王雙成,杜瑞杰,劉穎.連續(xù)屬性完全貝葉斯分類器的學習與優(yōu)化[J].計算機學報,2012,35(10):2129-2137.
[4] M.Julia Flores,Jose A. Gamez,Ana M.Martinez. Domains of Competence of the Semi-naive Bayesian Network Classifiers[G]. Information Sciences,2014:120-148.
[5] 李春貴,聶永紅.基于面向?qū)ο蠓椒ǖ腎D3算法的設(shè)計與實現(xiàn)[J].廣西工學院學報,2004(3):1-5.