朴素贝叶斯(分类)推导

本文详细介绍了朴素贝叶斯模型的推导过程,从生成模型出发,利用条件独立假设,通过最大似然优化参数,最终得出概率参数π和θ的计算公式,即πk=∑u=1ununk和θij=∑v=1v∑i;y=kniv∑i;y=knij,揭示了朴素贝叶斯分类器中类别占比和词频比率的计算原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传统的分类器朴素贝叶斯很多人都知道怎么用,但是有没有想过它的原理,它是怎么样被一步一步的推导出来的。今天咱们就推导一下朴素贝叶斯模型。
现在有数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D=\{(x^1,y^1),(x^2,y^2),...,(x^n,y^n)\} D={(x1,y1),(x2,y2),...,(xn,yn)}
x x x表示的是一个文档的所有单词
y y y表示的是一个文档属于的类别。
n n n表示的是文档的数量

首先我们知道朴素贝叶斯是一个生成模型因此我们的目标函数可以写成:
p ( D ) = ∏ i = 1 n p ( x i , y i ) = ∏ i = 1 n p ( x i ∣ y i ) ⋅ p ( y i ) = ∏ i = 1 n p ( x 1 i , x 2 i , x 3 i , . . . , x m i ∣ y i ) ⋅ p ( y i ) p(D)= \prod_{i=1}^np(x^i,y^i)= \prod_{i=1}^np(x^i|y^i)\cdot p(y^i)= \prod_{i=1}^np(x^i_1,x^i_2,x^i_3,...,x^i_m|y^i)\cdot p(y^i) p(D)=i=1np(xi,yi)=i=1np(xiyi)p(yi)=i=1np(x1i,x2i,x3i,...,xmiyi)p(yi)

上面就是一个正常的生成模型的样子,相当于一个框架吧,下面我们加入朴素贝叶斯的核心思想:条件独立假设,所以我们的公式可以写成:

p ( D ) = ∏ i = 1 n ∏ j = 1 m p ( x j i ∣ y i ) ⋅ p ( y i ) p(D)= \prod_{i=1}^n \prod_{j=1}^mp(x^i_j|y^i)\cdot p(y^i) p(D)=i=1nj=1mp(xjiyi)p(yi)

下面我们的目标就是最大似然优化参数啦。也就是:

a r g m a x p ( D ) = a r g m a x ∏ i = 1 n ∏ j = 1 m p ( x j i ∣ y i ) ⋅ p ( y i ) = a r g m a x log ⁡ [ ∏ i = 1 n ∏ j = 1 m p ( x j i ∣ y i ) ⋅ p ( y i ) ] argmaxp(D)=argmax \prod_{i=1}^n \prod_{j=1}^mp(x^i_j|y^i)\cdot p(y^i)=argmax\log [ \prod_{i=1}^n \prod_{j=1}^mp(x^i_j|y^i)\cdot p(y^i)] argmaxp(D)=argmaxi=1nj=1mp(xjiyi)p(yi)=argmaxlog[i=1nj=1mp(xjiyi)p(yi)]

= a r g m a x log ⁡ [ ∏ i = 1 n ∏ j = 1 v p ( w j ∣ y i ) n i j ⋅ p ( y i ) ] =argmax \log[ \prod_{i=1}^n \prod_{j=1}^vp(w_j|y^i)^{n_{ij}}\cdot p(y^i)] =argmaxlog[i=1nj=1vp(wjyi)nijp(yi)]

v v v表示词库中全部词, n i j n_{ij} nij表示的是若是单词 w j w_j wj属于文档 i i i为1,不属于为0。
我们这样转换的目的就是原来词是从文章中选择,现在变成从词库中选择。而选择的还是那些词,这样转换只是为了方便计算。

= a r g m a x ∑ i = 1 n ∑ j = 1 v n i j log ⁡ p ( w j ∣ y i ) + log ⁡ p ( y i ) =argmax\sum_{i=1}^n \sum_{j=1}^vn_{ij}\log p(w_j|y^i)+\log p(y^i) =argmaxi=1nj=1vnijlogp(wjyi)+logp(yi)

下面我们把类别考虑到公式里面。

= a r g m a x ∑ k = 1 k ∑ i ; y = k ∑ j = 1 v n i j log ⁡ p ( w j ∣ y i = k ) + ∑ k = 1 k ∑ i ; y = k log ⁡ p ( y i = k ) =argmax\sum_{k=1}^k\sum_{i;y=k} \sum_{j=1}^vn_{ij}\log p(w_j|y^i=k)+\sum_{k=1}^k\sum_{i;y=k}\log p(y^i=k) =argmaxk=1ki;y=kj=1vnijlogp(wjyi=k)+k=1ki;y=klogp(yi=k)

∑ i ; y = k \sum_{i;y=k} i;y=k表示属于k类的所有文档。 ∑ k = 1 k ∑ i ; y = k \sum_{k=1}^k\sum_{i;y=k} k=1ki;y=k就表示所有的文档。

这个时候我们令 p ( w j ∣ y i = k ) p(w_j|y^i=k) p(wjyi=k) θ k i \theta _{ki} θki表示第j个单词属于第k类文档的概率。令 p ( y i = k ) p(y^i=k) p(yi=k) π k \pi_{k} πk表示文档属于k的概率(先验)

这时候我们的目标函数为:

a r g m a x ∑ k = 1 k ∑ i ; y = k ∑ j = 1 v n i j log ⁡ p θ k j + ∑ k = 1 k ∑ i ; y = k log ⁡ π k argmax\sum_{k=1}^k\sum_{i;y=k} \sum_{j=1}^vn_{ij}\log p\theta_{kj}+\sum_{k=1}^k\sum_{i;y=k}\log \pi_k argmaxk=1ki;y=kj=1vnijlogpθkj+k=1ki;y=klogπk

