伯努利分布+朴素贝叶斯分类器の概率解释

「伯努利分布+朴素贝叶斯」分类器

在神经网络技术还不成熟的时候,朴素贝叶斯分类器(NBC)是文档分类的利器。即便是在神经网络满地走的今天,朴素贝叶斯模型依然有很大的价值。进行文档分类时,这个模型只需要进行几次简单的循环,就可以给出结果,在一些对结果要求不是特别高、对性能要求很高的场景下,具有很大的价值。

这篇文章以文档分类问题引出,重点将特征的伯努利分布(Bernoulli)带入朴素贝叶斯模型,熟悉贝叶斯统计的流程和计算。

本文的md源码在这里:AnBlog/统计和机器学习

目录

  • 「伯努利分布+朴素贝叶斯」分类器
    • 可以解决的问题
    • 「朴素」的意思
    • 具体要算什么
    • 数据情况和分布假设
    • 似然 (Likelihood)
    • 最大似然估计 (MLE)
    • 先验和后验
      • 先验 (Priori)
      • 后验 (Posteri)
    • 最大后验估计(MAP)
    • 预测
      • 带入估计值
      • 在参数空间上平滑

可以解决的问题

在进行文档分类之前,需要对文本进行一些处理。对于这个模型来说,最关键的一步是建立一个特征(feature)向量,向量的每个分量(entry)对应文本中可能出现的一个单词,取值 0 , 1 0,1 0,1,表示存在/不存在。

这样的一个分量用伯努利分布描述,参数为 θ \theta θ
p ( x = 1 ∣ θ ) = θ , p ( x = 0 ∣ θ ) = 1 − θ p(x=1|\theta)=\theta,p(x=0|\theta)=1-\theta p(x=1θ)=θ,p(x=0θ)=1θ
在其他问题中,这个分布可能取正态分布,或其他分布,但过程的其他部分大同小异。

建立这样的一个从「单词」到「 0 , 1 0,1 0,1」的映射,可以通过简单的哈希表实现。一段文本中可能出现各种各样的单词,为了保证完备,一段文本对应的特征可能特别多,可能包含所有的英语单词、中文字符,以及世界上的各种其他语言!一定存在一些更省空间的优化,但这不是这篇文章的重点。

模型的目标由需求决定,通常是个二分类问题,判断邮件是/不是垃圾邮件。这篇文章讨论多类分类问题,目标 y y y服从多项的伯努利分布(Multinoulli),参数为 π \pi π
p ( y ∣ π ) = ∏ c π c I ( y = c ) , ∑ c π c = 1 p(y|\pi)=\prod_c\pi_c^{I(y=c)},\sum_c\pi_c=1 p(yπ)=cπcI(y=c),cπc=1
解决问题的过程,就是根据现有的数据 D D D,估计参数 θ , π \theta,\pi θ,π,从而求目标 y y y未来取某值的概率 p ( y = … ) p(y=…) p(y=)

「朴素」的意思

「朴素」指的是假设对象的特征都相互独立,这当然不是一个完美的假设,所以才「朴素」(naive)。也就是说,对象特征 x ⃗ \vec x x 的概率分布函数,是各个特征 x j x_j xj的概率分布函数的乘积:
p ( x ⃗ ) = ∏ j = 1 D p ( x j ) p(\vec x)=\prod_{j=1}^Dp(x_j) p(x )=j=1Dp(xj)

具体要算什么

假设一个多类分类问题,在具有数据集合 D D D的时候,看见一些特征 x ⃗ \vec x x 时,目标 y y y应取何值。目标 y y y由概率分布描述:
p ( y = c ∣ x ⃗ , D ) p(y=c|\vec x,D) p(y=cx ,D)
用这个模型进行预测:
p ( y = c ∣ x ⃗ , D ) ∝ p ( y = c ∣ D ) p ( x ⃗ ∣ y = c , D ) = p ( y = c ∣ D ) ∏ j p ( x j ∣ y = c , D ) p(y=c|\vec x,D)\propto p(y=c|D)p(\vec x|y=c,D)=p(y=c|D)\prod_jp(x_j|y=c,D) p(y=cx ,D)p(y=cD)p(x y=c,D)=p(y=cD)jp(xjy=c,D)
模型的目标是分别表达出 p ( y = c ∣ D ) , p ( x j ∣ y = c , D ) p(y=c|D),p(x_j|y=c,D) p(y=cD),p(xjy=c,D)

数据情况和分布假设

