统计学习四:1.朴素贝叶斯

Posted zhiyuxuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计学习四:1.朴素贝叶斯相关的知识,希望对你有一定的参考价值。

全文引用自《统计学习方法》(李航)

朴素贝叶斯(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)
而朴素贝叶斯法有一个较强的前提假设,即条件独立性假设,因此条件概率满足:
[ egin{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)=argmax_{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=argmax_{c_k}P(Y=c_k)prod_jP(P(X^{(j)}=x^{(j)})|Y=c_k) ]

1.2 后验概率最大化的含义

朴素贝叶斯法将输入实例划分为后验概率最大的类,实际上等价于期望风险最小化。
假设损失函数为0-1损失函数:
[ L(Y,f(X))= egin{cases} 1,Y eq f(X),Y=f(X) end{cases} ]
式中(f(x))是分类决策函数,那么期望风险为:
[ R_{exp}(f)=E[L(Y,f(X))] ]
上述期望是对联合分布(P(X,Y))所取,因此:
[ R_{exp}=E_Xsum_{k=1}^{K}left[L(c_k,f(X)) ight]P(c_k|X) ]
为使期望风险最小话,只需(X=x)逐个极小化,因此:
[ egin{aligned} f(x) &=argmin_{yin Y}sum_{k=1}^{K}L(c_k,y)P(c_k|X=x)&=argmin_{yin Y}sum_{k=1}^{K}P(y eq c_k|X=x)&=argmin_{yin Y}sum_{k=1}^{K}(1-P(y=c_k|X=x))&=argmin_{yin Y}P(y=c_k|X=x) end{aligned} ]
因此,根据期望风险最小化准则,可以得到后验概率最大化准则:
[ f(x)=argmax_{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))的极大似然估计为:
[ egin{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 学习与分类算法

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

  • 计算先验概率和条件概率
    [ egin{aligned} P(Y=c_k)=frac{sum_{i=1}I(y_i=c_k)}{N},k=1,2,cdots,KP(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=argmax_{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_jlambda} ]
其中(lambdageq0)等价于在随机变量各个取值的频数上加上一个正数(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+Klambda} ]
通过以上贝叶斯估计,就可以有效避免出现所要估计的概率值为0的情况。













































以上是关于统计学习四:1.朴素贝叶斯的主要内容,如果未能解决你的问题,请参考以下文章

李航统计方法(四)---朴素贝叶斯

统计学习方法-朴素贝叶斯

统计学习方法-朴素贝叶斯

《统计学习方法》笔记--朴素贝叶斯

《统计学习方法》笔记--朴素贝叶斯

统计学习方法与Python实现——朴素贝叶斯法