主要介绍了朴素贝叶斯法的基本原理和推导过程,介绍了方法的学习和分类算法,并针对所要估计的概率值可能为0的问题,介绍了贝叶斯估计法。

朴素贝叶斯(naive Bayes)法 是以贝叶斯定理为基础的一中分类方法,它的前提条件是假设特征条件相互独立。对于给定的训练集,它首先基于特征条件假设的前提条件,去学习输入与输出的条件概率分布,然后根据此分布模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。

1.朴素贝叶斯的学习与分类

1.1 基本方法

假设输入空间\(X \subseteq R^n\)为n维向量的集合,输入空间为类标记集合\(Y=\{c_1,c_2,\cdots,c_K\}\),输入为特征向量\(x \in X\),输出为类标记\(y \in Y, P(X,Y)\)是X和Y的联合概率分布,训练数据\(T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_{_N},y_{_N})\}\)由\(P(X,Y)\)独立同分布生成。
朴素贝叶斯法是一种生成模型,是通过训练数据集来学习联合概率分布\(P(X,Y)\),进而对新的输入数据进行预测的模型。而其具体的学习过程,就是学习先验概率分布和条件概率分布:

  • 先验概率分布:

\[P(Y=c_k), k = 1,2,\cdots,K \]

  • 条件概率分布:

\[P(X=x|Y=c_k)=P(X^{(1)},\cdots,X^{(n)}|Y=c_k),k=1,2,\cdots,K \]

而后通过两者求得联合概率分布\(P(X,Y)\)。

条件概率分布\(P(X=x|Y=c_k)\)的计算通常是不可行的,因为计算参数的个数往往可能有指数级的。假定\(x^{(j)}\)可能的取值有\(S_j\)个,\(j=1,2,\cdots,n,\)Y的可能取值有K个,那么实际上参数的个数是\(K \prod_{j=1}^nS_j\)。
而朴素贝叶斯法有一个较强的前提假设,即条件独立性假设,因此条件概率满足:

\[\begin{aligned} P(X=x|Y=c_k) &= P(X^{(1)}=x^{(1)},\cdots,X^{(n)}=x^{(n)}|Y=c_k)\\ &= \prod_{j=1}^nP(X^{(j)=x^{(j)}|Y=c_k}) \end{aligned} \]

条件独立假设等于是说用于分类的特征在类确定的条件下,都是条件独立的。因此这一假设使得朴素贝叶斯法变得非常简单,但是由于各个条件在大多数情况下并非独立的,而是相互间会有一定的联系,因此这个假设会牺牲模型的一定的准确性。
朴素贝叶斯法通过求解给定的输入x的后验概率分布\(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_kP(X=x|Y=c_k)P(Y=c_k)} \]

由条件独立性假设,可知:

\[P(Y=c_k|X=x)=\frac{P(Y=c_k)\prod_jP(P(X^{(j)}=x^{(j)})|Y=c_k)}{\sum_kP(Y=c_k)\prod_jP(P(X^{(j)}=x^{(j)})|Y=c_k)} \]

这便是朴素贝叶斯法最基本的公式。
因此,朴素贝叶斯法表示为:

\[y=f(x)=\arg\max_{c_k}\frac{P(Y=c_k)\prod_jP(P(X^{(j)}=x^{(j)})|Y=c_k)}{\sum_kP(Y=c_k)\prod_jP(P(X^{(j)}=x^{(j)})|Y=c_k)} \]

由于上式中,分母对于任意类型都是恒定的值,因此可以简化为:

\[y=\arg\max_{c_k}P(Y=c_k)\prod_jP(P(X^{(j)}=x^{(j)})|Y=c_k) \]

1.2 后验概率最大化的含义

朴素贝叶斯法将输入实例划分为后验概率最大的类,实际上等价于期望风险最小化。
假设损失函数为0-1损失函数:

\[L(Y,f(X))= \begin{cases} 1,Y\neq f(X)\\ 0,Y=f(X) \end{cases} \]

式中\(f(x)\)是分类决策函数,那么期望风险为:

\[R_{exp}(f)=E[L(Y,f(X))] \]

