Machine learning 朴素贝叶斯垃圾邮件过滤

Machine learning 朴素贝叶斯垃圾邮件过滤,machine-learning,nlp,spam-prevention,Machine Learning,Nlp,Spam Prevention,我正在尝试使用朴素贝叶斯分类器实现我的第一个垃圾邮件过滤器。我正在使用UCI机器学习数据库()提供的数据。该数据是对应于数千条垃圾邮件和非垃圾邮件(ham)消息的特征表。因此,我的功能仅限于表中提供的功能 我的目标是实现一个能够计算p(S)的分类器∣M) ,在给定消息的情况下成为垃圾邮件的概率。到目前为止,我一直在使用下面的方程式来计算P(S∣F) ,在给定功能的情况下被垃圾邮件攻击的概率 p(S)∣F) =P(F)∣S) /(P(F)∣S) +P(F)∣H) ) 从 其中p(F)∣S) 是给定

我正在尝试使用朴素贝叶斯分类器实现我的第一个垃圾邮件过滤器。我正在使用UCI机器学习数据库()提供的数据。该数据是对应于数千条垃圾邮件和非垃圾邮件(ham)消息的特征表。因此,我的功能仅限于表中提供的功能

我的目标是实现一个能够计算p(S)的分类器∣M) ,在给定消息的情况下成为垃圾邮件的概率。到目前为止,我一直在使用下面的方程式来计算P(S∣F) ,在给定功能的情况下被垃圾邮件攻击的概率

p(S)∣F) =P(F)∣S) /(P(F)∣S) +P(F)∣H) ) 从

其中p(F)∣S) 是给定特征的概率,P(F)∣H) 是给定特征的概率。我很难弥合认识P(S)的差距∣F) 至P(S)∣M) 其中M是一条消息,消息只是一包独立的特性

乍一看,我只想将这些特征相乘。但这将使大多数数字非常小,我不确定这是否正常

简而言之,这些就是我现在的问题。
1.)如何获取一组P(S)∣F) 至P(S)∣M) 。 2.)一次P(S∣M) 已计算,如何为分类器定义阈值? 3.)幸运的是,我的功能集是为我选择的,我将如何选择或查找自己的功能集


我也很感激能帮助我的资源。谢谢您的时间。

您想使用朴素贝叶斯:

  • 解释它可能超出了这个答案的范围,但本质上,你要将每个特征产生垃圾邮件的概率相乘,然后再乘以先前的垃圾邮件概率。然后对ham重复上述步骤(即,将给定ham的每个特征相乘,再乘以ham的先验概率)。现在你有了两个数字,它们可以被标准化为概率,方法是将它们除以两者的总和。这将给出S | M和S | H的概率。再次阅读上面的文章。如果要避免数值下溢,请记录每个条件概率和先验概率(任意基数)并相加,而不是乘以原始概率。添加日志相当于将原始数字相乘。这不会在最后给你一个概率数,但是你仍然可以把值较大的那个作为预测类

  • 您不需要设置阈值,只需根据更可能的情况对每个实例进行分类,如垃圾邮件或ham(或任何给您带来更大日志可能性的情况)

  • 对此没有简单的答案。对于这个问题,使用单词袋模型是合理的。避免使用非常罕见的(出现在<5个文档中)和非常频繁的单词,例如,和。常用停止词列表来删除这些词。特征选择算法也会有所帮助。删除高度相关的特性将有所帮助,特别是对于朴素贝叶斯,它对此非常敏感