朴素贝叶斯法需要估计参数$$P(Y=c_k)$$和$$P(X_j=x_j|Y=c_k)$$
$$ 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)})}$$,其中$$x\in \mathcal{X}\subseteq R^n$$,$$y\in \mathcal{Y}={c_1, c_2,...,c_K}$$。$$X$$是定义在输入空间$$\mathcal{X}$$上的$$n$$维随机向量,$$Y$$是定义在输出空间$$\mathcal{Y}$$上的随机变量。
应用极大似然估计法估计相应参数。
先验概率$$P(Y=c_k)$$的极大似然估计是:
$$ P(Y=c_k)=\dfrac{\displaystyle\sum_{i=1}mI(y{(i)}=c_k)}{m},\ k=1,2,...,K $$
其中$$I(y_i=c_k)$$是指示函数,当$$y_i=c_k$$时值为1,其他情况下为0。$$m$$为数据集里的数据量。
假定输入的$$n$$维特征向量$$x$$的第$$j$$维可能的取值为$${x_{j1},x_{j2},...x_{js_{j}}}$$,则条件概率$$P(X_j=x_{jl}|Y=c_k)$$的极大似然估计是:
$$ 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,...,s_j;\ k=1,2,...,K $$
其中$$x_j^{(i)}$$是第$$i$$个样本的第$$j$$个特征,$$x_{jl}$$是第$$j$$个特征的可能取的第$$l$$个值,$$I$$为指示函数。
这里证明一下先验概率$$P(Y=c_k)$$的极大似然估计(参考 https://www.zhihu.com/question/33959624 )。
令参数$$P(Y=c_k)=\theta_k,\ k=1,2,...,K$$。则随机变量$$Y$$的概率可以用参数来表示为$$P(Y)=\displaystyle\sum_{k=1}^K\theta_kI(Y=c_k)$$,其中$$I$$是指示函数。极大似然函数
$$ 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} $$
其中$$m$$是样本总数,$$t_k$$为样本中$$Y=c_k$$的样本数目,满足$$\displaystyle\sum_{k=1}^Kt_k=m$$。取对数得到
$$ ln(L(\theta_k))=\displaystyle\sum_{k=1}^Kt_kln\theta_k $$
要求该函数的最大值,同时有约束条件$$\displaystyle\sum_{k=1}^K\theta_k=1$$。利用拉格朗日乘子法,
$$ l(\theta_k,\lambda)=\displaystyle\sum_{k=1}Kt_kln\theta_k+\lambda(\displaystyle\sum_{k=1}K\theta_k-1) $$
求导可以得到
$$ \dfrac{\partial l(\theta_k,\lambda)}{\partial \theta_k}=\dfrac{t_k}{\theta_k}+\lambda=0 $$
得到:
$$ t_k=-\lambda{\theta_k},\ k=1,2,...,K $$
将所有的$$K$$个式子加起来,得到$$\displaystyle\sum_{k=1}Kt_k=-\displaystyle\sum_{k=1}K\lambda{\theta_k}$$,同时结合约束条件$$\displaystyle\sum_{k=1}^K\theta_k=1$$,可得$$\lambda=-m$$。最终可得
$$ P(Y=c_k)=\theta_k=\dfrac{t_k}{m} $$
证明完毕。其他更多的详细证明请参考以上链接。
用极大似然估计可能出现所要估计的参数值为0的情况,这会影响到连乘时的值直接为0,使分类结果产生偏差。解决这一问题的方法是采用贝叶斯估计。
条件概率的贝叶斯估计是
$$ 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} $$
式中$$\lambda \geqslant0$$,$$s_j$$是特征向量的第$$j$$维可能的取值数量。显然$$P_{\lambda}(X_j=x_{jl}|Y=c_k)>0$$,且$$\displaystyle\sum_{l=1}^{s_j}P_{\lambda}(X_j=x_{jl}|Y=c_k)=1$$。
这等价于在随机变量各个取值的频数上赋予一个正数$$\lambda>0$$。当$$\lambda=0$$时,就是极大似然估计。常取$$\lambda=1$$,这时称为拉布普拉斯平滑(Laplace smoothing)。
先验概率的贝叶斯估计是
$$ P_{\lambda}(Y=c_k)=\dfrac{\displaystyle\sum_{i=1}mI(y{(i)}=c_k)+\lambda}{m+K\lambda} $$
同样$$\lambda \geqslant0$$。
由下表的训练数据学习一个朴素贝叶斯分类器并确定$$x=(2,S)^T$$的类标记$$y$$。
表中$$X_1$$,$$X_2$$为特征,取值的集合分别为$$A_1={1,2,3}$$,$$A_2={S,M,L}$$,$$Y$$为类标记,$$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)=\dfrac{9}{15}$$,$$P(Y=-1)=\dfrac{6}{15}$$
$$P(X_1=1|Y=1)=\dfrac{2}{9}$$,$$P(X_1=2|Y=1)=\dfrac{3}{9}$$,$$P(X_1=3|Y=1)=\dfrac{4}{9}$$
$$P(X_2=S|Y=1)=\dfrac{1}{9}$$,$$P(X_2=M|Y=1)=\dfrac{4}{9}$$,$$P(X_2=L|Y=1)=\dfrac{4}{9}$$
$$P(X_1=1|Y=-1)=\dfrac{3}{6}$$,$$P(X_1=2|Y=-1)=\dfrac{2}{6}$$,$$P(X_1=3|Y=-1)=\dfrac{1}{6}$$
$$P(X_2=S|Y=-1)=\dfrac{3}{6}$$,$$P(X_2=M|Y=-1)=\dfrac{2}{6}$$,$$P(X_2=L|Y=-1)=\dfrac{1}{6}$$
对于给定的$$x=(2,S)^T$$计算:
$$P(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(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=-1$$时比较大,所以$$y=-1$$。
拉普拉斯平滑估计($$\lambda=1$$):
$$P(Y=1)=\dfrac{10}{17}$$,$$P(Y=-1)=\dfrac{7}{17}$$
$$P(X_1=1|Y=1)=\dfrac{3}{12}$$,$$P(X_1=2|Y=1)=\dfrac{4}{12}$$,$$P(X_1=3|Y=1)=\dfrac{5}{12}$$
$$P(X_2=S|Y=1)=\dfrac{2}{12}$$,$$P(X_2=M|Y=1)=\dfrac{5}{12}$$,$$P(X_2=L|Y=1)=\dfrac{5}{12}$$
$$P(X_1=1|Y=-1)=\dfrac{4}{9}$$,$$P(X_1=2|Y=-1)=\dfrac{3}{9}$$,$$P(X_1=3|Y=-1)=\dfrac{2}{9}$$
$$P(X_2=S|Y=-1)=\dfrac{4}{9}$$,$$P(X_2=M|Y=-1)=\dfrac{3}{9}$$,$$P(X_2=L|Y=-1)=\dfrac{2}{9}$$
对于给定的$$x=(2,S)^T$$计算
$$P(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(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=-1$$时,比较大,所以$$y=-1$$。