了解朴素贝叶斯分类器的这种应用

时间:2013-08-29 14:15:06

标签: bayesian sentiment-analysis

我对这个例子感到有些困惑,我一直在线。如果出现任何问题,请在我提出问题之前纠正我!我知道贝叶斯定理是这样的:

P(A│B)= P(B│A) * P(A)  
         ----------             
            P(B)

在我正在查看的示例中,正在对文本文档进行分类。文本文件都是“恐怖主义”或“娱乐”,所以:

Prior probability for either, i.e. P(A) = 0.5

有六个单词频率的文档如下:

enter image description here

这个例子继续分解这些单词相对于每个类的频率,应用拉普拉斯估计:

enter image description here

因此,根据我的理解,这些数字中的每一个代表P(B | A),即该词出现在特定类别(恐怖主义或娱乐)的概率。

现在一份新文件到了,这个细分:

enter image description here

该示例通过执行此操作来计算此新文本文档与恐怖主义相关的概率:

P(Terrorism | W) = P(Terrorism) x P(kill | Terrorism) x P(bomb | Terrorism) x P(kidnap | Terrorism) x P(music | Terrorism) x P(movie | Terrorism) x P(TV | Terrorism)

其中包含:

0.5 x 0.2380 x 0.1904 x 0.3333 x 0.0476 x 0.0952 x 0.0952

同样,到目前为止,我认为我正在关注。 P(恐怖主义| W)是P(A | B),P(恐怖主义)= P(A)= 0.5而P(B | A)=上表中“恐怖主义”的所有结果相乘。

但是为了将它应用于这个新文档,该示例计算上面的每个P(B | A)到新频率的功率。所以上面的计算变成了:

0.5 x 0.2380^2 x 0.1904^1 x 0.3333^2 x 0.0476^0 x 0.0952^0 x 0.0952^1

从那里他们做了一些我得到的和找到答案。我的问题是:

公式中的哪个位置表示将新频率作为当前P(B | A)的幂?

这只是我不知道的统计数据吗?这是通用的还是仅仅是如何做到的一个特定的例子?我问的是因为我找到的所有例子都略有不同,使用略有不同的关键字和术语,我发现它只是有点令人困惑!

1 个答案:

答案 0 :(得分:1)

首先,公式

P(Terrorism | W) = P(Terrorism) x P(kill | Terrorism) x P(bomb | Terrorism) x P(kidnap | Terrorism) x P(music | Terrorism) x P(movie | Terrorism) x P(TV | Terrorism)

不太对劲。您需要将其除以P(W)。但是你暗示,当它说“他们做了一些总结”时,这会得到照顾,所以我们可以继续讨论你的主要问题。


传统上,在对文本分类进行Naive Bayes时,您只能查看单词的存在,而不是它们的计数。当然,您需要计算在列车时间P(word | class),但在测试时P("music" | Terrorism)通常表示“音乐”一词在恐怖主义文件中至少出现一次的概率。

看起来你正在处理的实现是在尝试考虑与P("occurrences of kill" = 2 | Terrorism)不同的P("at least 1 occurrence of kill" | Terrorism)。那么为什么他们最终会提高权力的可能性呢?看起来他们的推理是P("kill" | Terrorism)(他们在火车时间估计)表示恐怖主义文件中任意一个词被“杀”的概率。因此,通过简化假设,恐怖主义文件中第二个任意单词“被杀”的概率也是P("kill" | Terrorism)

对于文档中没有出现单词的情况,这会留下一些小问题。通过这种方案,相应的概率被提升到0次幂,换句话说它消失了。换句话说,它接近P("occurrences of music" = 0 | Terrorism) = 1。应该清楚的是,一般来说,严格来说这是假的,因为它意味着P(occurrences of music" > 0 | Terrorism) = 0。但是对于您拥有长文档和成千上万个单词的真实世界示例,大多数文档中都不会出现。因此,不是在准确计算所有这些概率(这在计算上是昂贵的)而烦恼,它们基本上被扫地,因为对于绝大多数情况,它无论如何都不会改变分类结果。还要注意,除了它是计算密集型之外,它在数值上是不稳定的,因为如果你将数千或数万个小于1的数字相乘,你将会下溢并且它会吐出0;如果你在日志空间中这样做,你仍然会将数万个数字加在一起,从数值稳定的角度来看,这些数字必须精细处理。因此,“将其提升为动力”方案本身可以消除不必要的绒毛,降低计算强度,提高数值稳定性,并且仍能产生几乎相同的结果。


我希望美国国家安全局认为我在这个答案中使用过恐怖主义这个词并不是恐怖分子:S