很好的介绍算法的文章,很通俗易懂,可以给人信心继续读下去了
一. 贝叶斯过滤算法的基本步骤
1) 收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。
2) 提取邮件主题和邮件体中的独立字串例如 ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。
3) 每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。
4) 计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)
5) 综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式为:
A事件----邮件为垃圾邮件;
t1,t2 …….tn代表TOKEN串
则P(A|ti)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。
设
P1(ti)=(ti在hashtable_good中的值)
P2(ti)=(ti在hashtable_ bad中的值)
则 P(A|ti)= P1(ti)/[(P1(ti)+ P2(ti)];
6) 建立新的哈希表 hashtable_probability存储TOKEN串ti到P(A|ti)的映射
7) 至此,垃圾邮件集和非垃圾邮件集的学习过程结束。根据建立的哈希表 hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性。
当新到一封邮件时,按照步骤2)生成TOKEN串。查询hashtable_probability得到该TOKEN 串的键值。
假设由该邮件共得到N个TOKEN串,t1,t2…….tn, hashtable_probability中对应的值为P1,P2,。。。。。。PN,
P(A|t1 ,t2, t3……tn)表示在邮件中同时出现多个TOKEN串t1,t2…….tn时,该邮件为垃圾邮件的概率。
由复合概率公式可得
P(A|t1 ,t2, t3……tn)=(P1*P2*。。。。PN)/[P1*P2*。。。。。PN+(1-P1)*(1-P2)*。。。(1-PN)]
当P(A|t1 ,t2, t3……tn)超过预定阈值时,就可以判断邮件为垃圾邮件。
二. 贝叶斯过滤算法举例
例如:一封含有“法 轮 功”字样的垃圾邮件 A
和 一封含有“法律”字样的非垃圾邮件B
根据邮件A生成hashtable_ bad,该哈希表中的记录为
法:1次
轮:1次
功:1次
计算得在本表中:
法出现的概率为0。3
轮出现的概率为0。3
功出现的概率为0。3
根据邮件B生成hashtable_good,该哈希表中的记录为:
法:1
律:1
计算得在本表中:
法出现的概率为0。5
律出现的概率为0。5
综合考虑两个哈希表,共有四个TOKEN串: 法 轮 功 律
当邮件中出现“法”时,该邮件为垃圾邮件的概率为:
P=0。3/(0。3+0。5)=0。375
出现“轮”时:
P=0。3/(0。3+0)=1
出现“功“时:
P=0。3/(0。3+0)=1
出现“律”时
P=0/(0+0。5)=0;
由此可得第三个哈希表:hashtable_probability 其数据为:
法:0。375
轮:1
功:1
律:0
当新到一封含有“功律”的邮件时,我们可得到两个TOKEN串,功 律
查询哈希表hashtable_probability可得
P(垃圾邮件| 功)=1
P (垃圾邮件|律)=0
此时该邮件为垃圾邮件的可能性为:
P=(0*1)/[0*1+(1-0)*(1-1)]=0
由此可推出该邮件为非垃圾邮件
分享到:
相关推荐
朴素贝叶斯算法是一种基于概率论的机器学习方法,它假设各特征之间相互独立,并且每个特征对结果类别的影响是独立的。在Python中,我们可以利用sklearn库中的GaussianNB、MultinomialNB和BernoulliNB等类来实现朴素...
在本项目中,我们将深入探讨"贝叶斯算法-实战:新闻分类器"这一主题,这是一个非常适合机器学习初学者的实践项目。通过这个项目,你可以了解到如何利用贝叶斯算法来处理文本分类问题,特别是新闻文章的分类。下面将...
在这个实验中,我们关注的是使用朴素贝叶斯算法来实现数据分类。朴素贝叶斯算法是一种基于概率理论的分类方法,它假设各个特征之间相互独立,这在许多实际问题中虽然简化了计算,但依然能够提供相当不错的分类效果。...
beiyesi.py 是一个用于实现贝叶斯算法的 Python 脚本。贝叶斯算法基于贝叶斯定理,用于分类和预测问题。它通过计算特征数据的条件概率,进行分类决策。贝叶斯分类器包括朴素贝叶斯分类器(Naive Bayes)和其他基于...
朴素贝叶斯算法是一种基于概率理论的分类方法,它的核心思想是假设各个特征之间相互独立,并且基于贝叶斯定理来计算一个实例属于某个类别的概率。在本项目中,我们将利用朴素贝叶斯算法处理MNIST数据集,这是一个...
总之,理解和掌握决策树和朴素贝叶斯算法对于初学者和经验丰富的数据科学家都是至关重要的。它们不仅提供了对复杂数据的洞察力,也是许多更高级机器学习技术的基础。通过实际操作和应用,我们可以更好地理解和运用...
贝叶斯算法是一种基于概率论的统计学习方法,它的核心思想是通过贝叶斯定理来更新先验概率,得到后验概率。在C语言中实现贝叶斯算法,可以帮助我们理解算法背后的数学原理,并将其应用到实际问题中。本项目源代码...
朴素贝叶斯算法是一种基于贝叶斯定理的简单概率分类器,尽管它假设特征之间相互独立,但其简单性和效率使其在许多实际应用中表现出色。在社交网络数据挖掘的研究中,朴素贝叶斯算法能够处理大量的多元特征数据,是...
朴素贝叶斯算法是一种在机器学习领域广泛应用的概率型分类方法,尤其在文本分类中表现出色。这个程序是用Python语言实现的,它利用朴素贝叶斯理论对文本数据进行分类。下面将详细介绍朴素贝叶斯算法及其在Python中的...
朴素贝叶斯算法是一种基于概率统计的分类方法,它的理论基础是贝叶斯定理,因此得名。在机器学习领域,朴素贝叶斯算法因其简单高效、易于理解和实现而被广泛应用,尤其是在文本分类和垃圾邮件过滤等领域。在这个实例...
在IT领域,尤其是在数据分析、机器学习以及人工智能中,贝叶斯算法是一种常用且重要的方法。本资源"Matlab-贝叶斯算法.rar"提供了一种使用MATLAB编程环境实现贝叶斯算法的方式。MATLAB是一种强大的数值计算软件,...
朴素贝叶斯算法是一种基于概率论的分类方法,它的理论基础是贝叶斯定理。在机器学习领域,朴素贝叶斯模型因其简单、高效和易于实现的特点而被广泛使用。在这个项目中,我们将探讨如何将朴素贝叶斯应用于Kaggle上的...
朴素贝叶斯算法是机器学习领域中一种简单而有效的分类方法,尤其在处理文本分类问题时,如垃圾邮件检测,其表现出色。该算法基于贝叶斯定理和特征条件独立假设,即假设各个特征之间相互独立。在这个数据集中,我们...
贝叶斯算法是一种基于概率论的统计方法,它在机器学习领域中被广泛应用于分类问题。在这个场景中,我们讨论的是使用贝叶斯算法进行深度学习的手动画图识别。手写数字识别是一个经典的问题,例如在MNIST数据集中,...
在这个资料包中,我们主要关注的是手机中文评论数据集以及基于贝叶斯算法的中文评论分类。这是一个典型的自然语言处理(NLP)任务,旨在利用机器学习方法对文本进行情感分析或主题分类。以下是相关知识点的详细介绍...
在本资源中,我们探讨的是基于MATLAB实现的贝叶斯算法进行阈值图像分割的方法。贝叶斯算法是一种统计学方法,它利用先验概率和后验概率来做出决策,特别适用于处理不确定性问题。 1. **贝叶斯理论**:贝叶斯定理是...
朴素贝叶斯算法是一种基于概率理论的分类方法,它的核心思想是假设各个特征之间相互独立,并且假设每个特征对类别的出现概率都是已知的。在Python中,我们可以使用自底向上的方式实现朴素贝叶斯分类器。下面将详细...
朴素贝叶斯算法是一种基于概率统计的分类方法,它的理论基础是贝叶斯定理,而“朴素”一词则来源于对特征之间相互独立的假设。在Java中实现朴素贝叶斯分类器,我们可以利用其简单高效的特点,适用于文本分类、垃圾...
朴素贝叶斯算法是一种基于概率论的分类方法,它的理论基础是贝叶斯定理,因此得名“朴素贝叶斯”。在数据挖掘领域,朴素贝叶斯算法因其简单、高效而被广泛应用,尤其在文本分类、垃圾邮件过滤等领域表现出色。 首先...
《树型朴素贝叶斯算法在Java中的实现与数据挖掘》 朴素贝叶斯算法,作为统计学和机器学习领域中的一种基础分类方法,因其简单高效而被广泛应用。树型朴素贝叶斯算法是朴素贝叶斯算法的一种变体,它以决策树的形式...