假设特征 x x x都只能取得两个离散的值 0 , 1 0,1 0,1,表示「是否存在」,可以用伯努利分布描述这样的数据:
p ( x j ∣ θ j ) = θ j x j ( 1 − θ j ) 1 − x j p(x_j|\theta_j)=\theta_j^{x_j}(1-\theta_j)^{1-x_j} p(xjθj)=θjxj(1θj)1xj
x x x当然可以取其他的值和分布,取值连续时可以取正态分布,取值为多个离散值时可以是多项伯努利分布。

为了让模型具备更多数据,参数 θ \theta θ和目标分类 c c c发生依赖,不同的 c c c对应不同的参数 θ \theta θ,则要估计的参数 θ \theta θ是一个矩阵 θ j c \theta_{jc} θjc
p ( x j ∣ y = c , θ j c ) = θ j c x j ( 1 − θ j c ) 1 − x j p(x_j|y=c,\theta_{jc})=\theta_{jc}^{x_j}(1-\theta_{jc})^{1-x_j} p(xjy=c,θjc)=θjcxj(1θjc)1xj
还未完成的是表达 p ( θ j c ∣ D ) p(\theta_{jc}|D) p(θjcD)

y y y可以取离散的多个不同值, y ∣ D y|D yD和特征 x x x无关,可以通过多项伯努利分布描述:
p ( y ∣ π ) = ∏ c π c I ( y = c ) , ∑ c π c = 1 p(y|\pi)=\prod_c\pi_c^{I(y=c)},\sum_c\pi_c=1 p(yπ)=cπcI(y=c),cπc=1
参数 π \pi π也需要估计。

写出联合后验分布:
p ( θ , π ∣ D ) ∝ p ( θ , π ) p ( D ∣ θ , π ) = p ( θ ) p ( π ) p ( D ∣ θ , π ) p(\theta,\pi|D)\propto p(\theta,\pi)p(D|\theta,\pi)=p(\theta)p(\pi)p(D|\theta,\pi) p(θ,πD)p(θ,π)p(Dθ,π)=p(θ)p(π)p(Dθ,π)

似然 (Likelihood)

接上式似然:
p ( D ∣ θ , π ) = ∏ i p ( x ( i ) , y ( i ) ∣ θ , π ) = ∏ i p ( x ( i ) ∣ θ , π ) p ( y ( i ) ∣ θ , π ) = ∏ i p ( x ( i ) | θ ) p ( y ( i ) ∣ π ) p(D|\theta,\pi)=\prod_ip(x^{(i)},y^{(i)}|\theta,\pi)=\prod_ip(x^{(i)}|\theta,\pi)p(y^{(i)} |\theta,\pi)=\prod_ip(x^{(i)}|\theta)p(y^{(i)} |\pi) p(Dθ,π)=ip(x(i),y(i)θ,π)=ip(x(i)θ,π)p(y(i)θ,π)=ip(x(i)θ)p(y(i)π)
其中,对每个特征 j j j
p ( x ( i ) ∣ θ ) = ∏ j = 1 D p ( x j ( i ) ∣ θ j ) p(x^{(i)}|\theta)=\prod_{j=1}^Dp(x_j^{(i)}|\theta_j) p(x(i)θ)=j=1Dp(xj(i)θj)
为不同的分类设置不同的参数 θ \theta θ以增加模型的复杂度:
p ( x j ( i ) ∣ θ j c ) = ∏ c p ( x j ( i ) ∣ θ j c ) I ( y ( i ) = c ) , p ( x j ( i ) ∣ θ j c ) = θ j c x j ( i ) ( 1 − θ j c ) 1 − x j ( i ) p(x_j^{(i)}|\theta_{jc})=\prod_cp(x_j^{(i)}|\theta_{jc})^{I(y^{(i)}=c)},p(x_j^{(i)}|\theta_{jc})=\theta_{jc}^{x_j^{(i)}}(1-\theta_{jc})^{1-x_j^{(i)}} p(xj(i)θjc)=cp(xj(i)θjc)I(y(i)=c),p(xj(i)θjc)=θjcxj(i)(1θjc)1xj(i)

最大似然估计 (MLE)

