朴素贝叶斯分类器(naïve Bayes classifier)是机器学习中的一种假设特征之间强独立的基于贝叶斯定理的简单概率分类器。朴素贝叶斯自20世纪50年代起就已经广泛研究,具有快速易实现的优点,这种机器学习方法在有适当的预处理时,可以与这个领域包括支持向量机在内的更先进的方法相竞争[1]。本文将主要介绍朴素贝叶斯分类器算法的原理,并以一个小实例解释其在实际中是如何应用的。
从贝叶斯定理说起
假设X,Y是一对随机变量,他们的联合概率\(P(X=x, Y=y)\)是当X取值x,并且Y取值y时的概率。而条件概率则是在一随机变量取值已知的情况下,另一个随机变量取某一个特定值的概率。比如条件概率\(P(Y=y| X=x)\)是在变量X取值x时,变量Y取值y的概率。X和Y的联合概率和条件概率满足以下运算关系:
\(P(Y|X)=\frac{P(X|Y) \times P(Y)}{P(X)} \tag{2} \)
朴素贝叶斯分类
我们使用朴素贝叶斯分类器的目的就是对不同输入的X做分类预测,预测该样本最可能属于哪个类别。在医疗领域中,我们需要根据一些特征去判断某个部位是否发生了癌变,以A和B代表两个不同的特征属性。我们需要预测的是,当特征X中,在出现了A和B某种取值的情况下,该部位发生了癌变的可能性。
条件独立性假设
设X,Y和Z表示三个随机变量的集合,给定Z,X条件独立于Y,如果下面的条件成立:
\(P(X|Y,Z)=P(X|Z) \tag{3} \)
通俗的理解就是,一个人的身高和其体重是不条件独立的,但某个人的身高和今天的天气是条件独立的。如果其条件独立,那么我们有这样的公式:
\(P(X,Y|Z)=P(X|Z) \times P(Y|Z) \tag{4} \)
朴素贝叶斯法的条件独立假设是用于分类的特征在类确定的条件下,都是相互条件独立的。这一假设是的朴素贝叶斯法变得简单,虽然有时在一定程度上会牺牲分类的准确率。
贝叶斯判定准则
朴素贝叶斯法会将实例分类到后验概率最大的类中,由于我们需要得到的是
\(y=P(Y=c_{k}) \times \prod^{n}_{j=1}{P(X_j=x_j|Y=c_k)} \tag{5} \)
也就是给定一组输入X,得到分类到k个类别中每个类的概率,并且最终找到概率最大的那个类别,也就是argmax (y)。
数据准备
假设我们有以下的一些医疗数据:
ID | 特征A | 特征B | 结果Y |
1
2 3 4 5 6 7 8 9 10 |
yes
yes no no yes no yes yes no yes |
yes
no yes no no no yes no no no |
yes
yes no no yes yes yes no no yes |
参数估计
极大似然估计
原理
朴素贝叶斯分类器的学习意味着估计参数\(P(Y=c_k)\)和\(P(X=x|Y=c_k)\),我们可以使用极大似然估计法来估计相应的概率。其中,先验概率\(P(Y=c_k)\)的极大似然估计为
\(P(Y=c_k)=\frac{\sum^{N}_{i=1}{I(Y_{i}=c_{k})}}{N} , k=1,2,…,K \tag{6}\)
其中,N为数据样本数量。
对于第j个特征属性X的可能取值,条件概率\(P(X_j=x_j|Y=c_k)\)的极大似然估计为
\(P(X_j=x_{ji}|Y=c_k)=\frac{\sum^{N}_{i=1}{I(X_{ji}=x_{ji},Y_i=c_k)}}{\sum^N_{i=1}{I(Y_i=c_k)}} \tag{7}\)
其中,j取值1,2,…,n,i取值1,2,…,S,k取值1,2,…,K;n为特征属性X的数量,S为每一种特征X的取值数量,K为分类的类别数量。
实例
对于我们上述提到的数据,使用朴素贝叶斯算法,有如下的计算过程:
(1)计算先验概率
P(Y=yes) = 6/10=0.6 P(Y=no)=4/10=0.4 |
(2)计算条件概率
P(X1=yes |Y=yes)=5/6=0.83 P(X1= no |Y=yes)= 1/6=0.17 P(X2=yes|Y=yes)= 2/6=0.33 P(X2=no|Y=yes)= 4/6=0.67 P(X1=yes |Y=no)=1/4=0.25 P(X1= no |Y=no)= 3/4=0.75 P(X2=yes|Y=no)= 1/4=0.25 P(X2=no|Y=no)= 3/4=0.75 |
(3)对于给定的样本X=(yes,no),计算y
y(yes)=P(Y=yes)P(X1=yes |Y=yes)P(X2=no|Y=yes)=0.6*0.83*0.67=0.334 y(no)= P(Y=no)P(X1=yes |Y=no) P(X2=no|Y=no)=0.4*0.25*0.75=0.075 |
(4)确定预测样本的所属的类
y^=argmax(y) = yes
因为y(yes)的概率最大,所以,该样本预测的结果为yes,也就是其有较大的可能性得癌症。
贝叶斯估计
原理
我们从上述得计算过程中可以看到,用极大似然估计时,可能会出现需要估计的概率值为0的情况,这会影响到后验概率得计算结果,使得分类产生偏差。通过采用贝叶斯估计,可以解决这一问题,条件概率的贝叶斯估计为
\(P_\lambda (X_j=x_{ji}|Y=c_k)=\frac{\sum^{N}_{i=1}{I(X_{ji}=x_{ji},Y_i=c_k)}+\lambda}{\sum^N_{i=1}{I(Y_i=c_k)}+S_j \lambda } \tag{8}\)
先验概率的贝叶斯估计为
\(P_\lambda (Y=c_k)=\frac{\sum^{N}_{i=1}{I(Y_{i}=c_{k})} + \lambda }{N+K \lambda } , k=1,2,…,K \tag{9}\)
其中,λ\(\ge\)0,也就是说,在随机变量各个取值的频数上赋予一个正数λ>0,并且当λ=0时为极大似然估计,通常取为1,这时称为拉普拉斯平滑(Laplace smoothing)。此时,对于任何的i,k,都有
\(P_\lambda (X_j=x_{ji}|Y=c_k) >0\)
\(\sum^{S_j}_{i=1}{P_\lambda (X_j=x_{ji}|Y=c_k)} =1\)
实例
对于我们上述提到的数据,通过贝叶斯估计,再次使用朴素贝叶斯算法,有如下的计算过程:
(1)计算先验概率
P(Y=yes) = (6+1)/(10+2)=0.58 P(Y=no)=(4+1)/(10+2)=0.42 |
(2)计算条件概率
P(X1=yes |Y=yes)=(5+1)/(6+2)=0.75 P(X1= no |Y=yes)= (1+1)/(6+2)=0.25 P(X2=yes|Y=yes)= (2+1)/(6+2)=0.375 P(X2=no|Y=yes)= (4+1)/(6+2)=0.625 P(X1=yes |Y=no)=(1+1)/(4+2)=0.33 P(X1= no |Y=no)= (3+1)/(4+2)=0.67 P(X2=yes|Y=no)= (1+1)/(4+2)=0.33 P(X2=no|Y=no)= (3+1)/(4+2)=0.67 |
(3)对于给定的样本X=(yes,no),计算y
y(yes)=P(Y=yes)P(X1=yes |Y=yes)P(X2=no|Y=yes)=0.58*0.75*0.625=0.272 y(no)= P(Y=no)P(X1=yes |Y=no) P(X2=no|Y=no)=0.42*0.33*0.67=0.093 |
(4)确定预测样本的所属的类
y^=argmax(y) = yes
同样,因为y(yes)的概率最大,所以,该样本预测的结果为yes,也就是其有较大的可能性得癌症。
总结
本文简介了朴素贝叶斯分类器的原理,以及极大似然估计和贝叶斯估计的参数估计的方法,并以一个实例演示这两种参数估计方法的计算过程。朴素贝叶斯法假设输入的变量他们几个特征之间都是条件独立的,如果他们之间存在概率上的相关关系,那么模型就变成贝叶斯网络了[5]。
参考文献
[1] Rennie J D, Shih L, Teevan J, et al. Tackling the poor assumptions of naive bayes text classifiers[C]//Proceedings of the 20th international conference on machine learning (ICML-03). 2003: 616-623.
[2] Pang-Ning T, Machael S, Vipin K, etc. Introduction to Data Mining[M]. Peking: Post & Telecom Press, 2011.
[3] 周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.
[4] 李航. 统计学习方法[M]. 北京: 清华大学出版社, 2012.
[5] Bishop C. Pattern Recognition and Machine Learning, Springer, 2006
版权声明本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。本文地址: https://blog.ailemon.net/2019/06/13/machine-learning-naive-bayes-classifier/ All articles are under Attribution-NonCommercial-ShareAlike 4.0 |