理解朴素贝叶斯的概率计算

时间:2012-04-11 01:14:19

标签: math statistics document-classification

使用朴素贝叶斯文本分类技术,您通常会计算训练数据中的单词并计算文档是一串单词的p(标签|文档)?

对于文本分类,为什么我们不能直接计算P(标签| word1,word2等)来预测标签? (即为什么我们需要使用贝叶斯定理)

鉴于文件,我们有完整的数据...似乎应该能够直接计算p(标签和w1和w2)/ p(w1和w2)?

我意识到训练集不是真相。用贝叶斯定理计算它能解决这个问题吗?如果是这样,怎么样?你能说明数学是如何运作的吗?

3 个答案:

答案 0 :(得分:2)

贝叶斯使用您的训练集和数据中的先验信息来估计后验可行性。

我认为“我们有完整的数据”是一种常见的观点。

由于很多原因,贝叶斯是对频率论方法的一种改进,但其中之一就是它允许你使用过去的信息来改善你的后验。

我建议阅读Doing Bayesian Data Analysis - A Tutorial Using R and BUGS。这是一本关于一个非常重要的主题的好书。贝叶斯赢得了战争 - 最好彻底学习。

答案 1 :(得分:1)

“Naive Bayes”这个名字有点误导,因为你通过贝叶斯定理计算这些值并不是那么值得注意。正如你所指出的,贝叶斯定理是从条件概率的标准定义推导出来的,因此我们可以证明贝叶斯定理给出的答案与正常计算的答案相同。

洞察力(或错误的假设,取决于您的观点)是,在给定文档标签的情况下,单词频率通常是独立的。因此,P(w_1, ..., w_n | label)很容易计算:P(w_1, ..., w_n | label) = P(w_1 | label) * ... * P(w_n | label)

但我们当然不关心P(w_1, ..., w_n | label),我们需要P(label | w_1, ..., w_n)。所以我们需要使用贝叶斯定理,因此得名。

通过这种方式,我们可以嵌入我们关于单词'独立性的知识'来做出更好的预测。如果我们只是进行原始计算,就无法编码我们关于独立性的知识。

(贝叶斯网络通常都是如此,而不仅仅是朴素贝叶斯 - 这样做的好处是你可以编码你之前关于变量之间关系的知识。)

答案 2 :(得分:0)

经过研究,问过几个人,并考虑过它。你不计算的原因:

p(标签| W1 = 1,W2 = 2等)直接

因为你需要保留一个bigrams,trigrams等索引,所以计算难度很大。即便如此,你还需要一种聪明的方法来处理索引中出现零次的单词。

使用贝叶斯是解决问题的好方法,但你需要做出条件独立性假设。

您还可以将公式变为另一种形式,其中单词仍位于右侧。下面是从使用贝叶斯公式的分子开始的数学运算:

p(w1 | c)* p(w2 | c)... * p(c)

这可以分解为

p(c | w1)* p(w1)/ p(c)* p(c | w2)* p(w2)/ p(c)... p(c | Wn)* p(Wn) / p(c)* p(c)

简化为

p(c | w1)... p(c | Wn)* p(c)^ - (n-1)* p(w1).... p(Wn)