朴素贝叶斯参数推导(纯数学)

朴素贝叶斯推导参数推导

1 问题回顾

基于贝叶斯的垃圾邮件分类,主要原理是通过对原始邮件数据的分析得出一种模型。根据邮件中单词的内容符合不同标签的概率积的大小,来判断邮件所属的标签类型。

基于贝叶斯的垃圾邮件分类中,计算是某邮件是正常邮件的概率,所用到的公式如(1-1)所示。
P ( w 1 , w 2 , w 3 , . . . . w n ∣ 正 常 ) × P ( 正 常 ) = P ( 正 常 ) × ∏ i = 1 n P ( w i ∣ 正 常 ) (1-1) P(w_1,w_2,w_3,....w_n|正常)×P(正常)=P(正常)×\prod_{i=1}^nP(w_i|正常) \tag{1-1} P(w1,w2,w3,....wn)×P()=P()×i=1nP(wi)(1-1)
以上的有两个需要计算,我们默认是这样计算的,如公式(1-2)和公式(1-3)所示。


P ( 正 常 ) = 正 常 邮 件 的 个 数 正 常 邮 件 的 个 数 + 垃 圾 邮 件 的 个 数 (1-2) P(正常)=\frac{正常邮件的个数}{正常邮件的个数+垃圾邮件的个数} \tag{1-2} P()=+(1-2)
P ( w i ∣ 正 常 ) = 正 常 邮 件 下 w 单 词 出 现 的 次 数 正 常 邮 件 下 单 词 的 总 数 (1-3) P(w_i|正常)=\frac{正常邮件下w单词出现的次数}{正常邮件下单词的总数} \tag{1-3} P(wi)=w(1-3)

2.开始推导

设有邮件数据集   D = { ( X i , Y i ) } \ D=\{(X_i,Y_i)\}  D={(Xi,Yi)}
其中   X i 和 Y i \ X_i和Y_i  XiYi分别表示邮件以及其标签(正常,垃圾)并用1,0 表示。
此外,每一个   X 可 分 解 为 单 词 集 合 \ X 可分解为单词集合  X   w 1 , w 2 . . . . . w m i \ w_1,w_2.....w_{m_i}  w1,w2.....wmi,其中   m i \ m_i  mi是该文档的单词个数。

2.1构造目标函数

原式(1-1)可化为如下公式(2-1)。

我们认为每个单词之间是独立存在的(这就是朴素贝叶斯的朴素之处)。根据条件独立公式得:

P ( D ) = ∏ i = 0 n    {   ∏ j = 0 m i P ( w j ∣ y i ) ⋅ P ( y i )   } (2-1) P(D)= \prod_{i=0}^n~~\{~\prod_{j=0}^{m_i} P(w_j|y_i)\cdot P(y_i)~\} \tag{2-1} P(D)=i=0n  { j=0miP(wjyi)P(yi) }(2-1)
取公式(2-1)部分,作如下转化:
∏ j = 0 m i P ( w j ∣ y i ) ⇒ ∏ j = 0 V P ( w j ∣ y i ) n i , j (2-2) \prod_{j=0}^{m_i} P(w_j|y_i) \Rightarrow \prod_{j=0}^{V} P(w_j|y_i)^{n_{i,j}} \tag{2-2} j=0miP(wjyi)j=0VP(wjyi)ni,j(2-2)
由于我们改为遍历字典,设字典的长度为V。   n i j \ n_{ij}  nij表示第   X i \ X_i  Xi 邮件中,包含   w j \ w_j  wj单词的个数。如果单词不存在,   n i , j = 0 , 则 P ( w i ∣ y i ) 0 = 1 \ n_{i,j} =0 ,则 P(w_i|y_i)^0=1  ni,j=0P(wiyi)0=1,所以真正有效的值,还是   X i \ X_i  Xi 邮件中,包含的单词。所以箭头两边成立。这看似等价的操作,却为以后提供了巨大遍历。具体什么遍历稍后再说,单说回公式(2-1)。
公式(2-1) ,经过公式(2-2) 的变形之后变成如下形式:
P ( D ) = ∏ i = 0 n    {   ∏ j = 0 V P ( w j ∣ y i ) n i , j ⋅ P ( y i )   } (2-3) P(D)= \prod_{i=0}^n~~\{~\prod_{j=0}^{V} P(w_j|y_i)^{n_{i,j}} \cdot P(y_i)~\} \tag{2-3} P(D)=i=0n  { j=0VP(wjyi)ni,jP(yi) }(2-3)

2.2 化简目标函数

