使用 naive-bayes 检测垃圾邮件

     2023-03-12     285

关键词:

【中文标题】使用 naive-bayes 检测垃圾邮件【英文标题】:Using naive-bayes for detecting spam 【发布时间】:2016-05-07 09:56:23 【问题描述】:

我正在实现一个朴素贝叶斯垃圾邮件检测器,它的特征是单词,我不确定我是否正确理解了算法。

这是我尝试实现算法的方式:

在训练集中,我计算文本中的特定单词出现在垃圾邮件文本中的频率,以及它出现在非垃圾邮件文本中的频率。我还存储了训练期间检查的垃圾邮件和非垃圾邮件的总量。

现在训练完成后假设我有一个新文本T,我想对其进行分类。

我首先假设垃圾邮件 (S) 和非垃圾邮件 (N) 的先验概率为:

P(S) = 0.5 
P(N) = 0.5

现在我检查包含在T 中的每个单词W

假设一个词 W 在垃圾邮件文本中出现 20 次,在非垃圾邮件文本中出现 2 次。检查的垃圾邮件总数是 50,检查的非垃圾邮件总数也是 50,所以我有后验概率:

P(W|S) = 20 / 50
P(W|N) = 2 / 50

计算出来的概率是

P(S|W) = P(W|S) * P(S) = 0.2
P(N|W) = P(W|N) * P(N) = 0.02

由此算法会将文本分类为垃圾邮件。

我无法理解的是以下情况:

假设我们有一个单词W,它在垃圾邮件文本中出现了 0 次,但在非垃圾邮件文本中出现了 1 次。在这种情况下,垃圾邮件的后验概率是

P(W|S) = O / 50 = 0

因此整个概率也将为 0。

因此,这意味着每当文本中出现从未在垃圾邮件文本中找到但在非垃圾邮件文本中找到的单词时,算法会将文本分类为非垃圾邮件,而不管任何其他单词和之前的概率。

这让我感到困惑,让我觉得我还没有正确理解算法。

【问题讨论】:

【参考方案1】:

您必须实施加法平滑以将非字典单词考虑在内。

这种附加平滑将使不属于字典 P(W|S) 的单词的概率 > 0。

这是修改后的可能性公式:

P(word|class) = sum ( I(word,D) + lambda) / |D_class| + lambda|V| ) on each document D belonging to all documents in the class.

其中I(word,document) 是指示函数,如果文档包含单词则返回1,否则返回0

lambda 是一个选定的常量

|D_class|是类中的文档数

|V| 是词典或词汇表中的单词数

【讨论】:

垃圾邮件检测服务的最佳语言选择[关闭]

...RESTapi,比如垃圾邮件检查服务,我会在我的所有博客中使用它。这样我就可以整合 查看详情

用于电子邮件垃圾邮件检测的神经网络输入

...解决XOR问题的神经网络,我想根据我的目的编辑该网络并使用ba。可在此处访问:https://github.com/trentsartain/Neural-Network我下载了一些文本格式 查看详情

可靠地检测基于 PhantomJS 的垃圾邮件机器人

...但我很好奇是否有一种可靠的方法可以知道CasperJS是否在使用中,如处理不断的适应会有点烦 查看详情

目前最好的垃圾邮件过滤算法

...algorithm【发布时间】:2011-05-2912:36:49【问题描述】:目前检测垃圾邮件的最佳方法是什么?尤其是手机短信。有没有资源或比较分析?【问题讨论】:您是从程序员的角度还是从用户的角度提问?即,您想要实现垃圾邮件检测算... 查看详情

垃圾邮件分类 - 机器学习

...arning【发布时间】:2014-04-2105:44:25【问题描述】:我必须使用一些分类器(例如朴素贝叶斯、SVM和另一个分类器)进行垃圾邮件检测应用程序并比较它们的效率,但不幸的是我不知道我应该具体做什么。这是否正确:首先,我应... 查看详情

用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

...滤器库,它可以帮助我保护我们的Web服务免受未经授权的使用和DDoS。我们的网络服务有“授权客户”,因此理想情况下,过滤器将有助于检测未经授权或行为不当的客户,或检测使用同一帐户 查看详情

