第五节:分类器中的天真小弟 —— 朴素贝叶斯
朴素贝叶斯文本分类模型
考虑如下文本分类模型:
P(yi,di) 表示一篇文章以及它的 label 的联合概率。
di 指第 i 条训练数据中的文本。假设
di 中每个词都是一个特征。
条件独立分布假设:已知文本标签的条件下,特征的分布是相互独立的。(已知标签后
yi,
di 的概率等于该文本中每个词出现的概率乘积。
利用贝叶斯条件概率公式:
P(yi,di)=P(y=yi)P(di ∣ y=yi)
=P(y=yi)j=1∏VP(xj ∣ y=yi)Cdi(xj)
其中,
V 代表字典的 size,
xj 代表 the
jth word in dictionary,
Cdi(xj) 代表词
xj 在文件
di 中出现的次数。
Define:
P(y=yi)=πyi,P(xj ∣ y=yi)=θyi, xj ← 这两种概率就是我们要估计的参数
⇒P(yi,di)=πyij=1∏V(θyi, xj)Cdi(xj)
用最大似然法估计朴素贝叶斯的最佳参数
(参数下面带波浪线代表是参数向量 / 矩阵, D 代表数据集中文件的总个数)
Likelihood(∼π, ∼θ)=i=1∏DP(yi,di)
=i=1∏D[πyij=1∏V(θyi, xj)Cdi(xj)]
log(Likelihood(∼π, ∼θ))=i=1∑D[logπyi+j=1∑VCdi(xj)log(θyi, xj)]
约束:
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧① k=1∑Kπk=1② for every k, j=1∑Vθk, j=1
log(Lπk)=i=1∑D[logπyi+j=1∑VCdi(xj)log(θyi, xj)]+α(k=1∑Kπk−1) ← 对
πk 求最优解,对第一个约束引入拉格朗日乘子
∂πk∂log(Lπk)=i=1∑Dπk1Iyi=k+α=0,
for k=1, 2, ..., K ← 对
πk 求偏导数并令其得0
Iyi=k 是 Indicator function,
Iyi=k={1if yi=k0otherwise
⇒ πk∑i=1DIyi=k+α=0
⇒ πk=α−(yi=k的文件数)
根据第一个约束,我们有:
∑k=1Kπk=α−∑k=1K(yi=k的文件数)=α−(总文件个数)=1
⇒ α=−(总文件个数)
⇒ πk=总文件个数yi=k的文件数
log(Lθk, j)=i=1∑D[logπyi+j=1∑VCdi(xj)log(θyi, xj)]+μk(j=1∑Vθk, j−1) ← 对
θk, j 求最优解,对第二个约束引入拉格朗日乘子
∂θk, j∂log(Lθk, j)=i=1∑Dθk ,jCdi(xj)Iyi=k+μk=0,
for k=1, 2, ..., K, j=1, 2, ..., V ← 对
θk, j 求偏导数并令其得0
⇒ θk, jyi=k的文件中词xj的个数+μk=0
⇒ θk, j=μk−(yi=k的文件中词xj的个数)
根据第二个约束,我们有:
∑j=1Vθk, j=μk−∑j=1V(yi=k的文件中词xj的个数)=μk−(yi=k的文件中所有词的个数)=1
⇒ μk=−(yi=k的文件中所有词的个数)
⇒ θk, j=yi=k的文件中所有词的个数yi=k的文件中词xj的个数
朴素贝叶斯,逻辑斯蒂回归,傻傻分不清楚?
之前我们讲一个文件
di 的特征是文件当中的所有单词,那么从现在起
di 用一个特征向量
xi
表示。
利用贝叶斯条件概率公式:
P(yi ∣ xi
)=P(xi
)P(yi,xi
)=P(xi
)P(xi
∣ yi)P(yi)
在二分类问题中,
yi∈{1,0}:
⎩⎪⎨⎪⎧P(yi=1 ∣ xi
)=P(xi
)P(xi
∣ yi=1)P(yi=1) ← 后验概率P(yi=0 ∣ xi
)=P(xi
)P(xi
∣ yi=0)P(yi=0) ← 后验概率
上面的等式左边是后验概率,然后我们用等式右边的先验概率给表示了。等式右边的分子中
P(xi
∣ yi=k) 和
P(yi=k) 都是参数,用刚才的最大似然法估计。在预测的时候,由于上面两个后验概率表达式的分母一样,所以只要比较分子即可,哪个大就预测为哪一类。
在提及分类问题的时候经常有 “最大后验概率” 这个说法。但是,由于我们忽略了上面两个后验概率表达式的分母
P(xi
),因此模型其实计算的是
P(xi
∣ yi=k)P(yi=k)=P(yi,xi
)。 朴素贝叶斯其实是对特征向量和标签的 联!合!分!布!建模,而非直接对后验概率建模!
继续回到上面两个后验概率的表达式,分母
P(xi
) 的作用看作是“归一化”,因为
P(xi
)=P(yi=1,xi
)+P(yi=0,xi
)
=P(xi
∣ yi=1)P(yi=1)+P(xi
∣ yi=0)P(yi=0)
=两式分子之和
我们对
P(yi=1 ∣ xi
) 做一些变形:
P(yi=1 ∣ xi
)=P(xi
∣ yi=1)P(yi=1)+P(xi
∣ yi=0)P(yi=0)P(xi
∣ yi=1)P(yi=1)
=1+P(xi
∣ yi=1)P(yi=1)P(xi
∣ yi=0)P(yi=0)1
=1+exp{−log(P(xi
∣ yi=0)P(yi=0)P(xi
∣ yi=1)P(yi=1))}1 (♠)
=1+exp{−log(π0∏j=1V(θ0, xj)Cdi(xj)π1∏j=1V(θ1, xj)Cdi(xj))}1 (♠’)
=1+exp{−[logπ1+∑j=1VCdi(xj)log(θ1, xj)−logπ0−∑j=1VCdi(xj)log(θ0, xj)]}1
=1+exp{−log(π0π1)−∑j=1VCdi(xj)log(θ0, xjθ1, xj)}1 (♦)
令
b=log(π0π1),
wj=log(θ0, xjθ1, xj), for j=1,2,...,V
既然
di 是用文件中每个词的个数表示的,那么字典里共
V 个词意味着每个文件的特征向量有
V 维。
于是:
xi
=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧Cdi(word1)Cdi(word2)...Cdi(wordV)1 ← bias⎭⎪⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎪⎫,
w
=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧w1w2...wVb⎭⎪⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎪⎫=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧log(θ0, word1θ1, word1)log(θ0, word2θ1, word2)...log(θ0,wordVθ1, wordV)log(π0π1)⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫
将
xi
, w
带入上面的 (♦)式,得到:
P(yi=1 ∣ xi
)=1+exp(−w
Txi
)1
哟吼~ 我们竟然把朴素贝叶斯中的后验概率推出了 logistic regression 的模样!
这时候不禁会想,难道朴素贝叶斯和 logistic regression 是。。。等。。。价的?小朋友你是否有很多问号???
是不是会这么想:假如一开始就把后验概率用
xi
和
w
表示,直接对后验概率建模,那样就是 logistic regression 模型。然后由于 logistic regression 是用最大似然损失,经过梯度下降求得的使损失最小化的参数,而朴素贝叶斯刚好也是用最大似然法求的最优参数,这样 logistic regression 和朴素贝叶斯对文本二分类问题的解就,一模一样了吗??
Emmmm其实不然。
注意看刚刚的一大串推导当中(♠)
→ (♠’)这一步是在把
P(xi
∣ yi=k) 展开,这时候用到了特征之间的条件独立假设!而如果一开始用的 logistic regression 模型,得到
P(yi=1 ∣ xi
)=
1+exp(−w
Txi
)1,然后反着推,就没有条件独立假设,是推不回去的。Logistic regression 训练参数的时候即便特征之间不独立,也能训练出最优的参数,但此时
w
不一定等于
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧log(θ0, word1θ1, word1)log(θ0, word2θ1, word2)...log(θ0,wordVθ1, wordV)log(π0π1)⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫
Take away message:Logistic regression + 条件独立假设 (约束)
⇔ Naive Bayes. Logistic regression is more general, more 牛逼.
整理 Logistic Regression 和 Naive Bayes 的异同
逻辑斯蒂回归 |
朴素贝叶斯 |
目标:最大化后验概率
P(y |
x
) |
相同 |
用最大似然法估计最佳参数 |
相同 |
判别式模型 |
生成式模型 |
直接对后验概率
P(y |
x
) 建模 |
对联合分布
P(y,x
) 建模 |
约束更宽松 |
约束:特征之间的条件独立假设 |
用梯度下降进行优化 |
可以不通过(而不是不能)梯度下降等优化方法。事实上,由于严格的限制,朴素贝叶斯的参数已经有固定形式了,可以直接统计数据中的频率获得权重的最大似然估计。计算简单,用 counting table就行。 |
在有相关性的 feature 上学习得更好。对特征工程的要求低 |
较依赖特征工程去选取相互独立的特征。Instead of word count, 在特征工程中还可以选择 TFIDF 之类的作为特征,其实用朴素贝叶斯做project能自己发挥的也就在特征工程上面了。 |
由于限制宽松,所以参数空间的搜索范围更大,需要大量数据。在大数据集上,或是特征维度多时取得更好的效果 |
在小数据集去的更好的效果,原因是生成模型会考虑 prior,所以在其他方面的劣势体现不明显时会fit更好。 |