APP下载

贝叶斯分类算法分析与实现

2018-07-02

山西电子技术 2018年3期
关键词:贝叶斯分类器概率

郭 慧

(山西大学商务学院信息学院,山西 太原 030031)

0 引言

预测任务是数据挖掘的任务之一,它可以通过属性的值,预测特定属性的值。分类属于预测任务,通过训练集的学习,得到一个目标函数(模型)f,把每个属性值x通过该函数映射到离散的目标属性y上。贝叶斯算法是一种基于统计的分类算法[1,2]。在对小样本数据进行学习时,贝叶斯算法表现出良好的分类能力。为了对抗有的样本中没有数据的问题,引入了平滑的概念,实现了更为有效的分类[3]。

1 相关原理

针对分类问题,旨在实现从训练数据D={(x1,y1),(x2,y2),…,(xN,yN)}中得出训练目标P(Y=ck|X=x),给定x,求出x属于ck类别的概率[4]。根据概率论的相关知识,我们可以将该概率转换为联合概率与边缘概率的商。具体的求解过程如下:

(1)

上述推导中,假设每一个样本中的特征之间在给定类别下,是相互条件独立的,也就是:

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函数进行分类,具体如下:

(2)

类别ck在训练数据的统计取得最大值时,自变量x的值,可以采用极大似然估计求出,具体如下:

在实际数据中,有的样本为空。这种情况可采用平滑方法对抗有的样本中没有数据,具体如下:

(3)

(4)

2 计算过程

以具体实例说明贝叶斯方法的计算过程。

训练样本如表1所示[5]。

表1 训练样本

其中,每一列代表的含义如下:

Day:第几天,Outlook:天气,Temperature:温度,Humidity:潮湿度,Wind:风力,PlayTennis:是否打网球。

给定新的样本数据Outlook=sunny,Temperature=cool,Humidity=high,Wind=strong,问PlayTennis的情况。

设λ=1,根据式(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

根据式(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),所以,给定新样本的预测结果PlayTennis=No。

3 实现

为了进一步验证贝叶斯分类算法的效果,把该算法应用到UCI数据集iris上,采用MATLAB R2017b实现。

2/3的数据作为训练集,1/3的数据作为测试集。主要算法如下:

步骤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。

4 小结

分析了贝叶斯分类算法的原理以及实现过程,运用贝叶斯分类算法在iris数据集上进行分类测试,准确率高,在测试集的48个样本中,正确的有47个。说明贝叶斯分类算法对于小样本数据有好的分类效果。

[1] 蔡永泉,王玉栋.以特征关联项改进贝叶斯分类器正确率[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] 王双成,杜瑞杰,刘颖.连续属性完全贝叶斯分类器的学习与优化[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] 李春贵,聂永红.基于面向对象方法的ID3算法的设计与实现[J].广西工学院学报,2004(3):1-5.

猜你喜欢

贝叶斯分类器概率
第6讲 “统计与概率”复习精讲
第6讲 “统计与概率”复习精讲
概率与统计(一)
概率与统计(二)
基于实例的强分类器快速集成方法
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
基于贝叶斯估计的轨道占用识别方法
基于互信息的贝叶斯网络结构学习
一种基于贝叶斯压缩感知的说话人识别方法