条件: ∑ u = 1 u π u = 1 \sum_{u=1}^u \pi_u=1 u=1uπu=1

∑ v = 1 v θ k v = 1 k = 1 , 2 , 3... , K \quad \quad \sum_{v=1}^v \theta_{kv}=1\quad k=1,2,3...,K v=1vθkv=1k=1,2,3...,K

根据拉格朗日的乘法项我们可以将目标函数写成:

L = a r g m a x ∑ k = 1 k ∑ i ; y = k ∑ j = 1 v n i j log ⁡ p θ k j + ∑ k = 1 k n k log ⁡ π k + λ ∑ u = 1 k π u − 1 + ∑ k = 1 K λ k ∑ v = 1 v θ k v − 1 L=argmax\sum_{k=1}^k\sum_{i;y=k} \sum_{j=1}^vn_{ij}\log p\theta_{kj}+\sum_{k=1}^kn_k\log \pi_k +\lambda\sum_{u=1}^k \pi_u-1+\sum_{k=1}^K\lambda_k\sum_{v=1}^v \theta_{kv}-1 L=argmaxk=1ki;y=kj=1vnijlogpθkj+k=1knklogπk+λu=1kπu1+k=1Kλkv=1vθkv1

所以上面就是朴素贝叶斯模型的目标函数。

这里我们有三个参数 ( θ , π , λ ) (\theta,\pi,\lambda) (θ,π,λ)

下面我们求导寻找极值点,也就是当导数等于零的时候:

∂ L ∂ π k = ∂ n k log ⁡ π k + λ ∑ u = 1 k π u − 1 ∂ π = n k π k + λ = 0 ⇒ π k = − 1 λ ⋅ n k \dfrac{\partial L}{\partial \pi_k}=\dfrac{\partial n_k\log \pi_k+\lambda\sum_{u=1}^k \pi_u-1}{\partial \pi}=\dfrac{n_k}{\pi_k}+\lambda=0\Rightarrow \pi_k=-\dfrac{1}{\lambda}\cdot n_k πkL=πnklogπk+λu=1kπu1=πknk+λ=0πk=λ1nk

∑ u = 1 u π u = 1 \sum_{u=1}^u \pi_u=1 u=1uπu=1可知: ∑ u = 1 u − 1 λ ⋅ n u = 1 ⇒ λ = − ∑ u = 1 u n u \sum_{u=1}^u -\dfrac{1}{\lambda}\cdot n_u=1\Rightarrow\lambda=-\sum_{u=1}^u n_u u=1uλ1nu=1λ=u=1unu

因此 π k = − 1 λ ⋅ n k = n k ∑ u = 1 u n u \pi_k=-\dfrac{1}{\lambda}\cdot n_k=\dfrac{n_k}{\sum_{u=1}^u n_u} πk=λ1nk=u=1ununk

同理计算

∂ L ∂ θ k j = ∂ ∑ i ; y = k n i j log ⁡ p θ k j + λ k θ k v − 1 ∂ θ k j = n i j ∑ i ; y = k θ i j + λ k = 0 ⇒ θ i j = ∑ i ; y = k n i j λ k \dfrac{\partial L}{\partial \theta_{kj}}=\dfrac{\partial \sum_{i;y=k}n_{ij} \log p\theta_{kj}+\lambda_k\theta_{kv}-1}{\partial \theta_{kj}}=\dfrac{n_{ij}}{\sum_{i;y=k}\theta_{ij}}+\lambda_k=0\Rightarrow \theta_{ij}=\dfrac{\sum_{i;y=k}n_{ij}}{\lambda_k} θkjL=θkji;y=knijlogpθkj+λkθkv1=i;y=kθijnij+λk=0θij=λki;y=knij

∑ v = 1 v θ v = 1 \sum_{v=1}^v \theta_v=1 v=1vθv=1可知: ∑ v = 1 v ∑ i ; y = k n i v λ k = 1 ⇒ λ = − ∑ v = 1 v ∑ i ; y = k n i v \sum_{v=1}^v \dfrac{\sum_{i;y=k}n_{iv}}{\lambda_k}=1\Rightarrow\lambda=-\sum_{v=1}^v \sum_{i;y=k}n_{iv} v=1vλki;y=kniv=1λ=v=1vi;y=kniv

因此 θ i j = ∑ i ; y = k n i j λ k = ∑ i ; y = k n i j ∑ v = 1 v ∑ i ; y = k n i v \theta_{ij}=\dfrac{\sum_{i;y=k}n_{ij}}{\lambda_k}=\dfrac{\sum_{i;y=k}n_{ij}}{\sum_{v=1}^v \sum_{i;y=k}n_{iv}} θij=λki;y=knij=v=1vi;y=knivi;y=knij

证明完毕

π k = n k ∑ u = 1 u n u \pi_k=\dfrac{n_k}{\sum_{u=1}^u n_u} πk=u=1ununk

θ i j = ∑ i ; y = k n i j ∑ v = 1 v ∑ i ; y = k n i v \theta_{ij}=\dfrac{\sum_{i;y=k}n_{ij}}{\sum_{v=1}^v \sum_{i;y=k}n_{iv}} θij=v=1vi;y=knivi;y=knij

从公式我们可以看出我们使用的朴素贝叶斯经常计算当前类的占比和词在某类的比率就是这么推导出来的。看似简单的流程也是经过复杂的数学公式推导啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值