algorithm - 朴素贝叶斯分类(垃圾邮件过滤)——哪种计算是正确的?

标签 algorithm math statistics bayesian spam-prevention

我正在实现用于垃圾邮件过滤的朴素贝叶斯分类器。我对一些计算有疑问。请告诉我该怎么做。这是我的问题。

在这个方法中,你必须计算

alt text

P(S|W) -> 消息是垃圾邮件的概率,给定单词 W 出现在其中。

P(W|S) -> 单词 W 在垃圾邮件中出现的概率。

P(W|H) -> 单词 W 在 Ham 消息中出现的概率。

所以要计算P(W|S),下列哪项是正确的:

  1. (W在垃圾邮件中出现的次数)/(W在所有邮件中出现的总次数)

  2. (单词W在垃圾邮件中出现的次数)/(垃圾邮件中的单词总数)

那么,要计算 P(W|S),我应该做 (1) 还是 (2)? (我认为它是(2),但我不确定。)

我指的是 http://en.wikipedia.org/wiki/Bayesian_spam_filtering顺便说一下信息。

我必须在本周末之前完成实现 :(


单词“W”的重复出现不应该增加邮件的垃圾邮件分数吗?在您的方法中它不会,对吗?

比方说,我们有 100 条训练消息,其中 50 条是垃圾邮件,50 条是非垃圾邮件。并说每条消息的 word_count = 100。

假设,在垃圾邮件中,单词 W 在每条邮件中出现 5 次,而单词 W 在非垃圾邮件中出现 1 次。

因此所有垃圾邮件中出现的总次数W = 5*50 = 250次。

W 在所有 Ham 消息中出现的总次数 = 1*50 = 50 次。

W 在所有训练消息中的总出现次数 = (250+50) = 300 次。

那么,在这种情况下,您如何计算 P(W|S) 和 P(W|H) ?

当然我们应该期待,P(W|S) > P(W|H) 对吗?

最佳答案

P(W|S) =(包含 W 的垃圾邮件数量)/(所有垃圾邮件数量)

关于algorithm - 朴素贝叶斯分类(垃圾邮件过滤)——哪种计算是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2828113/

相关文章:

c# - C# 中的这个 QuickSort 算法有什么问题?

c# - 算法改进

algorithm - 如何将曲线下的面积分成相等的段

PHP Round 函数 - 舍入到 2 dp?

math - 第 N 个组合

algorithm - 有多少个长度为 n 的单词最多有 k 个连续的元音?

java - 动态规划 : Bits Array Java

math - 给定元素的当前边界矩形及其变换矩阵,计算未变换元素的边界矩形

python - 计算所有排列,包括所有子列表

python - 如何在 Python 中计算 cohen's d?