取对数:
ln ⁡ p ( D ∣ θ , π ) = ln ⁡ ∏ i p ( x ( i ) , y ( i ) ∣ θ , π ) = ∑ i ( ln ⁡ p ( y ( i ) ∣ π ) + ∑ j ln ⁡ p ( x j ( i ) ∣ θ j ) ) \ln p(D|\theta,\pi)=\ln \prod_ip(x^{(i)},y^{(i)}|\theta,\pi)=\sum_i(\ln p(y^{(i)}|\pi)+\sum_j\ln p(x^{(i)}_j|\theta_j)) lnp(Dθ,π)=lnip(x(i),y(i)θ,π)=i(lnp(y(i)π)+jlnp(xj(i)θj))
y y y部分:
∑ i ln ⁡ p ( y ( i ) ∣ π ) = ∑ i ∑ c I ( y ( i ) = c ) × ln ⁡ π c = ∑ c N c ln ⁡ π c \sum_i\ln p(y^{(i)}|\pi)=\sum_i\sum_cI(y^{(i)}=c)\times\ln\pi_c=\sum_cN_c\ln\pi_c ilnp(y(i)π)=icI(y(i)=c)×lnπc=cNclnπc
x x x部分:
∑ i ∑ j ln ⁡ p ( x j ( i ) ∣ θ j ) = ∑ j ∑ c ∑ i : y ( i ) = c ( x j ( i ) ln ⁡ θ j c + ( 1 − x j ( i ) ) ln ⁡ ( 1 − θ j c ) ) \sum_i\sum_j\ln p(x^{(i)}_j|\theta_j)=\sum_j\sum_c\sum_{i:y^{(i)}=c}(x_j^{(i)}\ln\theta_{jc}+(1-x_j^{(i)})\ln(1-\theta_{jc})) ijlnp(xj(i)θj)=jci:y(i)=c(xj(i)lnθjc+(1xj(i))ln(1θjc))

边界条件:
∑ c π c = 1 \sum_c\pi_c=1 cπc=1
以上确定了最大似然估计的最优化问题,以下分别求参数值。

目标函数:
L ( θ , π ) = ∑ j ∑ c ∑ i : y ( i ) = c ( x j ( i ) ln ⁡ θ j c + ( 1 − x j ( i ) ) ln ⁡ ( 1 − θ j c ) ) + ∑ c N c ln ⁡ π c − λ ( ∑ c π c − 1 ) L(\theta,\pi)=\sum_j\sum_c\sum_{i:y^{(i)}=c}(x_j^{(i)}\ln\theta_{jc}+(1-x_j^{(i)})\ln(1-\theta_{jc}))+\sum_cN_c\ln\pi_c-\lambda(\sum_c\pi_c-1) L(θ,π)=jci:y(i)=c(xj(i)lnθjc+(1xj(i))ln(1θjc))+cNclnπcλ(cπc1)
计数记号:
N c = ∑ i I ( y ( i ) = c ) , N D = # r o w s = ∑ c N c = ∑ i 1 N_c=\sum_iI(y^{(i)}=c),N_D=\#rows=\sum_c N_c=\sum_i1 Nc=iI(y(i)=c),ND=#rows=cNc=i1

参数 π \pi π
∂ ∂ π c L ( θ , π ) = N c π c − λ = 0 ⇒ N c = λ π c \frac{\partial}{\partial \pi_c}L(\theta,\pi)=\frac{N_c}{\pi_c}-\lambda=0\Rightarrow N_c=\lambda\pi_c πcL(θ,π)=πcNcλ=0Nc=λπc
带入边界条件:
N D = ∑ c N c = λ ∑ c π c = λ N_D=\sum_cN_c=\lambda\sum_c\pi_c=\lambda ND=cNc=λcπc=λ
也就是说:
π ^ c = N c N D \hat\pi_c=\frac{N_c}{N_D} π^c=NDNc
参数 θ \theta θ:
∂ ∂ θ j c L ( θ , π ) = ∑ i : y ( i ) = c ( x j ( i ) θ j c − 1 − x j ( i ) 1 − θ j c ) \frac{\partial}{\partial \theta_{jc}}L(\theta,\pi)=\sum_{i:y^{(i)}=c}(\frac{x_j^{(i)}}{\theta_{jc}}-\frac{1-x_j^{(i)}}{1-\theta_{jc}}) θjcL(θ,π)=i:y(i)=c(θjcxj(i)1θjc1xj(i))

