全文引用自《统计学习方法》(李航)
朴素贝叶斯(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的情况。
原文地址:https://www.cnblogs.com/zhiyuxuan/p/9676563.html