下面求其最大值,由于log函数的单调递增性。取对数后,最大值位置不变。
a r g m a x P ( D ) = a r g m a x log ⁡ [ P ( D ) ] argmax P(D)= argmax \log [P(D)] argmaxP(D)=argmaxlog[P(D)]
由log函数性质可得
a r g m a x P ( D ) = a r g m a x ∑ i = 0 n    {   ∑ j = 0 V   n i , j ⋅ log ⁡ P ( w j ∣ y i ) + log ⁡ P ( y i )   } argmax P(D)=argmax \sum_{i=0}^n~~\{~\sum_{j=0}^{V}~n_{i,j} \cdot \log P(w_j|y_i) + \log P(y_i)~\} argmaxP(D)=argmaxi=0n  { j=0V ni,jlogP(wjyi)+logP(yi) }

由于这个是二分类问题,我们可以穷举分类,并用k表示。如k=0 表示垃圾邮件;k=1 表示正常邮件。于是得公式(2-4)

a r g m a x P ( D ) = a r g m a x ∑ k = 0 1     ∑ i = ( y i = k )    {   ∑ j = 0 V   n i , j ⋅ log ⁡ P ( w j ∣ y i = k ) + log ⁡ P ( y i = k )   } (2-4) argmax P(D)=argmax \sum_{k=0}^1 ~~~\sum_{i=(y_i=k)}~~\{~\sum_{j=0}^{V}~n_{i,j} \cdot \log P(w_j|y_i=k) + \log P(y_i=k)~\}\tag{2-4} argmaxP(D)=argmaxk=01   i=(yi=k)  { j=0V ni,jlogP(wjyi=k)+logP(yi=k) }(2-4)


  θ i , k = P ( w j ∣ y i = k ) , k = 0 , 1 \ \theta_{i,k}= P(w_j|y_i=k) ,k=0,1  θi,k=P(wjyi=k)k=0,1
  π k = P ( y i = k ) , k = 0 , 1 \ \pi_k= P(y_i=k),k=0,1  πk=P(yi=k)k=0,1

结合公式(2-4),使用最大似然估计(MLE ),得到目标函数(2-5)。
θ M L E , π M L E = a r g m a x { θ , π } ∑ k = 0 1     ∑ i = ( y i = k )    {   ∑ j = 0 V   n i , j ⋅ log ⁡ θ i , k + log ⁡ π k   } (2-5) \theta_{MLE} ,\pi_{MLE}=argmax_{\{\theta,\pi\}}\sum_{k=0}^1 ~~~\sum_{i=(y_i=k)}~~\{~\sum_{j=0}^{V}~n_{i,j} \cdot \log \theta_{i,k}+ \log \pi_k~\}\tag{2-5} θMLE,πMLE=argmax{θ,π}k=01   i=(yi=k)  { j=0V ni,jlogθi,k+logπk }(2-5)

拆分得公式(2-5)得
θ M L E , π M L E = a r g m a x { θ , π } ∑ k = 0 1     ∑ i = ( y i = k )     ∑ j = 0 V   n i , j ⋅ log ⁡ θ i , k + ∑ k = 0 1     ∑ i = ( y i = k ) log ⁡ π k   (2-6) \theta_{MLE} ,\pi_{MLE}=argmax_{\{\theta,\pi\}} \sum_{k=0}^1 ~~~\sum_{i=(y_i=k)}~~~\sum_{j=0}^{V}~n_{i,j} \cdot \log \theta_{i,k}+ \sum_{k=0}^1 ~~~\sum_{i=(y_i=k)} \log \pi_k~\tag{2-6} θMLE,πMLE=argmax{θ,π}k=01   i=(yi=k)   j=0V ni,jlogθi,k+k=01   i=(yi=k)logπk (2-6)

由于   ∑ i = ( y i = k ) \ \sum_{i=(y_i=k)}  i=(yi=k)表示所有取K值的邮件,不妨令   n k \ {n_k}  表示取k的邮件数。
∑ i = ( y i = k ) log ⁡ π k = n k ⋅ log ⁡ π k \sum_{i=(y_i=k)} \log \pi_k=n_k\cdot \log \pi_k i=(yi=k)logπk=nklogπk

代入公式(2-6)得,我们最终的目标函数,如公式(2-7)所示。
θ M L E , π M L E = a r g m a x { θ , π } ∑ k = 0 1     ∑ i = ( y i = k )     ∑ j = 0 V   n i , j ⋅ log ⁡ θ i , k + ∑ k = 0 1 n k ⋅ log ⁡ π k   (2-7) \theta_{MLE} ,\pi_{MLE}=argmax_{\{\theta,\pi\}} \sum_{k=0}^1 ~~~\sum_{i=(y_i=k)}~~~\sum_{j=0}^{V}~n_{i,j} \cdot \log \theta_{i,k}+ \sum_{k=0}^1 n_k\cdot \log \pi_k~\tag{2-7} θMLE,πMLE=argmax{θ,π}k=01   i=(yi=k)   j=0V ni,jlogθi,k+k=01nklogπk (2-7)
此外,还有两条约束条件
  ∑ k = 0 1 π k = 1 (s.t.-1) \ \sum_{k=0}^1 \pi_k=1 \tag{s.t.-1}  k=01πk=1(s.t.-1)