求和:
∑ i : y ( i ) = c ( x j ( i ) θ j c − 1 − x j ( i ) 1 − θ j c ) = ∑ i : y ( i ) = c x j ( i ) θ j c − N c − ∑ i : y ( i ) = c x j ( i ) 1 − θ j c \sum_{i:y^{(i)}=c}(\frac{x_j^{(i)}}{\theta_{jc}}-\frac{1-x_j^{(i)}}{1-\theta_{jc}})= \frac{\sum_{i:y^{(i)}=c}x_j^{(i)}}{\theta_{jc}}-\frac{N_c-\sum_{i:y^{(i)}=c}x_j^{(i)}}{1-\theta_{jc}} i:y(i)=c(θjcxj(i)1θjc1xj(i))=θjci:y(i)=cxj(i)1θjcNci:y(i)=cxj(i)
引入新的计数变量,带入:
∑ i : y ( i ) = c x j ( i ) = N j c , ∑ i : y ( i ) = c ( x j ( i ) θ j c − 1 − x j ( i ) 1 − θ j c ) = N j c θ j c − N c − N j c 1 − θ j c \sum_{i:y^{(i)}=c}x_j^{(i)}=N_{jc},\sum_{i:y^{(i)}=c}(\frac{x_j^{(i)}}{\theta_{jc}}-\frac{1-x_j^{(i)}}{1-\theta_{jc}})=\frac{N_{jc}}{\theta_{jc}}-\frac{N_c-N_{jc}}{1-\theta_{jc}} i:y(i)=cxj(i)=Njc,i:y(i)=c(θjcxj(i)1θjc1xj(i))=θjcNjc1θjcNcNjc
算一下:
θ ^ j c = N j c N c \hat\theta_{jc}=\frac{N_{jc}}{N_c} θ^jc=NcNjc
结果惊人的简单!只要简单地遍历整个样本矩阵,就可以完成训练。

最大似然估计在大多数情况下可以满足需求,以下继续走贝叶斯统计的流程。

先验和后验

以下是锦上添花,如果前面已经看晕了最好先缓缓。

先验 (Priori)

假设先验具有相同形式:
p ( θ j c ) ∝ θ j c a j c − 1 ( 1 − θ j c ) b j c − 1 , p ( π ) ∝ ∏ c π c β c − 1 p(\theta_{jc})\propto\theta_{jc}^{a_{jc}-1}(1-\theta_{jc})^{b_{jc}-1},p(\pi)\propto\prod_c\pi_c^{\beta_c-1} p(θjc)θjcajc1(1θjc)bjc1,p(π)cπcβc1
先验也可以是其他形式,为了方便,此处及以下使用与似然相同的形式。

后验 (Posteri)

