朴素贝叶斯法的参数估计

朴素贝叶斯法需要估计参数P(Y=ck)P(Y=c_k)P(Xj=xjY=ck)P(X_j=x_j|Y=c_k)

y=f(x)=argmaxckj=1nP(Xj=xjY=ck)P(Y=ck) y=f(x)=\arg \max_{c_k}\prod_{j=1}^n P(X_j=x_j|Y=c_k)P(Y=c_k)

假定数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}T=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\},其中xXRnx\in \mathcal{X}\subseteq R^nyY={c1,c2,...,cK}y\in \mathcal{Y}=\{c_1, c_2,...,c_K\}XX是定义在输入空间X\mathcal{X}上的nn维随机向量,YY是定义在输出空间Y\mathcal{Y}上的随机变量。

1. 极大似然估计

应用极大似然估计法估计相应参数。

先验概率P(Y=ck)P(Y=c_k)的极大似然估计是:

P(Y=ck)=i=1mI(y(i)=ck)m, k=1,2,...,K P(Y=c_k)=\dfrac{\displaystyle\sum_{i=1}^mI(y^{(i)}=c_k)}{m},\ k=1,2,...,K

其中I(yi=ck)I(y_i=c_k)是指示函数,当yi=cky_i=c_k时值为1,其他情况下为0。mm为数据集里的数据量。

假定输入的nn维特征向量xx的第jj维可能的取值为{xj1,xj2,...xjsj}\{x_{j1},x_{j2},...x_{js_{j}}\},则条件概率P(Xj=xjlY=ck)P(X_j=x_{jl}|Y=c_k)的极大似然估计是:

P(Xj=xjlY=ck)=i=1mI(xj(i)=xjl,y(i)=ck)i=1mI(y(i)=ck) P(X_j=x_{jl}|Y=c_k)=\dfrac{\displaystyle\sum_{i=1}^mI(x_j^{(i)}=x_{jl},y^{(i)}=c_k)}{\displaystyle\sum_{i=1}^mI(y^{(i)}=c_k)}

j=1,2,...,n; l=1,2,...,sj; k=1,2,...,K j=1,2,...,n;\ l=1,2,...,s_j;\ k=1,2,...,K

其中xj(i)x_j^{(i)}是第ii个样本的第jj个特征,xjlx_{jl}是第jj个特征的可能取的第ll个值,II为指示函数。