基于卷积神经网络(cnn)的中文垃圾邮件检测

...本分类任务是一个经久不衰的课题,其应用包括垃圾邮件检测、情感分析等。传统机器学习的做法是先进行特征工程,构建出特征向量后,再将特征向量输入各种分类模型(贝叶斯、SVM、神经网络等)进行分类。随着深度学习的... 查看详情

数据科学项目02:nlp应用之垃圾短信/邮件检测(端到端的项目)(代码片段)

...0c;我们将创建一个垃圾短信/邮件检测模型,该模型将使用朴素贝叶斯和自然语言处理(NLP)来确定是否为垃圾短信/邮件。 查看详情

使用 Cups Api 检测打印机状态变化

】使用CupsApi检测打印机状态变化【英文标题】:DetectingPrinterStateChangewithCupsApi【发布时间】:2017-03-2718:43:19【问题描述】:使用Cupscapi,我可以看到打印机的状态(例如暂停、打印、卡住等)。我现在要做的是监听或锁定打印机... 查看详情

垃圾短信邮件判断算法

...间是不需要联网判断或结合其他办法判断的。像很多病毒检测软件,或IDS或WAF软件一样,垃圾短信和骚扰电话也可以建立自己的规则库,通过规则库进行垃圾短信的判断,同样像IDS等软件存在误判的情况一样,垃圾短信采用规则... 查看详情

如何在垃圾邮件过滤中嵌入带有朴素贝叶斯分类器的关联规则?

...在研究用于过滤邮件的朴素贝叶斯分类器。我在垃圾邮件检测中的准确率达到了95%,在HAM检测中达到了94%,但我相信可以通过关联规则挖掘进一步提高它。我正在 查看详情

javascript使用javascript的垃圾邮件电子邮件(代码片段)

查看详情

machinelearning:什么是机器学习

...学习之前,我想先列几个关于机器学习的例子:垃圾邮件检测:根据邮箱中的邮件,识别哪些是垃圾邮件,哪些不是。这样的模型,可以程序帮助归类垃圾邮件和非垃圾邮件。这个例子,我们应该都不陌生。信用卡欺诈检测:根... 查看详情

在标签中使用域名时,电子邮件进入垃圾邮件[重复]

】在标签中使用域名时,电子邮件进入垃圾邮件[重复]【英文标题】:Emailsgoestospamwhenusingdomainnameintag[duplicate]【发布时间】:2017-07-0106:03:38【问题描述】:我有两个域。例如:domain1.com和domain2.com.我正在使用PHPMailer发送电子邮件... 查看详情

ASP.NET 的恶意爬虫拦截器

...PHP插件,它承诺通过阻止垃圾邮件和恶意爬虫访问网站来检测垃圾邮件和恶意爬虫。ASP.NET和ASP.NETMVC是否存在类似的东西?我感兴趣的是完全阻止对网站的访问,而不是在垃圾邮件发布后检测垃圾邮件。编辑:我对检测网站 查看详情

sas神经网络:构建人工神经网络模型来识别垃圾邮件(代码片段)

...处理,医疗诊断,金融服务和欺诈检测。此样本说明如何使用SAS®In-MemoryStatistics中的NEURAL语句来构建人工神经网络模型来识别垃圾邮件。该示例中使用的数据集是机器学习存储库 查看详情

使用php邮件功能防止发送的电子邮件被视为垃圾邮件

】使用php邮件功能防止发送的电子邮件被视为垃圾邮件【英文标题】:Preventsentemailstreatedasjunkmailsusingphpmailfunction【发布时间】:2010-10-1907:25:34【问题描述】:我写了一个PHP脚本来发送电子邮件。我的脚本是这样的:$headers=\'MIME-V... 查看详情

使用 Scikit Naive-Bayes 模型的精度为 0.0

】使用ScikitNaive-Bayes模型的精度为0.0【英文标题】:Accuracyof0.0usingScikitNaive-Bayesmodel【发布时间】:2021-09-2821:15:03【问题描述】:我正在尝试使用VSC在Python中使用基本的朴素贝叶斯分类器。我的尝试都产生了0.0的准确度。这是样本... 查看详情