后验表达式:
p ( θ , π ∣ D ) ∝ p ( D ∣ θ , π ) p ( θ ) p ( π ) = p ( θ ) p ( π ) ∏ i p ( x ( i ) ∣ θ ) p ( y ( i ) ∣ π ) p(\theta,\pi|D)\propto p(D|\theta,\pi)p(\theta)p(\pi)= p(\theta)p(\pi)\prod_ip(x^{(i)}|\theta)p(y^{(i)} |\pi) p(θ,πD)p(Dθ,π)p(θ)p(π)=p(θ)p(π)ip(x(i)θ)p(y(i)π)
参数 π \pi π:
p ( π ∣ D ) ∝ p ( π ) ∏ i p ( y ( i ) ∣ π ) = ∏ c π c N c + β c − 1 p(\pi|D)\propto p(\pi)\prod_ip(y^{(i)}|\pi)=\prod_c\pi_c^{N_c+\beta_c-1} p(πD)p(π)ip(y(i)π)=cπcNc+βc1
归一化系数:
1 Z π = ∫ ∏ c π c N c + β c − 1 d π = ∏ c ∫ 0 1 π c N c + β c − 1 d π c = ∏ c 1 N c + β c \frac{1}{Z_\pi}=\int\prod_c\pi_c^{N_c+\beta_c-1}d\pi= \prod_c\int_0^1\pi_c^{N_c+\beta_c-1}d\pi_c=\prod_c\frac{1}{N_c+\beta_c} Zπ1=cπcNc+βc1dπ=c01πcNc+βc1dπc=cNc+βc1
算一下:
Z π = ∏ c ( N c + β c ) Z_\pi=\prod_c(N_c+\beta_c) Zπ=c(Nc+βc)
参数 θ \theta θ:
p ( θ j c ∣ D ) ∝ θ j c N j c + a j c − 1 ( 1 − θ j c ) N c − N j c + b j c − 1 p(\theta_{jc}|D)\propto\theta_{jc}^{N_{jc}+a_{jc}-1}(1-\theta_{jc})^{N_c-N_{jc}+b_{jc}-1} p(θjcD)θjcNjc+ajc1(1θjc)NcNjc+bjc1
归一化系数:
1 Z θ j c = ∫ 0 1 d θ j c   θ j c N j c + a j c − 1 ( 1 − θ j c ) N c − N j c + b j c − 1 = B ( N j c + a j c , N c − N j c + b j c ) \frac{1}{Z_{\theta_{jc}}}= \int_0^1 d\theta_{jc}\,\theta_{jc}^{N_{jc}+a_{jc}-1}(1-\theta_{jc})^{N_c-N_{jc}+b_{jc}-1}= B(N_{jc}+a_{jc},N_c-N_{jc}+b_{jc}) Zθjc1=01dθjcθjcNjc+ajc1(1θjc)NcNjc+bjc1=B(Njc+ajc,NcNjc+bjc)
Beta函数:
B ( x , y ) = Γ ( x ) Γ ( y ) Γ ( x + y ) B(x,y)=\frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} B(x,y)=Γ(x+y)Γ(x)Γ(y)
娱乐算一下均值,后面可能要用:
E [ θ j c ∣ D ] = Z θ j c ∫ 0 1 d θ j c   θ j c θ j c N j c + a j c − 1 ( 1 − θ j c ) N c − N j c + b j c − 1 = B ( N j c + a j c + 1 , N c − N j c + b j c ) B ( N j c + a j c , N c − N j c + b j c ) E[\theta_{jc}|D]=Z_{\theta_{jc}}\int_0^1 d\theta_{jc}\,\theta_{jc}\theta_{jc}^{N_{jc}+a_{jc}-1}(1-\theta_{jc})^{N_c-N_{jc}+b_{jc}-1}=\frac{B(N_{jc}+a_{jc}+1,N_c-N_{jc}+b_{jc})}{B(N_{jc}+a_{jc},N_c-N_{jc}+b_{jc})} E[θjcD]=Zθjc01dθjcθjcθjcNjc+ajc1(1θjc)NcNjc+bjc1=B(Njc+ajc,NcNjc+bjc)B(Njc+ajc+1,NcNjc+bjc)
带入 Γ \Gamma Γ函数的性质:
B ( N j c + a j c + 1 , N c − N j c + b j c ) B ( N j c + a j c , N c − N j c + b j c ) = Γ ( N j c + a j c + 1 ) Γ ( N c − N j c + b j c ) Γ ( N j c + a j c ) Γ ( N c − N j c + b j c ) Γ ( N c + a j c + b j c ) Γ ( N c + a j c + b j c + 1 ) = N j c + a j c N j c + a j c + b j c \frac{B(N_{jc}+a_{jc}+1,N_c-N_{jc}+b_{jc})}{B(N_{jc}+a_{jc},N_c-N_{jc}+b_{jc})}= \frac{\Gamma(N_{jc}+a_{jc}+1)\Gamma(N_c-N_{jc}+b_{jc})}{\Gamma(N_{jc}+a_{jc})\Gamma(N_c-N_{jc}+b_{jc})}\frac{\Gamma(N_c+a_{jc}+b_{jc})}{\Gamma(N_c+a_{jc}+b_{jc}+1)}=\frac{N_{jc}+a_{jc}}{N_{jc}+a_{jc}+b_{jc}} B(Njc+ajc,NcNjc+bjc)B(Njc+ajc+1,NcNjc+bjc)=Γ(Njc+ajc)Γ(NcNjc+bjc)Γ(Njc+ajc+1)Γ(NcNjc+bjc)Γ(Nc+ajc+bjc+1)Γ(Nc+ajc+bjc)=Njc+ajc+bjcNjc+ajc
同样算一下共轭的均值(这样是叫共轭吗?):
E [ 1 − θ j c ∣ D ] = E [ 1 ∣ D ] − E [ θ j c ∣ D ] = b j c N j c + a j c + b j c E[1-\theta_{jc}|D]=E[1|D]-E[\theta_{jc}|D]=\frac{b_{jc}}{N_{jc}+a_{jc}+b_{jc}} E[1θjcD]=E[1D]E[θjcD]=Njc+ajc+bjcbjc
这样得到的均值也可以作为一个估计值,类似于最大似然估计。

最大后验估计(MAP)

