朴素贝叶斯应该将词汇表中的所有单词复用

时间:2015-11-15 14:14:07

标签: machine-learning probability text-classification naivebayes probability-theory

我在文本分类中使用朴素贝叶斯。

假设我的词汇是[“apple”,“boy”,“cup”],而班级标签是“垃圾邮件”或“火腿”。每个文件将被覆盖到3维0-1向量。例如,“apple boy apple apple”将转换为[1,1,0]

现在我已经从训练样例中计算了条件概率p(“apple”|“spam”),p(“apple”|“ham”),p(“boy”|“spam”)......等等。

测试文档是垃圾邮件还是火腿,例如“apple boy” - > [1,1,0] 我们需要计算p(features | classLabel)

对测试向量[1,1,0]

使用条件独立性

我知道这两个公式

(1)p(features |“ham”)= p(“apple”|“ham”)p(“boy”|“ham”)

(2)p(features |“ham”)= p(“apple”|“ham”)p(“boy”|“ham”)(1-p(“cup”|“ham”))< / p>

哪个公式是对的?

我相信(2)是正确的,因为我们有3个特征(实际上是3个单词的词汇)。但我看到其他人使用(1)编写的代码。 虽然术语1-p(“杯”|“火腿”)接近1,但它不会产生太大的差异,但我想要确切的答案。

1 个答案:

答案 0 :(得分:2)

你的直觉是正确的,也可能是你写的代码。但是,您的问题在于符号。 (我需要承认,在开始时很难绕过它。)你所缺少的最重要的概念是随机变量(RV)

我使用HAMCUPBOYHAM作为随机变量。每个RV可以采用contains(c)或not contains(nc)两种可能的事件。然后,文本包含男孩的概率可以写为P(BOY=contains),并且不包含单词P(BOY=not contains)= 1-P(BOY=contains)

然后正确的公式

P(FEATURES| HAM) =  P(CUP,BOY,APPLE|HAM) = P(CUP|HAM)P(BOY|HAM)P(APPLE|HAM)

最后一步是由于天真的Bays假设。 要计算您要求计算的概率

 P(BOY=c,APPLE=c,CUP=nc|HAM) = P(BOY=c|HAM)P(APPLE=c|HAM)P(CUP=nc|HAM) 
                             = P(BOY=c|HAM)P(APPLE=c|HAM)(1-P(CUP=c|HAM))

实际上这些仍然是两个概率(不总结为一个),因为HAM可以占用两个值。