∑ j = 0 V θ j , k = 1 , k = 0 , 1 (s.t.-2) \sum_{j=0}^V \theta_{j,k}=1 ,k=0,1\tag{s.t.-2} j=0Vθj,k=1k=0,1(s.t.-2)

2.3 拉格朗日乘数法

根据公式(2-7)、(s.t.-1)和(s.t.-1)结合构建拉格朗日函数。
F ( θ , π , λ ) = ∑ k = 0 1    ∑ i = ( y i = k )    ∑ j = 0 V   n i , j ⋅ log ⁡ θ i , k + ∑ k = 0 1 n k ⋅ log ⁡ π k + λ ⋅ ( ∑ k = 0 1 π k − 1 ) + ∑ k = 0 1 λ k ⋅ ( ∑ j = 0 V θ j , k − 1 ) (2-8) F(\theta,\pi,\lambda)=\sum_{k=0}^1 ~~\sum_{i=(y_i=k)}~~\sum_{j=0}^{V}~n_{i,j} \cdot \log \theta_{i,k}+ \sum_{k=0}^1 n_k\cdot \log \pi_k+\lambda\cdot ( \sum_{k=0}^1 \pi_k-1 )+\sum_{k=0}^1 \lambda_k\cdot (\sum_{j=0}^V \theta_{j,k}-1) \tag{2-8} F(θ,π,λ)=k=01  i=(yi=k)  j=0V ni,jlogθi,k+k=01nklogπk+λ(k=01πk1)+k=01λk(j=0Vθj,k1)(2-8)

2.3.1 对 θ \theta θ 求偏导

θ \theta θ 求偏导,只要保留和   θ \ \theta  θ相关的项即可,
∂ F ( θ , π , λ ) ∂ θ = ∂ { ∑ k = 0 1    ∑ i = ( y i = k )    ∑ j = 0 V   n i , j ⋅ log ⁡ θ i , k + ∑ k = 0 1 λ k ⋅ ( ∑ j = 0 V θ j , k − 1 ) } ∂ θ \frac{\partial F(\theta,\pi,\lambda)}{\partial \theta} =\frac{\partial \{\sum_{k=0}^1 ~~\sum_{i=(y_i=k)}~~\sum_{j=0}^{V}~n_{i,j} \cdot \log \theta_{i,k}+ \sum_{k=0}^1 \lambda_k\cdot (\sum_{j=0}^V \theta_{j,k}-1) \}}{\partial \theta} θF(θ,π,λ)=θ{k=01  i=(yi=k)  j=0V ni,jlogθi,k+k=01λk(j=0Vθj,k1)}
为了方便计算,我们只考虑单方向,即忽略k和j的取值,仅仅使用k和j表示某个方向。
∂ F ( θ , π , λ ) ∂ θ = ∂ {    ∑ i = ( y i = k ) n i , j ⋅ log ⁡ θ i , k + λ k ⋅ ( θ j , k − 1 ) } ∂ θ \frac{\partial F(\theta,\pi,\lambda)}{\partial \theta} =\frac{\partial \{ ~~\sum_{i=(y_i=k)} n_{i,j} \cdot \log \theta_{i,k}+ \lambda_k\cdot ( \theta_{j,k}-1) \}}{\partial \theta} θF(θ,π,λ)=θ{  i=(yi=k)ni,jlogθi,k+λk(θj,k1)}
求导得
∂ F ( θ , π , λ ) ∂ θ = ∑ i = ( y i = k ) n i , j θ i , k + λ k \frac{\partial F(\theta,\pi,\lambda)}{\partial \theta} =\sum_{i=(y_i=k)} \frac {n_{i,j} } {\theta_{i,k}}+ \lambda_k θF(θ,π,λ)=i=(yi=k)θi,kni,j+λk
令导数为零,求得驻点,如公式(2-9)
θ j , k = − 1 λ k ⋅ ∑ i = ( y i = k ) n i , j (2-9) \theta _{j,k}=-\frac{1}{\lambda_k } \cdot\sum_{i=(y_i=k)} n_{i,j}\tag{2-9} θj,k=λk1i=(yi=k)ni,j(2-9)

代入(s.t.-2)得