取对数:
ln ⁡ p ( θ , π ∣ D ) = ln ⁡ p ( θ ) + ln ⁡ p ( π ) + ∑ i ( ln ⁡ p ( x ( i ) ∣ θ ) + ln ⁡ p ( y ( i ) ∣ π ) ) \ln p(\theta,\pi|D)=\ln p(\theta)+\ln p(\pi)+\sum_i(\ln p(x^{(i)}|\theta)+\ln p(y^{(i)}|\pi)) lnp(θ,πD)=lnp(θ)+lnp(π)+i(lnp(x(i)θ)+lnp(y(i)π))
先验对数:
ln ⁡ p ( θ ) = C o n s t + ( a j c − 1 ) ln ⁡ θ j c + ( b j c − 1 ) ln ⁡ ( 1 − θ j c ) , ln ⁡ p ( π ) = C o n s t + ∑ c ( β c − 1 ) ln ⁡ π c \ln p(\theta)=Const+(a_{jc}-1)\ln\theta_{jc}+(b_{jc}-1)\ln(1-\theta_{jc}),\ln p(\pi)=Const+\sum_c(\beta_c-1)\ln\pi_c lnp(θ)=Const+(ajc1)lnθjc+(bjc1)ln(1θjc),lnp(π)=Const+c(βc1)lnπc

目标函数:
L ( θ , π ) = ( a j c − 1 ) ln ⁡ θ j c + ( b j c − 1 ) ln ⁡ ( 1 − θ j c ) + ∑ c ( β c − 1 ) ln ⁡ π c + ∑ j ∑ c ∑ i : y ( i ) = c ( x j ( i ) ln ⁡ θ j c + ( 1 − x j ( i ) ) ln ⁡ ( 1 − θ j c ) ) + ∑ c N c ln ⁡ π c − λ ( ∑ c π c − 1 ) L(\theta,\pi)=(a_{jc}-1)\ln\theta_{jc}+(b_{jc}-1)\ln(1-\theta_{jc})+\sum_c(\beta_c-1)\ln\pi_c+\sum_j\sum_c\sum_{i:y^{(i)}=c}(x_j^{(i)}\ln\theta_{jc}+(1-x_j^{(i)})\ln(1-\theta_{jc}))+\sum_cN_c\ln\pi_c-\lambda(\sum_c\pi_c-1) L(θ,π)=(ajc1)lnθjc+(bjc1)ln(1θjc)+c(βc1)lnπc+jci:y(i)=c(xj(i)lnθjc+(1xj(i))ln(1θjc))+cNclnπcλ(cπc1)
参数 π \pi π
∂ ∂ π c L ( θ , π ) = β c − 1 π c + N c π c − λ = 0 ⇒ N c + β c − 1 = λ π c \frac{\partial}{\partial \pi_c}L(\theta,\pi)=\frac{\beta_c-1}{\pi_c}+\frac{N_c}{\pi_c}-\lambda=0\Rightarrow N_c+\beta_c-1=\lambda\pi_c πcL(θ,π)=πcβc1+πcNcλ=0Nc+βc1=λπc
带入边界条件:
N + ∑ c β c − N D = λ ⇒ π ^ c = N c + β c − 1 N + ∑ c β c − N D N+\sum_c\beta_c-N_D=\lambda\Rightarrow\hat\pi_c=\frac{N_c+\beta_c-1}{N+\sum_c\beta_c-N_D} N+cβcND=λπ^c=N+cβcNDNc+βc1
参数 θ \theta θ:
∂ ∂ θ j c L ( θ , π ) = a j c − 1 θ j c − b j c − 1 1 − θ j c + ∑ i : y ( i ) = c ( x j ( i ) θ j c − 1 − x j ( i ) 1 − θ j c ) = N j c + a j c − 1 θ j c − N c − N j c + b j c − 1 1 − θ j c \frac{\partial}{\partial \theta_{jc}}L(\theta,\pi)= \frac{a_{jc}-1}{\theta_{jc}}-\frac{b_{jc}-1}{1-\theta_{jc}}+\sum_{i:y^{(i)}=c}(\frac{x_j^{(i)}}{\theta_{jc}}-\frac{1-x_j^{(i)}}{1-\theta_{jc}})= \frac{N_{jc}+a_{jc}-1}{\theta_{jc}}-\frac{N_c-N_{jc}+b_{jc}-1}{1-\theta_{jc}} θjcL(θ,π)=θjcajc11θjcbjc1+i:y(i)=c(θjcxj(i)1θjc1xj(i))=θjcNjc+ajc11θjcNcNjc+bjc1

求出来:
θ ^ j c = N j c + a j c − 1 N c + a j c + b j c − 2 \hat\theta_{jc}=\frac{N_{jc}+a_{jc}-1}{N_c+a_{jc}+b_{jc}-2} θ^jc=Nc+ajc+bjc2Njc+ajc1
设置先验为均匀分布(uninformative),即 a = 1 , b = 1 , β = 1 a=1,b=1,\beta=1 a=1,b=1,β=1,获得和最大似然估计相同的结果!

