朴素贝叶斯算法简单、高效,具有坚实的理论基础,在数据分类中得到了广泛的应用。
朴素贝叶斯的理论基础:贝叶斯定理
其中:P(H | X)为条件X发生的情况下,H发生的概率,也称后验概率,P(H)称先验概率
朴素贝叶斯分类算法基于贝叶斯定律,工作过程如下:
(1)D是数据集,即所有样本的集合
每个样本具有n个属性,可以用n为向量表示,如样本X={X1,X2,…,Xn},表示对应的n个属性A1,A2,…,An。
(2)假设D中的样本可以分为m个类别C1,C2,…,Cm,根据贝叶斯定理,可有如下公式
这个公式就是朴素贝叶斯算法的精髓所在,可解析为:
对于待分类的样本X,求解在此样本出现的条件下,D中各个类别出现的概率,比较哪个类别出现的后验概率最大,就认为该待分类样本属于哪个类别
(3)由于P(X)对于所有的类别都是常数,当且仅当最大时,
为最大,通常情况下假定类的出现是等概率的,即P(C1)=P(C2)=…=P(Cm),所以只要最大化
即可。
(4)计算的量非常大,为降低计算开销,朴素贝叶斯算法在此有一个假设:类条件独立假设
给定类的标号,假定样本属性之间不存在相互依赖,即
而这些单个属性的先验概率是很容易计算的 ,一般假设样本属性值是离散的,即分类属性
(5)对于待分类的样本X,以此计算,找出最大的,将X的类标记为Ci
到此,原理解析结束。
———————————————————————————–
下面,用一个小小的例子,加深理解
下表是数据集D
现在有一待分类样本X:<天气:晴,温度:凉爽,风力:大,AQI:157>
问:这一天是否适合春游
首先最大化,首先需要计算类别的后验概率:
为了计算,需要计算一下条件概率:
使用上面的概率,可以得到:
P(X | 春游=是)=
P(天气=晴 | 春游=是) * P(温度=凉爽 | 春游=是) * P(风力=大 | 春游=是) * P(AQI>157 | 春游=是)=0.5*0.75*0.4*0.2=0.03
类似的,P(X | 春游=否)=0.5*0.25*0.6*0.8=0.06
为了发现最大化的类别,计算
P(X | 春游=是) * P(春游=是) = 0.03*0.6=0.018
P(X | 春游=否) * P(春游=否) = 0.06*0.4=0.024
由以上计算结果可知,对于样本X,应用朴素贝叶斯分类器可以预测样本X所属类别为春游=否
—————————————————————————————————————————————————————-
总结:
朴素贝叶斯算法简单、高效,但是也有一定的缺陷,其类条件独立假设在现实的数据集分类中不易满足,样本的属性与属性之间总会有联系,相互影响,此时用朴素贝叶斯算法难免会降低分类的准确率,所以也相继出现了不少改进,请自行查阅。
本文旨在于帮助理解基本的朴素贝叶斯分类的原理。