这里证明一下先验概率P(Y=ck)P(Y=c_k)的极大似然估计(参考 https://www.zhihu.com/question/33959624 )。

令参数P(Y=ck)=θk, k=1,2,...,KP(Y=c_k)=\theta_k,\ k=1,2,...,K。则随机变量YY的概率可以用参数来表示为P(Y)=k=1KθkI(Y=ck)P(Y)=\displaystyle\sum_{k=1}^K\theta_kI(Y=c_k),其中II是指示函数。极大似然函数

L(θk;y(1),y(2),...,y(m))=i=1mp(y(i))=k=1Kθktk L(\theta_k;y^{(1)},y^{(2)},...,y^{(m)})=\displaystyle\prod_{i=1}^mp(y^{(i)})=\displaystyle\prod_{k=1}^K\theta_k^{t_k}

其中mm是样本总数,tkt_k为样本中Y=ckY=c_k的样本数目,满足k=1Ktk=m\displaystyle\sum_{k=1}^Kt_k=m。取对数得到

ln(L(θk))=k=1Ktklnθk ln(L(\theta_k))=\displaystyle\sum_{k=1}^Kt_kln\theta_k

要求该函数的最大值,同时有约束条件k=1Kθk=1\displaystyle\sum_{k=1}^K\theta_k=1。利用拉格朗日乘子法,

l(θk,λ)=k=1Ktklnθk+λ(k=1Kθk1) l(\theta_k,\lambda)=\displaystyle\sum_{k=1}^Kt_kln\theta_k+\lambda(\displaystyle\sum_{k=1}^K\theta_k-1)

求导可以得到

l(θk,λ)θk=tkθk+λ=0 \dfrac{\partial l(\theta_k,\lambda)}{\partial \theta_k}=\dfrac{t_k}{\theta_k}+\lambda=0

得到:

tk=λθk, k=1,2,...,K t_k=-\lambda{\theta_k},\ k=1,2,...,K

将所有的KK个式子加起来,得到k=1Ktk=k=1Kλθk\displaystyle\sum_{k=1}^Kt_k=-\displaystyle\sum_{k=1}^K\lambda{\theta_k},同时结合约束条件k=1Kθk=1\displaystyle\sum_{k=1}^K\theta_k=1,可得λ=m\lambda=-m。最终可得

P(Y=ck)=θk=tkm P(Y=c_k)=\theta_k=\dfrac{t_k}{m}

证明完毕。其他更多的详细证明请参考以上链接。

2. 贝叶斯估计

用极大似然估计可能出现所要估计的参数值为0的情况,这会影响到连乘时的值直接为0,使分类结果产生偏差。解决这一问题的方法是采用贝叶斯估计。

条件概率的贝叶斯估计是

Pλ(Xj=xjlY=ck)=i=1mI(xj(i)=xjl,y(i)=ck)+λi=1mI(y(i)=ck)+sjλ P_{\lambda}(X_j=x_{jl}|Y=c_k)=\dfrac{\displaystyle\sum_{i=1}^mI(x_j^{(i)}=x_{jl},y^{(i)}=c_k)+\lambda}{\displaystyle\sum_{i=1}^mI(y^{(i)}=c_k)+s_j\lambda}

式中λ0\lambda \geqslant0sjs_j是特征向量的第jj维可能的取值数量。显然Pλ(Xj=xjlY=ck)>0P_{\lambda}(X_j=x_{jl}|Y=c_k)>0,且l=1sjPλ(Xj=xjlY=ck)=1\displaystyle\sum_{l=1}^{s_j}P_{\lambda}(X_j=x_{jl}|Y=c_k)=1

这等价于在随机变量各个取值的频数上赋予一个正数λ>0\lambda>0。当λ=0\lambda=0时,就是极大似然估计。常取λ=1\lambda=1,这时称为拉布普拉斯平滑(Laplace smoothing)。

先验概率的贝叶斯估计是

Pλ(Y=ck)=i=1mI(y(i)=ck)+λm+Kλ P_{\lambda}(Y=c_k)=\dfrac{\displaystyle\sum_{i=1}^mI(y^{(i)}=c_k)+\lambda}{m+K\lambda}

同样λ0\lambda \geqslant0

示例

由下表的训练数据学习一个朴素贝叶斯分类器并确定x=(2,S)Tx=(2,S)^T的类标记yy

表中X1X_1X2X_2为特征,取值的集合分别为A1={1,2,3}A_1=\{1,2,3\}A2={S,M,L}A_2=\{S,M,L\}YY为类标记,YC={1,1}Y\in C=\{1,-1\}

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
X1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
X2 S M M S S S M M L L L M M L L
Y -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1

极大似然估计

P(Y=1)=915P(Y=1)=\dfrac{9}{15}P(Y=1)=615P(Y=-1)=\dfrac{6}{15}

P(X1=1Y=1)=29P(X_1=1|Y=1)=\dfrac{2}{9}P(X1=2Y=1)=39P(X_1=2|Y=1)=\dfrac{3}{9}P(X1=3Y=1)=49P(X_1=3|Y=1)=\dfrac{4}{9}

P(X2=SY=1)=19P(X_2=S|Y=1)=\dfrac{1}{9}P(X2=MY=1)=49P(X_2=M|Y=1)=\dfrac{4}{9}P(X2=LY=1)=49P(X_2=L|Y=1)=\dfrac{4}{9}

P(X1=1Y=1)=36P(X_1=1|Y=-1)=\dfrac{3}{6}P(X1=2Y=1)=26P(X_1=2|Y=-1)=\dfrac{2}{6}P(X1=3Y=1)=16P(X_1=3|Y=-1)=\dfrac{1}{6}

P(X2=SY=1)=36P(X_2=S|Y=-1)=\dfrac{3}{6}P(X2=MY=1)=26P(X_2=M|Y=-1)=\dfrac{2}{6}P(X2=LY=1)=16P(X_2=L|Y=-1)=\dfrac{1}{6}

对于给定的x=(2,S)Tx=(2,S)^T计算:

P(Y=1)P(X1=2Y=1)P(X2=SY=1)=9153919=145P(Y=1)P(X_1=2|Y=1)P(X_2=S|Y=1)=\dfrac{9}{15}\cdot \dfrac{3}{9} \cdot \dfrac{1}{9}=\dfrac{1}{45}

P(Y=1)P(X1=2Y=1)P(X2=SY=1)=6152636=115P(Y=-1)P(X_1=2|Y=-1)P(X_2=S|Y=-1)=\dfrac{6}{15}\cdot \dfrac{2}{6} \cdot \dfrac{3}{6}=\dfrac{1}{15}

Y=1Y=-1时比较大,所以y=1y=-1

拉普拉斯平滑估计λ=1\lambda=1):

P(Y=1)=1017P(Y=1)=\dfrac{10}{17}P(Y=1)=717P(Y=-1)=\dfrac{7}{17}

P(X1=1Y=1)=312P(X_1=1|Y=1)=\dfrac{3}{12}P(X1=2Y=1)=412P(X_1=2|Y=1)=\dfrac{4}{12}P(X1=3Y=1)=512P(X_1=3|Y=1)=\dfrac{5}{12}

P(X2=SY=1)=212P(X_2=S|Y=1)=\dfrac{2}{12}P(X2=MY=1)=512P(X_2=M|Y=1)=\dfrac{5}{12}P(X2=LY=1)=512P(X_2=L|Y=1)=\dfrac{5}{12}

P(X1=1Y=1)=49P(X_1=1|Y=-1)=\dfrac{4}{9}P(X1=2Y=1)=39P(X_1=2|Y=-1)=\dfrac{3}{9}P(X1=3Y=1)=29P(X_1=3|Y=-1)=\dfrac{2}{9}

P(X2=SY=1)=49P(X_2=S|Y=-1)=\dfrac{4}{9}P(X2=MY=1)=39P(X_2=M|Y=-1)=\dfrac{3}{9}P(X2=LY=1)=29P(X_2=L|Y=-1)=\dfrac{2}{9}

对于给定的x=(2,S)Tx=(2,S)^T计算

P(Y=1)P(X1=2Y=1)P(X2=SY=1)=1017412212=5153=0.03P(Y=1)P(X_1=2|Y=1)P(X_2=S|Y=1)=\dfrac{10}{17}\cdot \dfrac{4}{12} \cdot \dfrac{2}{12}=\dfrac{5}{153}=0.03

P(Y=1)P(X1=2Y=1)P(X2=SY=1)=7173949=28459=0.06P(Y=-1)P(X_1=2|Y=-1)P(X_2=S|Y=-1)=\dfrac{7}{17}\cdot \dfrac{3}{9} \cdot \dfrac{4}{9}=\dfrac{28}{459}=0.06

由于Y=1Y=-1时,比较大,所以y=1y=-1

results matching ""

    No results matching ""