朴素贝叶斯法学习笔记

# 朴素贝叶斯法学习笔记

标签:统计学习方法

朴素贝叶斯法简述

朴素贝叶斯法是一种分类方法,不论是二分类或多分类均适用.它的基本假定是输入数据的各个特征之间具有条件独立性,这就是称之为“朴素”的原因,然后应用贝叶斯定理,学习出数据的特征和类标签之间的联合概率分布,最后把后验概率最大的结果作为类标签.虽然朴素贝叶斯法应用在分类问题中具有简单且易于实现的特点,但是由于它假设了输入特征之间具有条件独立性,所以有时候可能分类的效果并不是很好.

朴素贝叶斯算法的一般描述

符号约定:\(\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个样本,根据极大似然估计,可以得出:
\[ P(Y=c_k) = \frac{\sum\limits^M_{i=1}I(y^{(i)}=c_k)}{M}, \quad k=1,2,...,K \tag{1} \]
其中\(c_k\)表示标签可以取的值,在这里一共可以取\(K\)个不同的值.\(I(x, y)\)函数则表示括号内两个数字相等则为1,否则为0.所以式(1)就是表示某个标签出现的次数占所有标签出现的次数的比例.再来看条件概率分布,具体地,假设有N个特征,可以用公式表达如下:
\[ P(X=x|Y=c_k) = P(X_1=x_1, X_2=x_2, ..., X_N=x_N|Y=c_k), \quad k=1,2,...,K \tag{2} \]
由于朴素贝叶斯法假设特征之间是条件独立的,所以式(2)可以写作:
\[ \begin{align*} P(X=x|Y=c_k) &= P(X_1=x_1, X_2=x_2, ..., X_N=x_N|Y=c_k) \\ &= P(X_1=x_1|Y=c_k)P(X_2=x_2|Y=c_k)...P(X_N=x_N|Y=c_k) \\ &= \prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k) \end{align*} \tag{3} \]
有了式(1)和式(3),我们就可以学习出量和概率分布\(P(X,Y)\)

有了联合概率分布,接下来就可以进行预测的工作了.朴素贝叶斯法是输入一个样本向量,将后验概率最大的标签值作为输出,后验概率的计算需要用到贝叶斯定理.后验概率记作\(P(Y=c_k|X=x)\)\(x\)为任一输入样本向量,应用贝叶斯定理可得.
\[ P(Y=c_k|X=x) = \frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum\limits_{k=1}^KP(X=x|Y=c_k)P(Y=c_k)},\quad k=1,2,...,K \tag{4} \]
式(4)的分子表示在给定某一标签值的情况下,输入样本等于\(x\)的概率;分母表示输入样本在每个标签值下等于\(x\)的概率之和,即\(P(X=x)\).二者的比值即为输入\(x\)而得到某一输出标签的后验概率.
考虑到式(4)中的\(P(X=x|Y=c_k)P(Y=c_k)\)已在式(3)中求出,所以把式(3)代入到式(4)中,可得:
\[ P(Y=c_k|X=x) = \frac{\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k)}{\sum\limits_{k=1}^K\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k)}, \quad k=1,2,...,K \tag{5} \]
式(5)就是朴素贝叶斯法的基本公式,即对每一个可能的标签值,都计算输入的样本属于这个标签值的概率大小.而我们的目标是推出一个样本的具体标签,所以在这些可能的标签值当中,选出一个可能性也就是概率最大的那个作为标签.所以朴素贝叶斯分类器的预测结果就可以表示为:
\[ \hat{y} = \operatorname*{arg\;max}\limits_{c_k}\frac{\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k)}{\sum\limits_{k=1}^K\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k)}, \quad k=1,2,...,K \tag{6} \]

注意到式(6)的分母考虑了所有不同的标签值并求和,不针对特定的\(c_k\),也就是和某一个具体的\(c_k\)无关,它就是一个常数,所以对于求出最大的\(c_k\)值没有任何影响,可省略.最终的素朴贝叶斯分类器公式为:
\[ \hat{y} = \operatorname*{arg\;max}\limits_{c_k}\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k), \quad k=1,2,...,K \tag{7} \]
后验概率最大化等价于期望风险最小化,具体证明过程见参考文献.

参数估计

先验概率\(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)来估算:
\[ P(X_j=a_{jl}|Y=c_k) = \frac{\sum\limits^{M}_{i=1}I(\boldsymbol{x}^{(i)}_j=a_{jl},y^{(i)}=c_k)}{\sum\limits^{M}_{i=1}I(y_i=c_k)} \\ j = 1,2,...,N; \quad l = 1,2,...,S_j; \quad k = 1,2,...,K \tag{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):
\[ P_{\lambda}(X_j=a_{jl}|Y=c_k) = \frac{\sum\limits^{M}_{i=1}I(\boldsymbol{x}^{(i)}_j=a_{jl},y^{(i)}=c_k)+\lambda}{\sum\limits^{M}_{i=1}I(y_i=c_k)+S_j\lambda} \\ j = 1,2,...,N; \quad l = 1,2,...,S_j; \quad k = 1,2,...,K \tag{9} \]
即在分子上添加一个正数\(\lambda\),在分母上添加第j个特征可能取值的总个数(仅训练集)与\(\lambda\)的乘积.倘若\(\lambda\)为0,就是式(8),如果\(\lambda=1\),则称之为拉普拉斯平滑.那么先验估计式(1)同样也可以进行平滑处理:
\[ P_{\lambda}(Y=c_k) = \frac{\sum\limits^M_{i=1}I(y^{(i)}=c_k)+\lambda}{M+K\lambda}, \quad k=1,2,...,K \tag{10} \]
式(9)-式(10)符合概率分布的条件,称为贝叶斯估计.
\[ \begin{equation} \left\{ \begin{array}{lr} P_{\lambda}(X_j=a_{jl}|Y=c_k) > 0 \\ \sum\limits^{S_j}_{l=1}P_{\lambda}(X_j=a_{jl}|Y=c_k) = 1 \end{array} \right. \end{equation} \tag{11} \]
\[ \begin{equation} \left\{ \begin{array}{lr} P_{\lambda}(Y=c_k) > 0 \\ \sum\limits^{K}_{k=1}P_{\lambda}(Y=c_k) = 1 \end{array} \right. \end{equation} \tag{12} \]

注:朴素贝叶斯分类法认为输入样本的各特征之间是条件独立的,如果不满足这个条件,就不是朴素贝叶斯法,而称之为贝叶斯网络.

参考文献

李航.统计学习方法[M].北京:清华大学出版社,2012 47-53.

猜你喜欢

转载自www.cnblogs.com/excellent-ship/p/9117035.html