朴素贝叶斯(分类)推导

传统的分类器朴素贝叶斯很多人都知道怎么用,但是有没有想过它的原理,它是怎么样被一步一步的推导出来的。今天咱们就推导一下朴素贝叶斯模型。
现在有数据集 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)\}
x x 表示的是一个文档的所有单词
y y 表示的是一个文档属于的类别。
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 = 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)

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

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)]

= 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)]

v v 表示词库中全部词, n i j n_{ij} 表示的是若是单词 w j w_j 属于文档 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)

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

= 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)

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

这个时候我们令 p ( w j y i = k ) p(w_j|y^i=k) θ k i \theta _{ki} 表示第j个单词属于第k类文档的概率。令 p ( y i = k ) p(y^i=k) π k \pi_{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

条件: u = 1 u π u = 1 \sum_{u=1}^u \pi_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

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

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

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

这里我们有三个参数 ( θ , π , λ ) (\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

u = 1 u π u = 1 \sum_{u=1}^u \pi_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

因此 π 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}

同理计算

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}

v = 1 v θ v = 1 \sum_{v=1}^v \theta_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}

因此 θ 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}}

证明完毕

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

θ 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}}

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

发布了18 篇原创文章 · 获赞 8 · 访问量 986

猜你喜欢

转载自blog.csdn.net/li15006474642/article/details/104652158
今日推荐