【发布时间】:2016-02-16 16:22:49
【问题描述】:
我在文本分类中使用朴素贝叶斯。
假设我的词汇是 ["apple","boy","cup"],类别标签是“spam”或“ham”。每个文档将被覆盖到一个 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(特征|"火腿") = p("苹果"|"火腿")p("男孩"|"火腿")
(2) p(特征|"火腿") = p("苹果"|"火腿")p("男孩"|"火腿")(1-p("杯子"|"火腿"))
哪个公式是正确的?
我相信 (2) 是正确的,因为我们有 3 个特征(实际上是词汇表中的 3 个单词)。但是我看到其他人使用(1)编写的代码。 虽然术语 1-p("cup"|"ham") 接近 1,所以不会有太大区别,但我想要确切的答案。
【问题讨论】:
-
当我阅读Machine Learning in Action关于python中的机器学习代码时会出现这个问题。我想作者可能对这两个公式不是很了解。
-
我在 Andrew Ng 的机器学习课程中发现了这个问题的详细讨论。详细阅读lecture notes。这两个公式都是正确的,但它们所指的“特征”却大不相同。它们来自不同的模型。
-
你能指出机器学习在行动中的页面吗?会很好奇。
-
阅读 MLiA 中的第 67-73 页。代码是正确的(期待拉普拉斯平滑,在我看来应该是#word而不是2)。但是作者没有很好地讨论它。他使用了第一个公式,但将其解释为第二个公式。
标签: machine-learning probability text-classification naivebayes probability-theory