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

Algorithm 朴素贝叶斯分类(垃圾邮件过滤)-哪种计算是正确的?,algorithm,math,statistics,bayesian,spam-prevention,Algorithm,Math,Statistics,Bayesian,Spam Prevention,我正在实现用于垃圾邮件过滤的朴素贝叶斯分类器。我对一些计算有怀疑。请告诉我该怎么办。这是我的问题 在这种方法中,您必须计算 PS | W->如果消息中出现单词W,则消息是垃圾邮件的概率 PW | S->单词W出现在垃圾邮件中的概率 PW | H->单词W出现在Ham消息中的概率 因此,要计算PW | S,以下哪项是正确的: 垃圾邮件中出现W的次数/所有邮件中出现W的总次数 垃圾邮件中出现单词W的次数/垃圾邮件中的单词总数 那么,要计算PW | S,我应该做1还是2?我以为是2,但我不确定 顺便说

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

在这种方法中,您必须计算

PS | W->如果消息中出现单词W,则消息是垃圾邮件的概率

PW | S->单词W出现在垃圾邮件中的概率

PW | H->单词W出现在Ham消息中的概率

因此,要计算PW | S,以下哪项是正确的:

垃圾邮件中出现W的次数/所有邮件中出现W的总次数

垃圾邮件中出现单词W的次数/垃圾邮件中的单词总数

那么,要计算PW | S,我应该做1还是2?我以为是2,但我不确定

顺便说一下,我指的是这个信息

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

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

比如说,我们有100条培训信息,其中50条是垃圾邮件,50条是火腿。并说每条信息的字数=100

比如说,在垃圾邮件中,单词W在每条消息中出现5次,单词W在Ham消息中出现1次

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

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

所有培训信息中W的总出现次数=250+50=300次

那么,在这个场景中,如何计算PW | S和PW | H


当然我们应该期待,PW | S>PW | H对吧?

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

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

在这个贝叶斯公式中,W是你的特征,即你观察到的东西

你必须首先仔细定义什么是W。通常你有很多选择

让我们假设,在第一种方法中,你说W是事件消息,包含“伟哥”一词。也就是说,W有两个可能的值:0=消息不包含单词V。。。1=消息至少包含该单词的一次出现

在这种情况下,你是对的:PW | S是单词W在垃圾邮件中至少出现一次的概率。 为了更好地估计而不是计算它,正如另一个答案所说,计算包含至少一个单词的垃圾邮件的数量/所有垃圾邮件的数量

另一种方法是:定义W=消息中伟哥一词的出现次数。在这种情况下,我们应该估计W PW=0/S PW=1/S PW=2/S的每个值的PW/S。。。
越复杂,需要的样本越多,hopely性能越好。

在这个贝叶斯公式中,W是你的特征,即你观察到的东西

你必须首先仔细定义什么是W。通常你有很多选择

让我们假设,在第一种方法中,你说W是事件消息,包含“伟哥”一词。也就是说,W有两个可能的值:0=消息不包含单词V。。。1=消息至少包含该单词的一次出现

在这种情况下,你是对的:PW | S是单词W在垃圾邮件中至少出现一次的概率。 为了更好地估计而不是计算它,正如另一个答案所说,计算包含至少一个单词的垃圾邮件的数量/所有垃圾邮件的数量

另一种方法是:定义W=消息中伟哥一词的出现次数。在这种情况下,我们应该估计W PW=0/S PW=1/S PW=2/S的每个值的PW/S。。。
越复杂,需要的样本越多,hopely性能越好。

虽然这是一个很老的问题,但没有一个答案是完整的,所以值得纠正

朴素贝叶斯不是一个单一的算法,而是基于相同贝叶斯规则的一系列算法:

其中,C在本例中是一个类ham或spam,在最简单的情况下,带箭头的x是属性词的向量。 PC只是整个数据集中C类消息的比例。Px是具有向量x描述的属性的消息出现的概率,但由于该参数对于所有类都是相同的,所以我们暂时可以忽略它。但这个问题是关于Px | C的,如果给定当前消息的向量x,我们应该如何计算它


实际上,答案取决于NB算法的具体类型。有几种,包括多元贝努利NB、多元高斯NB、具有数字和布尔属性的多项式NB等。有关计算每种方法的Px | C的详细信息,以及用于垃圾邮件过滤任务的NB分类器的比较,请参见。

尽管这是一个非常古老的问题,但没有一个答案是完整的,因此值得更正

朴素贝叶斯不是一个单一的算法,而是基于相同贝叶斯规则的一系列算法:

其中C是e中的一类火腿或垃圾邮件 在最简单的情况下,带有箭头的示例和x是属性词的向量。 PC只是整个数据集中C类消息的比例。Px是具有向量x描述的属性的消息出现的概率,但由于该参数对于所有类都是相同的,所以我们暂时可以忽略它。但这个问题是关于Px | C的,如果给定当前消息的向量x,我们应该如何计算它


实际上,答案取决于NB算法的具体类型。有几种,包括多元贝努利NB、多元高斯NB、具有数字和布尔属性的多项式NB等。有关计算每种方法的Px | C的详细信息,以及用于垃圾邮件过滤任务的NB分类器的比较,请参见。

Hi sth,感谢您的回答,我已编辑了我的查询以添加更多详细信息,请再次查看并回复。谢谢:您好,谢谢您的回答,我已经编辑了我的查询以添加更多细节,请看一看并再次回复。谢谢:嗨,莱昂布利,谢谢你的回答,我已经编辑了我的查询,添加了更多的细节,请看一看,然后再次回复。谢谢:您添加的文字只是建议我的第二个备选方案aproach应该表现得更好。可能吧,但要付出一些代价。如果你喜欢就拿着吧,这是你的选择。但首先确定哪个是你的W,然后写下公式并推导出如何估计每个项。顺便说一句,如果你想的是实用的,而不是简单地作为一个关于贝叶斯分类的练习,这仍然太幼稚了,在获得一个像样的垃圾邮件分类器之前,你还有很长的路要走。嗨,leonbloy,谢谢你的回答,我已经编辑了我的查询,添加了一些细节,请看一看,然后再次回复。谢谢:您添加的文字只是建议我的第二个备选方案aproach应该表现得更好。可能吧,但要付出一些代价。如果你喜欢就拿着吧,这是你的选择。但首先确定哪个是你的W,然后写下公式并推导出如何估计每个项。顺便说一句,如果你想的是实用的,而不是简单地作为一个关于贝叶斯分类的练习,这仍然太幼稚了,在获得一个像样的垃圾邮件分类器之前,您还有很长的路要走。是否有任何PHP实现可以找到垃圾邮件?是否有任何PHP实现可以找到垃圾邮件?是否有用于查找垃圾邮件的朴素贝叶斯的PHP实现?是否有用于查找垃圾邮件的朴素贝叶斯的PHP实现?