先验的参数 a , b a,b a,b是超参数,类似于其他模型的「正则」系数,这些参数是人工指定的,不能通过训练模型获得。如果采用最大后验估计作为「训练」的过程,也只需要遍历整个 θ j c \theta_{jc} θjc矩阵、带入 a , b a,b a,b即可。

预测

带入估计值

有了最大似然估计(MLE)或最大后验估计(MAP)的结果 θ ^ j c , π ^ c \hat\theta_{jc},\hat\pi_c θ^jc,π^c,直接带入概率密度函数,就可以求相对的概率大小。
p ( y = c ∣ x ⃗ ) ∝ p ( y = c ) ∏ j p ( x j ∣ y = c ) p(y=c|\vec x)\propto p(y=c)\prod_jp(x_j|y=c) p(y=cx )p(y=c)jp(xjy=c)
上式右边不需要得到归一化系数,带入参数估计值,就可以比较 y y y取不同值时候的相对大小。概率最大时对应的分类就是模型的输出。

直接带入最大似然估计(MLE)或最大后验估计(MAP)的结果,都可能造成「过拟合」,并不是有超参数的模型就不会过拟合。「过拟合」只是个相对的概念,以下介绍贝叶斯统计的常用手法,在大多数情况下比直接带入某种估计的结果,都能更好地避免过拟合。当然,这样的计算要复杂很多,在大多数情况下,MLE/MAP就可以满足需求。

在参数空间上平滑

