朴素贝叶斯法是一种分类方法,不管是二分类或多分类均适用.它的基本假定是输入数据的各个特征之间具备条件独立性,这就是称之为“朴素”的缘由,而后应用贝叶斯定理,学习出数据的特征和类标签之间的联合几率分布,最后把后验几率最大的结果做为类标签.虽然朴素贝叶斯法应用在分类问题中具备简单且易于实现的特色,可是因为它假设了输入特征之间具备条件独立性,因此有时候可能分类的效果并非很好.算法
符号约定:\(\boldsymbol{x}^{(i)}\)是输入的第i个样本向量,\(\boldsymbol{x}^{(i)}_j\)是第i个样本向量的第j个特征值,\(y^{(i)}\)为第i个样本的标签.网络
学习步骤为:函数
首先根据训练数据集的输入向量\(\boldsymbol{x}^{(i)}\)和标签\(y\)学习出两者的联合几率分布\(P(X,Y)\),要求出联合几率分布,就得先求出先验几率分布\(P(Y)\)和条件几率分布\(P(X|Y)\).对于先验几率分布,假设有M个样本,根据极大似然估计,能够得出:学习
其中\(c_k\)表示标签能够取的值,在这里一共能够取\(K\)个不一样的值.\(I(x, y)\)函数则表示括号内两个数字相等则为1,不然为0.因此式(1)就是表示某个标签出现的次数占全部标签出现的次数的比例.再来看条件几率分布,具体地,假设有N个特征,能够用公式表达以下:测试
因为朴素贝叶斯法假设特征之间是条件独立的,因此式(2)能够写做:spa
有了式(1)和式(3),咱们就能够学习出量和几率分布\(P(X,Y)\)了it
有了联合几率分布,接下来就能够进行预测的工做了.朴素贝叶斯法是输入一个样本向量,将后验几率最大的标签值做为输出,后验几率的计算须要用到贝叶斯定理.后验几率记做\(P(Y=c_k|X=x)\),\(x\)为任一输入样本向量,应用贝叶斯定理可得.io
式(4)的分子表示在给定某一标签值的状况下,输入样本等于\(x\)的几率;分母表示输入样本在每一个标签值下等于\(x\)的几率之和,即\(P(X=x)\).两者的比值即为输入\(x\)而获得某一输出标签的后验几率.
考虑到式(4)中的\(P(X=x|Y=c_k)P(Y=c_k)\)已在式(3)中求出,因此把式(3)代入到式(4)中,可得:class
式(5)就是朴素贝叶斯法的基本公式,即对每个可能的标签值,都计算输入的样本属于这个标签值的几率大小.而咱们的目标是推出一个样本的具体标签,因此在这些可能的标签值当中,选出一个可能性也就是几率最大的那个做为标签.因此朴素贝叶斯分类器的预测结果就能够表示为:学习方法
注意到式(6)的分母考虑了全部不一样的标签值并求和,不针对特定的\(c_k\),也就是和某一个具体的\(c_k\)无关,它就是一个常数,因此对于求出最大的\(c_k\)值没有任何影响,可省略.最终的素朴贝叶斯分类器公式为:
后验几率最大化等价于指望风险最小化,具体证实过程见参考文献.
先验几率\(P(Y=c_k)\)的求解方法在上文已经给出,用的是极大似然估计法,即式(1).下面来估算参数\(P(X_j=x_j|Y=c_k)\),这个参数的意思是在给定的标签下,样本的的某个特征取某一个值的几率,而对于\(\prod\limits^{n}_{j=1}P(X_j=x_j|Y=c_k)\)则是考虑全部特征,而后把全部这些几率相乘以后获得的结果.对于某一个特征来说,能够取不少个不一样的值,那么在给定了标签以后取每个值的几率分别是多少呢?在有M个训练样本的状况下,能够用式(8)来估算:
下面来解释下式(8).\(a_{jl}\)表示样本第j个特征所取得第l个值,分母\(\sum\limits^{M}_{i=1}I(y_i=c_k)\)表示在全部训练样本中,标签\(c_k\)一共出现的次数,分子\(\sum\limits^{M}_{i=1}I(\boldsymbol{x}^{(i)}_j=a_{jl},y^{(i)}=c_k)\)则表示在全部标签为\(c_k\)的样本中,第j个特征取值\(a_{jl}\)的总数,两者之商则是在给定标签\(c_k\)的状况下,样本的第j个特征取值\(a_{jl}\)的几率.式(8)是针对某一个特征取某一个数值的几率计算,能够由此算出全部的特征取其对应的某一个数值的几率,而后就能够利用式(7)对任一给定的测试样原本预测它的标签了.这就是朴素贝叶斯分类的主要思想,简单的应用例子参见参考文献\(p_50\),能够获取以上算法的直观感觉.
仔细考察式(8),咱们能够很容易地发现,若是给定一个测试样本,它在第j个特征下的值,历来没有在训练样本中出现过,那么对于该值,用式(8)计算就等于0了,即几率为0,这实际上是不符合现实状况的,假若这么处理,那么朴素贝叶斯分类的泛化能力就会很是差.那么如何解决这个问题?咱们能够在式(8)的分子分母上添加一个常数项,避免出现计算的几率为0的状况,具体如式(9):
即在分子上添加一个正数\(\lambda\),在分母上添加第j个特征可能取值的总个数(仅训练集)与\(\lambda\)的乘积.假若\(\lambda\)为0,就是式(8),若是\(\lambda=1\),则称之为拉普拉斯平滑.那么先验估计式(1)一样也能够进行平滑处理:
式(9)-式(10)符合几率分布的条件,称为贝叶斯估计.
注:朴素贝叶斯分类法认为输入样本的各特征之间是条件独立的,若是不知足这个条件,就不是朴素贝叶斯法,而称之为贝叶斯网络.
李航.统计学习方法[M].北京:清华大学出版社,2012 47-53.