∑ j = 0 V θ j , k = ∑ j = 0 V ( − 1 λ k ⋅ ∑ i = ( y i = k ) n i , j ) = 1 \sum_{j=0}^V \theta_{j,k}=\sum_{j=0}^V (-\frac{1}{\lambda_k } \cdot\sum_{i=(y_i=k)} n_{i,j} )=1 j=0Vθj,k=j=0V(λk1i=(yi=k)ni,j)=1
从而
λ k = − ∑ j = 0 V ∑ i = ( y i = k ) n i , j (2-10) \lambda_k=-\sum_{j=0}^V \sum_{i=(y_i=k)} n_{i,j}\tag{2-10} λk=j=0Vi=(yi=k)ni,j(2-10)
代入到公式(2-9)得,
θ j , k = ∑ i = ( y i = k ) n i , j ∑ j = 0 V        ∑ i = ( y i = k ) n i , j \theta _{j,k}=\frac{\sum_{i=(y_i=k) }n_{i,j} } {\sum_{j=0}^V~~~~~~ \sum_{i=(y_i=k)} n_{i,j}} θj,k=j=0V      i=(yi=k)ni,ji=(yi=k)ni,j
这也是我们开始所说的
P ( w i ∣ 正 常 ) = 正 常 邮 件 下 w 单 词 出 现 的 次 数 正 常 邮 件 下 单 词 的 总 数 P(w_i|正常)=\frac{正常邮件下w单词出现的次数}{正常邮件下单词的总数} P(wi)=w

2.3.2 对 π \pi π 求偏导

π \pi π 求偏导,只要保留和   π \ \pi  π相关的项
∂ F ( θ , π , λ ) ∂ π = ∂ { ∑ k = 0 1 n k ⋅ log ⁡ π k + λ ⋅ ( ∑ k = 0 1 π k − 1 ) } ∂ π \frac{\partial F(\theta,\pi,\lambda)}{\partial \pi} =\frac{\partial \{\sum_{k=0}^1 n_k\cdot \log \pi_k+\lambda\cdot ( \sum_{k=0}^1 \pi_k-1 ) \}}{\partial \pi} πF(θ,π,λ)=π{k=01nklogπk+λ(k=01πk1)}
为了方便计算,我们只考虑单方向,即忽略k和j的取值,仅仅使用k和j表示某个方向。
∂ F ( θ , π , λ ) ∂ π = ∂ { n k ⋅ log ⁡ π k + λ ⋅ ( π k − 1 ) } ∂ π \frac{\partial F(\theta,\pi,\lambda)}{\partial \pi} =\frac{\partial \{ n_k\cdot \log \pi_k+\lambda\cdot ( \pi_k-1 ) \}}{\partial \pi} πF(θ,π,λ)=π{nklogπk+λ(πk1)}
求导得
∂ F ( θ , π , λ ) ∂ π = n k π k + λ \frac{\partial F(\theta,\pi,\lambda)}{\partial \pi} = \frac {n_k } {\pi_k}+ \lambda πF(θ,π,λ)=πknk+λ
令导数为零,求得驻点
π k = − n k λ (2-11) \pi_{k}=-\frac{ n_k}{\lambda } \tag{2-11} πk=λnk(2-11)

代入(s.t.-1)得

∑ k = 0 1 π k = ∑ k = 0 1 − n k λ = 1 \sum_{k=0}^1 \pi_k=\sum_{k=0}^1 -\frac{ n_k}{\lambda }=1 k=01πk=k=01λnk=1
从而
λ = − ∑ k = 0 1 n k (2-12) \lambda =-\sum_{k=0}^1 n_k\tag{2-12} λ=k=01nk(2-12)
代入到公式(2-11)得
π k = n k ∑ k = 0 1 n k \pi_k=\frac{ n_k}{\sum_{k=0}^1 n_k} πk=k=01nknk
这也是我们开始所说的

P ( 正 常 ) = 正 常 邮 件 的 个 数 正 常 邮 件 的 个 数 + 垃 圾 邮 件 的 个 数 P(正常)=\frac{正常邮件的个数}{正常邮件的个数+垃圾邮件的个数} P()=+

3.问题总结

  • 本次朴素贝叶斯的推导,默认认为邮件中的单词是条件独立的,这也是朴素贝叶斯的朴素之处。
  • 使用拉格朗日乘数法求得驻点的 θ \theta θ π \pi π的值,而凸函数是必要的前提,否则无法判断该驻点是否为全局最优解。
  • 本次计算默认是二分类问题,即k的取值为0,1 。但是,完全可以推广到n分类问题。
  • 在对拉格朗日函数求偏导时,可以只考虑一个分类的一个单词,应为对于整体的数据集,他们相当于一个随机样本(未确定)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值