细讲逻辑斯蒂回归与朴素贝叶斯、最大熵原理的爱恨交织(五)

第五节:分类器中的天真小弟 —— 朴素贝叶斯


朴素贝叶斯文本分类模型

考虑如下文本分类模型: P ( y i , d i ) P(y_i, d_i) 表示一篇文章以及它的 label 的联合概率。 d i d_i 指第 i 条训练数据中的文本。假设 d i d_i 中每个词都是一个特征。

条件独立分布假设:已知文本标签的条件下,特征的分布是相互独立的。(已知标签后 y i y_i d i d_i 的概率等于该文本中每个词出现的概率乘积。

利用贝叶斯条件概率公式:

P ( y i , d i ) = P ( y = y i ) P ( d i     y = y i ) P(y_i, d_i)=P(y=y_i)P(d_i\ |\ y=y_i)

= P ( y = y i ) j = 1 V P ( x j     y = y i ) C d i ( x j ) \quad\quad\quad\quad=P(y=y_i)\displaystyle \prod^{V}_{j=1}P(x_j\ |\ y=y_i)^{C_{d_i}(x_j)}

其中, V V 代表字典的 size, x j x_j 代表 the j t h j^{th} word in dictionary, C d i ( x j ) C_{d_i}(x_j) 代表词 x j x_j 在文件 d i d_i 中出现的次数。

Define: P ( y = y i ) = π y i , P ( x j     y = y i ) = θ y i ,   x j   P(y=y_i)=\pi_{y_i}, \quad P(x_j\ |\ y=y_i)=\theta_{y_i,\ x_j}\ \leftarrow 这两种概率就是我们要估计的参数

P ( y i , d i ) = π y i j = 1 V ( θ y i ,   x j ) C d i ( x j ) \Rightarrow P(y_i, d_i)=\pi_{y_i}\displaystyle \prod^{V}_{j=1}{(\theta_{y_i,\ x_j})}^{C_{d_i}(x_j)}


用最大似然法估计朴素贝叶斯的最佳参数

(参数下面带波浪线代表是参数向量 / 矩阵, D 代表数据集中文件的总个数)

L i k e l i h o o d ( π ,   θ ) = i = 1 D P ( y i , d i ) Likelihood(\underset \sim{\pi},\ \underset \sim{\theta})=\displaystyle \prod^D_{i=1}P(y_i, d_i)

= i = 1 D [ π y i j = 1 V ( θ y i ,   x j ) C d i ( x j ) ] \quad\quad\quad\quad\quad=\displaystyle \prod^D_{i=1}[\pi_{y_i}\displaystyle \prod^{V}_{j=1}{(\theta_{y_i,\ x_j})}^{C_{d_i}(x_j)}]

l o g ( L i k e l i h o o d ( π ,   θ ) ) = i = 1 D [ l o g π y i + j = 1 V C d i ( x j ) l o g ( θ y i ,   x j ) ] log(Likelihood(\underset \sim{\pi},\ \underset \sim{\theta}))=\displaystyle \sum^D_{i=1}\Big[log\pi_{y_i}+\displaystyle \sum^{V}_{j=1}{C_{d_i}(x_j)}log(\theta_{y_i,\ x_j})\Big]

约束: {    k = 1 K π k = 1    f o r   e v e r y   k ,   j = 1 V θ k ,   j = 1 \begin{cases} ①\ \ \displaystyle \sum^{K}_{k=1}\pi_k=1 \\ ②\ \ for\ every\ k,\ \displaystyle \sum^V_{j=1}\theta_{k,\ j}=1 \end{cases}


l o g ( L π k ) = i = 1 D [ l o g π y i + j = 1 V C d i ( x j ) l o g ( θ y i ,   x j ) ] + α ( k = 1 K π k 1 )   log(L_{\pi_k})=\displaystyle \sum^D_{i=1}\Big[log\pi_{y_i}+\displaystyle \sum^{V}_{j=1}{C_{d_i}(x_j)}log(\theta_{y_i,\ x_j})\Big]+\alpha(\sum^K_{k=1}\pi_k-1)\ \leftarrow π k \pi_k 求最优解,对第一个约束引入拉格朗日乘子

l o g ( L π k ) π k = i = 1 D 1 π k I y i = k + α = 0 , \frac{\partial{log(L_{\pi_k})}}{\partial{\pi_k}}=\displaystyle \sum^D_{i=1}\frac{1}{\pi_k}I_{y_i=k}+\alpha=0, f o r   k = 1 ,   2 ,   . . . ,   K   \quad for\ k=1,\ 2,\ ...,\ K\ \leftarrow π k \pi_k 求偏导数并令其得0

I y i = k I_{y_i=k} 是 Indicator function, I y i = k = { 1 i f   y i = k 0 o t h e r w i s e I_{y_i=k}=\begin{cases} 1\quad if\ y_i=k \\ 0\quad otherwise \end{cases}

   i = 1 D I y i = k π k + α = 0 \Rightarrow\ \ \frac{\sum^D_{i=1}I_{y_i=k}}{\pi_k}+\alpha=0

   π k = ( y i = k ) α \Rightarrow\ \ \pi_k=\frac{-(y_i=k的文件数)}{\alpha}

根据第一个约束,我们有: k = 1 K π k = k = 1 K ( y i = k ) α = ( ) α = 1 \sum^K_{k=1}\pi_k=\frac{-\sum^K_{k=1}(y_i=k的文件数)}{\alpha}=\frac{-(总文件个数)}{\alpha}=1

    α = ( ) \Rightarrow\ \ \ \alpha=-(总文件个数)

   π k = y i = k \Rightarrow\ \ \color{red}\pi_k=\frac{y_i=k的文件数}{总文件个数}


l o g ( L θ k ,   j ) = i = 1 D [ l o g π y i + j = 1 V C d i ( x j ) l o g ( θ y i ,   x j ) ] + μ k ( j = 1 V θ k ,   j 1 )   log(L_{\theta_{k,\ j}})=\displaystyle \sum^D_{i=1}[log\pi_{y_i}+\displaystyle \sum^{V}_{j=1}{C_{d_i}(x_j)}log(\theta_{y_i,\ x_j})]+\mu_k(\sum^V_{j=1}\theta_{k,\ j}-1)\ \leftarrow θ k ,   j \theta_{k,\ j} 求最优解,对第二个约束引入拉格朗日乘子

l o g ( L θ k ,   j ) θ k ,   j = i = 1 D C d i ( x j ) θ k   , j I y i = k + μ k = 0 , \frac{\partial{log(L_{\theta_{k,\ j}})}}{\partial{\theta_{k,\ j}}}=\displaystyle \sum^D_{i=1}\frac{C_{d_i}(x_j)}{\theta_{k\ ,j}}I_{y_i=k}+\mu_k=0, f o r   k = 1 ,   2 ,   . . . ,   K ,   j = 1 ,   2 ,   . . . ,   V   \quad for\ k=1,\ 2,\ ...,\ K,\ j=1,\ 2,\ ...,\ V\ \leftarrow θ k ,   j \theta_{k,\ j} 求偏导数并令其得0

   y i = k x j θ k ,   j + μ k = 0 \Rightarrow\ \ \frac{y_i=k的文件中词x_j的个数}{\theta_{k,\ j}}+\mu_k=0

   θ k ,   j = ( y i = k x j ) μ k \Rightarrow\ \ \theta_{k,\ j}=\frac{-(y_i=k的文件中词x_j的个数)}{\mu_k}

根据第二个约束,我们有:

j = 1 V θ k ,   j = j = 1 V ( y i = k x j ) μ k = ( y i = k ) μ k = 1 \sum^V_{j=1}\theta_{k,\ j}=\frac{-\sum^V_{j=1}(y_i=k的文件中词x_j的个数)}{\mu_k}=\frac{-(y_i=k的文件中所有词的个数)}{\mu_k}=1

    μ k = ( y i = k ) \Rightarrow\ \ \ \mu_k=-(y_i=k的文件中所有词的个数)

   θ k ,   j = y i = k x j y i = k \Rightarrow\ \ \color{red}\theta_{k,\ j}=\frac{y_i=k的文件中词x_j的个数}{y_i=k的文件中所有词的个数}


朴素贝叶斯,逻辑斯蒂回归,傻傻分不清楚?

之前我们讲一个文件 d i d_i 的特征是文件当中的所有单词,那么从现在起 d i d_i 用一个特征向量 x i \vec{x_i} 表示。

利用贝叶斯条件概率公式:

P ( y i     x i ) = P ( y i , x i ) P ( x i ) = P ( x i     y i ) P ( y i ) P ( x i ) P(y_i\ |\ \vec{x_i})=\frac{P(y_i, \vec{x_i})}{P(\vec{x_i})}=\frac{P(\vec{x_i}\ |\ y_i)P(y_i)}{P(\vec{x_i})}

在二分类问题中, y i { 1 , 0 } y_i\in\{1,0\}

{ P ( y i = 1     x i ) = P ( x i     y i = 1 ) P ( y i = 1 ) P ( x i )     P ( y i = 0     x i ) = P ( x i     y i = 0 ) P ( y i = 0 ) P ( x i )     \begin{cases} P(y_i=1\ |\ \vec{x_i})=\frac{P(\vec{x_i}\ |\ y_i=1)P(y_i=1)}{P(\vec{x_i})}\ \leftarrow \ \color{#8AD597}后验概率\\ \\ P(y_i=0\ |\ \vec{x_i})=\frac{P(\vec{x_i}\ |\ y_i=0)P(y_i=0)}{P(\vec{x_i})}\ \leftarrow \ \color{#8AD597}后验概率 \end{cases}

上面的等式左边是后验概率,然后我们用等式右边的先验概率给表示了。等式右边的分子中 P ( x i     y i = k ) P(\vec{x_i}\ |\ y_i=k) P ( y i = k ) P(y_i=k) 都是参数,用刚才的最大似然法估计。在预测的时候,由于上面两个后验概率表达式的分母一样,所以只要比较分子即可,哪个大就预测为哪一类。

在提及分类问题的时候经常有 “最大后验概率” 这个说法。但是,由于我们忽略了上面两个后验概率表达式的分母 P ( x i ) P(\vec{x_i}) ,因此模型其实计算的是 P ( x i     y i = k ) P ( y i = k ) = P ( y i , x i ) P(\vec{x_i}\ |\ y_i=k)P(y_i=k) = P(y_i, \vec{x_i}) 。 朴素贝叶斯其实是对特征向量和标签的 联!合!分!布!建模,而非直接对后验概率建模!

继续回到上面两个后验概率的表达式,分母 P ( x i ) P(\vec{x_i}) 的作用看作是“归一化”,因为

P ( x i ) = P ( y i = 1 , x i ) + P ( y i = 0 , x i ) P(\vec{x_i})=P(y_i=1, \vec{x_i})+P(y_i=0, \vec{x_i})

= P ( x i     y i = 1 ) P ( y i = 1 ) + P ( x i     y i = 0 ) P ( y i = 0 ) \quad\quad\quad=P(\vec{x_i}\ |\ y_i=1)P(y_i=1)+P(\vec{x_i}\ |\ y_i=0)P(y_i=0)

= \quad\quad\quad=两式分子之和

我们对 P ( y i = 1     x i ) P(y_i=1\ |\ \vec{x_i}) 做一些变形:

P ( y i = 1     x i ) = P ( x i     y i = 1 ) P ( y i = 1 ) P ( x i     y i = 1 ) P ( y i = 1 ) + P ( x i     y i = 0 ) P ( y i = 0 ) P(y_i=1\ |\ \vec{x_i})=\frac{P(\vec{x_i}\ |\ y_i=1)P(y_i=1)}{P(\vec{x_i}\ |\ y_i=1)P(y_i=1)+P(\vec{x_i}\ |\ y_i=0)P(y_i=0)}

   = 1 1 + P ( x i     y i = 0 ) P ( y i = 0 ) P ( x i     y i = 1 ) P ( y i = 1 ) \quad\quad\quad\quad\ \ =\frac{1}{1+\frac{P(\vec{x_i}\ |\ y_i=0)P(y_i=0)}{P(\vec{x_i}\ |\ y_i=1)P(y_i=1)}}

   = 1 1 + e x p { l o g ( P ( x i     y i = 1 ) P ( y i = 1 ) P ( x i     y i = 0 ) P ( y i = 0 ) ) } \quad\quad\quad\quad\ \ =\frac{1}{1+exp\Big\{-log\big(\frac{P(\vec{x_i}\ |\ y_i=1)P(y_i=1)}{P(\vec{x_i}\ |\ y_i=0)P(y_i=0)}\big)\Big\}} (♠)

   = 1 1 + e x p { l o g ( π 1 j = 1 V ( θ 1 ,   x j ) C d i ( x j ) π 0 j = 1 V ( θ 0 ,   x j ) C d i ( x j ) ) } \quad\quad\quad\quad\ \ =\frac{1}{1+exp\Bigg\{-log\bigg(\frac{\pi_{1} \prod^{V}_{j=1}{(\theta_{1,\ x_j})}^{C_{d_i}(x_j)}}{\pi_{0} \prod^{V}_{j=1}{(\theta_{0,\ x_j})}^{C_{d_i}(x_j)}} \big)\Bigg\}} (♠

   = 1 1 + e x p { [ l o g π 1 + j = 1 V C d i ( x j ) l o g ( θ 1 ,   x j ) l o g π 0 j = 1 V C d i ( x j ) l o g ( θ 0 ,   x j ) ] } \quad\quad\quad\quad\ \ =\frac{1}{1+exp\Bigg\{-\bigg[log\pi_{1}+ \sum^{V}_{j=1}C_{d_i}(x_j)log(\theta_{1,\ x_j})-log\pi_{0}- \sum^{V}_{j=1}C_{d_i}(x_j)log(\theta_{0,\ x_j}) \bigg]\Bigg\}}

   = 1 1 + e x p { l o g ( π 1 π 0 ) j = 1 V C d i ( x j ) l o g ( θ 1 ,   x j θ 0 ,   x j ) } \quad\quad\quad\quad\ \ =\frac{1}{1+exp\Bigg\{- log\big(\frac{\pi_1}{\pi_0}\big)-\sum^{V}_{j=1}C_{d_i}(x_j)log\big(\frac{\theta_{1,\ x_j}}{\theta_{0,\ x_j}}\big)\Bigg\} } (♦)

b = l o g ( π 1 π 0 ) b=log\big(\frac{\pi_1}{\pi_0}\big) w j = l o g ( θ 1 ,   x j θ 0 ,   x j ) ,   f o r   j = 1 , 2 , . . . , V w_j=log\big(\frac{\theta_{1,\ x_j}}{\theta_{0,\ x_j}}\big),\ for \ j=1,2,...,V

既然 d i d_i 是用文件中每个词的个数表示的,那么字典里共 V V 个词意味着每个文件的特征向量有 V V 维。

于是: x i = { C d i ( w o r d 1 ) C d i ( w o r d 2 ) . . . C d i ( w o r d V ) 1     b i a s } \vec{x_i} = \left\{ \begin{matrix} C_{d_i}(word_1)\\C_{d_i}(word_2)\\.\\.\\.\\C_{d_i}(word_V)\\1\color{#8AD597}\ \leftarrow\ bias\color{black} \end{matrix} \right\} w = { w 1 w 2 . . . w V b } = { l o g ( θ 1 ,   w o r d 1 θ 0 ,   w o r d 1 ) l o g ( θ 1 ,   w o r d 2 θ 0 ,   w o r d 2 ) . . . l o g ( θ 1 ,   w o r d V θ 0 , w o r d V ) l o g ( π 1 π 0 ) } \quad\vec w=\left\{ \begin{matrix} w_1 \\ w_2 \\ .\\.\\.\\ w_V \\ b \end{matrix}\right\} = \left\{ \begin{matrix} log\big(\frac{\theta_{1,\ word_1}}{\theta_{0,\ word_1}}\big) \\ \\ log\big(\frac{\theta_{1,\ word_2}}{\theta_{0,\ word_2}}\big) \\.\\.\\.\\ log\big(\frac{\theta_{1,\ word_V}}{\theta_{0,word_V}}\big) \\ \\ log\big(\frac{\pi_1}{\pi_0}\big) \end{matrix}\right\}


x i ,   w \vec{x_i},\ \vec w 带入上面的 (♦)式,得到: P ( y i = 1     x i ) = 1 1 + e x p ( w T x i ) P(y_i=1\ |\ \vec{x_i})=\frac{1}{1+exp(-\vec{w}^T\vec{x_i})}

哟吼~ 我们竟然把朴素贝叶斯中的后验概率推出了 logistic regression 的模样!

这时候不禁会想,难道朴素贝叶斯和 logistic regression 是。。。等。。。价的?小朋友你是否有很多问号???

是不是会这么想:假如一开始就把后验概率用 x i \vec{x_i} w \vec w 表示,直接对后验概率建模,那样就是 logistic regression 模型。然后由于 logistic regression 是用最大似然损失,经过梯度下降求得的使损失最小化的参数,而朴素贝叶斯刚好也是用最大似然法求的最优参数,这样 logistic regression 和朴素贝叶斯对文本二分类问题的解就,一模一样了吗??

Emmmm其实不然。

注意看刚刚的一大串推导当中(♠) \rightarrow (♠)这一步是在把 P ( x i     y i = k ) P(\vec{x_i}\ |\ y_i=k) 展开,这时候用到了特征之间的条件独立假设!而如果一开始用的 logistic regression 模型,得到 P ( y i = 1     x i ) = P(y_i=1\ |\ \vec{x_i})= 1 1 + e x p ( w T x i ) \frac{1}{1+exp(-\vec{w}^T\vec{x_i})} ,然后反着推,就没有条件独立假设,是推不回去的。Logistic regression 训练参数的时候即便特征之间不独立,也能训练出最优的参数,但此时 w \vec w 不一定等于 { l o g ( θ 1 ,   w o r d 1 θ 0 ,   w o r d 1 ) l o g ( θ 1 ,   w o r d 2 θ 0 ,   w o r d 2 ) . . . l o g ( θ 1 ,   w o r d V θ 0 , w o r d V ) l o g ( π 1 π 0 ) } \left\{ \begin{matrix} log\big(\frac{\theta_{1,\ word_1}}{\theta_{0,\ word_1}}\big) \\ \\ log\big(\frac{\theta_{1,\ word_2}}{\theta_{0,\ word_2}}\big) \\.\\.\\.\\ log\big(\frac{\theta_{1,\ word_V}}{\theta_{0,word_V}}\big) \\ \\ log\big(\frac{\pi_1}{\pi_0}\big) \end{matrix}\right\}


Take away message:Logistic regression + 条件独立假设 (约束) \Leftrightarrow Naive Bayes. Logistic regression is more general, more 牛逼.


整理 Logistic Regression 和 Naive Bayes 的异同

逻辑斯蒂回归 朴素贝叶斯
目标:最大化后验概率 P ( y P(y |   x ) \ \vec x) 相同
用最大似然法估计最佳参数 相同
判别式模型 生成式模型
直接对后验概率 P ( y P(y |   x ) \ \vec x) 建模 对联合分布 P ( y , x ) P(y, \vec x) 建模
约束更宽松 约束:特征之间的条件独立假设
用梯度下降进行优化 可以不通过(而不是不能)梯度下降等优化方法。事实上,由于严格的限制,朴素贝叶斯的参数已经有固定形式了,可以直接统计数据中的频率获得权重的最大似然估计。计算简单,用 counting table就行。
在有相关性的 feature 上学习得更好。对特征工程的要求低 较依赖特征工程去选取相互独立的特征。Instead of word count, 在特征工程中还可以选择 TFIDF 之类的作为特征,其实用朴素贝叶斯做project能自己发挥的也就在特征工程上面了。
由于限制宽松,所以参数空间的搜索范围更大,需要大量数据。在大数据集上,或是特征维度多时取得更好的效果 在小数据集去的更好的效果,原因是生成模型会考虑 prior,所以在其他方面的劣势体现不明显时会fit更好。


猜你喜欢

转载自blog.csdn.net/weixin_43928665/article/details/106817337