上述期望是对联合分布\(P(X,Y)\)所取,因此:

\[R_{exp}=E_X\sum_{k=1}^{K}\left[L(c_k,f(X))\right]P(c_k|X) \]

为使期望风险最小话,只需\(X=x\)逐个极小化,因此:

\[\begin{aligned} f(x) &=\arg\min_{y\in Y}\sum_{k=1}^{K}L(c_k,y)P(c_k|X=x)\\ &=\arg\min_{y\in Y}\sum_{k=1}^{K}P(y\neq c_k|X=x)\\ &=\arg\min_{y\in Y}\sum_{k=1}^{K}(1-P(y=c_k|X=x))\\ &=\arg\min_{y\in Y}P(y=c_k|X=x) \end{aligned} \]

因此,根据期望风险最小化准则,可以得到后验概率最大化准则:

\[f(x)=\arg\max_{c_k}P(c_k|X=x) \]

即朴素贝叶斯法所采用的方法。

2. 朴素贝叶斯法的参数估计

2.1 极大似然估计

在朴素贝叶斯法的中,模型的学习就是指对\(P(Y=c_k)\)和\(P(X^{(j)}=x^{(j)}|Y=c_k)\)的估计。应用极大似然估计可以估计所需的概率。
先验概率\(P(Y=c_k)\)的极大似然估计是:

\[P(Y=c_k)=\frac{\sum_{i=1}I(y_i=c_k)}{N},k=1,2,\cdots,K \]

设第j个特征\(x^{(j)}\)可能的取值集合为\(\{a_{j1,a_{j2},\cdots,a_{jS_j}}\}\),条件概率\(P(X^{(j)}=x^{(j)}|Y=c_k)\)的极大似然估计为:

\[\begin{aligned} P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)}\\ j=1,2,\cdots,n;l=1,2,\cdots,S_j;k=1,2,\cdots,K\\ \end{aligned} \]

式中,\(x_i^{(j)}\)是指第i个样本的第j个特征,\(a_{jl}\)是指第j个特征可能取的第l个值,I为指示函数。

2.2 学习与分类算法

朴素贝叶斯法的学习过程,实际上就是利用训练数据集计算先验概率和条件概率的过程。而其分类过程,就是求取最大的后验概率的过程。具体的算法过程为:

  • 计算先验概率和条件概率

\[\begin{aligned} P(Y=c_k)=\frac{\sum_{i=1}I(y_i=c_k)}{N},k=1,2,\cdots,K\\ P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)}\\ j=1,2,\cdots,n;l=1,2,\cdots,S_j;k=1,2,\cdots,K\\ \end{aligned} \]

  • 对于给定的实例\(x=(x^{(1)},x^{(2)},\cdots,x^{(n)})^T\),计算

\[P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k),k=1,2,\cdots,K \]

  • 最后分类过程,确定实例x类:

\[y=\arg\max_{c_k}P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k) \]

通过以上方式,就可以利用朴素贝叶斯法对实例进行分类。

2.3 贝叶斯估计

在利用极大似然估计时,可能会出现所估计的概率值为0的情况,这对后验概率的计算会有极大的影响,使分类结果产生偏差。可以利用贝叶斯估计法来解决这类问题情况。
条件概率的贝叶斯估计是指:

\[P_\lambda(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{j=1}^NI(y_i=c_k)+S_j\lambda} \]

其中\(\lambda\geq0\)等价于在随机变量各个取值的频数上加上一个正数\(\lambda>0\),当\(\lambda = 0\)时,即为极大似然估计。在实际的应用中,通常取\(\lambda = 1\),此时称为拉普拉斯平滑(laplace smoothing),由此可得,对于任意\(l=1,2,\cdots,S_j,k=1,2,\cdots,K\),有

\[P_\lambda(X^{(J)}=a_{jl}|Y=c_k)>0 \sum_{l=1}^{S_j}P(X^{(j)}=a_{jl}|Y=c_k)=1 \]

同样,先验概率的贝叶斯估计是:

\[P_\lambda(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda} \]

通过以上贝叶斯估计,就可以有效避免出现所要估计的概率值为0的情况。