预测目标的分布(predictive distribution),像上面一样:
p ( y = c ∣ x ⃗ , D ) ∝ p ( y = c ∣ D ) ∏ j p ( x j ∣ y = c , D ) p(y=c|\vec x,D)\propto p(y=c|D)\prod_jp(x_j|y=c,D) p(y=cx ,D)p(y=cD)jp(xjy=c,D)
「参数空间」就是由参数 θ , π \theta,\pi θ,π张成的空间,微元是它们的概率密度函数加权之后的:
p ( π ∣ D ) p ( θ j c ∣ D ) d π d θ p(\pi|D)p(\theta_{jc}|D)d\pi d\theta p(πD)p(θjcD)dπdθ
注意到 θ , π \theta,\pi θ,π相互独立,这一个空间可以当成两个空间看待:
p ( π c ∣ D ) d π c , p ( θ j c ∣ D ) d θ j c p(\pi_c|D)d\pi_c,p(\theta_{jc}|D)d\theta_{jc} p(πcD)dπc,p(θjcD)dθjc
目标的分布的两个部分分别在这两个空间上做积分:
p ( y = c ∣ D ) = ∫ d π   p ( y = c ∣ π ) p ( π ∣ D ) , p ( x j ∣ y = c , D ) = ∫ d θ j c   p ( x j ∣ y = c , θ j c ) p ( θ j c ∣ D ) p(y=c|D)=\int d\pi\,p(y=c|\pi)p(\pi|D),p(x_j|y=c,D)=\int d\theta_{jc}\, p(x_j|y=c,\theta_{jc})p(\theta_{jc}|D) p(y=cD)=dπp(y=cπ)p(πD),p(xjy=c,D)=dθjcp(xjy=c,θjc)p(θjcD)
计算 π \pi π的空间:
p ( y = c ∣ D ) = ∫ d π   π c Z π ∏ c ′ π c ′ N c ′ + β c ′ − 1 = Z π ( ∫ 0 1 d π c   π c N c + β c ) ( ∏ c ′ ≠ c ∫ 0 1 d π c ′   π c ′ N c ′ + β c ′ − 1 ) = Z π 1 N c + β c + 1 ∏ c ′ ≠ c 1 N c ′ + β c ′ = 1 − 1 N c + β c + 1 p(y=c|D)=\int d\pi\,\pi_c Z_\pi\prod_{c'}\pi_{c'}^{N_{c'}+\beta_{c'}-1}= Z_\pi(\int_0^1d\pi_c\,\pi_c^{N_c+\beta_c})(\prod_{c'\ne c}\int_0^1d\pi_{c'}\,\pi_{c'}^{N_{c'}+\beta_{c'}-1})= Z_\pi\frac{1}{N_c+\beta_c+1}\prod_{c'\ne c}\frac{1}{N_{c'}+\beta_{c'}}=1-\frac{1}{N_c+\beta_c+1} p(y=cD)=dππcZπcπcNc+βc1=Zπ(01dπcπcNc+βc)(c=c01dπcπcNc+βc1)=ZπNc+βc+11c=cNc+βc1=1Nc+βc+11
计算 θ \theta θ的空间:
p ( x j ∣ y = c , D ) = Z θ j c ∫ 0 1 d θ j c   θ j c x j ( 1 − θ j c ) 1 − x j θ j c N j c + a j c − 1 ( 1 − θ j c ) N c − N j c + b j c − 1 = B ( x j + N j c + a j c , 1 − x j + N c − N j c + b j c ) B ( N j c + a j c , N c − N j c + b j c ) p(x_j|y=c,D)= Z_{\theta_{jc}}\int_0^1 d\theta_{jc}\,\theta_{jc}^{x_j}(1-\theta_{jc})^{1-x_j}\theta_{jc}^{N_{jc}+a_{jc}-1}(1-\theta_{jc})^{N_c-N_{jc}+b_{jc}-1}= \frac{B(x_j+N_{jc}+a_{jc},1-x_j+N_c-N_{jc}+b_{jc})}{B(N_{jc}+a_{jc},N_c-N_{jc}+b_{jc})} p(xjy=c,D)=Zθjc01dθjcθjcxj(1θjc)1xjθjcNjc+ajc1(1θjc)NcNjc+bjc1=B(Njc+ajc,NcNjc+bjc)B(xj+Njc+ajc,1xj+NcNjc+bjc)
上式过于庞杂,考虑到 x j x_j xj取值十分有限,可以简化一下,分别计算。

x j = 1 x_j=1 xj=1时,是在求均值,刚才算过了:
p ( x j = 1 ∣ y = c , D ) = ∫ 0 1 d θ j c   θ j c p ( θ j c ∣ D ) = E [ θ j c ∣ D ] p(x_j=1|y=c,D)= \int_0^1 d\theta_{jc}\,\theta_{jc}p(\theta_{jc}|D)=E[\theta_{jc}|D] p(xj=1y=c,D)=01dθjcθjcp(θjcD)=E[θjcD]
x j = 0 x_j=0 xj=0时,还是在求均值:
p ( x j = 0 ∣ y = c , D ) = ∫ 0 1 d θ j c   ( 1 − θ j c ) p ( θ j c ∣ D ) = E [ 1 − θ j c ∣ D ] p(x_j=0|y=c,D)= \int_0^1 d\theta_{jc}\,(1-\theta_{jc})p(\theta_{jc}|D)=E[1-\theta_{jc}|D] p(xj=0y=c,D)=01dθjc(1θjc)p(θjcD)=E[1θjcD]
简洁地合并以上两种情况:
p ( x j ∣ y = c , D ) = E [ θ j c ∣ D ] I ( x j = 1 ) E [ 1 − θ j c ∣ D ] I ( x j = 0 ) p(x_j|y=c,D)=E[\theta_{jc}|D]^{I(x_j=1)}E[1-\theta_{jc}|D]^{I(x_j=0)} p(xjy=c,D)=E[θjcD]I(xj=1)E[1θjcD]I(xj=0)
带入连乘:
∏ j p ( x j ∣ y = c , D ) = E [ θ j c ∣ D ] N j 1 E [ 1 − θ j c ∣ D ] N j 0 , N j 1 + N j 0 = N D \prod_jp(x_j|y=c,D)=E[\theta_{jc}|D]^{N_{j1}}E[1-\theta_{jc}|D]^{N_{j0}},N_{j1}+N_{j0}=N_D jp(xjy=c,D)=E[θjcD]Nj1E[1θjcD]Nj0,Nj1+Nj0=ND
这样就完成了所有步骤。最终结果:
p ( y = c ∣ x ⃗ , D ) ∝ p ( y = c ∣ D ) ∏ j p ( x j ∣ y = c , D ) = ( 1 − 1 N c + β c + 1 ) E [ θ j c ∣ D ] N j 1 E [ 1 − θ j c ∣ D ] N j 0 p(y=c|\vec x,D)\propto p(y=c|D)\prod_jp(x_j|y=c,D)=(1-\frac{1}{N_c+\beta_c+1})E[\theta_{jc}|D]^{N_{j1}}E[1-\theta_{jc}|D]^{N_{j0}} p(y=cx ,D)p(y=cD)jp(xjy=c,D)=(1Nc+βc+11)E[θjcD]Nj1E[1θjcD]Nj0
这个概率密度函数要比直接带入MLE/MAP复杂得多,求解过程更是千回百转。然而,算法求解过程依然只需要遍历整个样本矩阵,并带入参数。这就是「朴素」的魅力!

你可能感兴趣的:(统计学和机器学习,机器学习,概率论,线性代数,朴素贝叶斯算法)