贝叶斯算法中,最后一步计算概率时,分子和分母极有可能是零怎么解决

问题描述

贝叶斯算法介绍一.贝叶斯过滤算法的基本步骤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)]这里分子中当有一个pi是0时分子为零,分母中当有一个pi为1有一个为0时,分母就为零,而且很容易出现啊,所以很不准确。跪求解决方法。。当P(A|t1,t2,t3……tn)超过预定阈值时,就可以判断邮件为垃圾邮件。二.贝叶斯过滤算法举例例如:一封含有“fa轮功”字样的垃圾邮件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(垃圾邮件|功)=1P(垃圾邮件|律)=0此时该邮件为垃圾邮件的可能性为:P=(0*1)/[0*1+(1-0)*(1-1)]=0由此可推出该邮件为非垃圾邮件

解决方案

解决方案二:
分子和分母都是0的结果就是NAN,说明你的词库还不够大不够全。
解决方案三:
引用楼主wangzhenhappy1的回复:

这里分子中当有一个pi是0时分子为零,分母中当有一个pi为1有一个为0时,分母就为零,而且很容易出现啊,所以很不准确。跪求解决方法。。

pi是0时,此时应该去掉该项pi。
解决方案四:
引用2楼sgcl的回复:

引用楼主wangzhenhappy1的回复:这里分子中当有一个pi是0时分子为零,分母中当有一个pi为1有一个为0时,分母就为零,而且很容易出现啊,所以很不准确。跪求解决方法。。pi是0时,此时应该去掉该项pi。

这样做是不对的完全允许pi为0说明词库中没有出现该词,你把它剔除了还不如把那个词抹掉呢
解决方案五:
谢谢大家的看法我的情况具体是:用一些垃圾邮件和合法邮件进行自学习,建立hashtable_probability,然后就可以对新来的一份邮件进行判断其是不是垃圾邮件。但是,对自学习中用到的垃圾邮件或者合法邮件进行测试,应该是百分之百的准确率。但是,分子和分母很容易为0,这也好理解,因为有可能一些词汇在自学习中的垃圾邮件和合法邮件集中都出现过。不知怎么解决

时间: 2024-10-02 16:32:34

贝叶斯算法中,最后一步计算概率时,分子和分母极有可能是零怎么解决的相关文章

朴素贝叶斯算法的python实现方法_python

本文实例讲述了朴素贝叶斯算法的python实现方法.分享给大家供大家参考.具体实现方法如下: 朴素贝叶斯算法优缺点 优点:在数据较少的情况下依然有效,可以处理多类别问题 缺点:对输入数据的准备方式敏感 适用数据类型:标称型数据 算法思想: 比如我们想判断一个邮件是不是垃圾邮件,那么我们知道的是这个邮件中的词的分布,那么我们还要知道:垃圾邮件中某些词的出现是多少,就可以利用贝叶斯定理得到. 朴素贝叶斯分类器中的一个假设是:每个特征同等重要 函数loadDataSet() 创建数据集,这里的数据集是

java weka 朴素贝叶斯算法 数据分类问题

问题描述 java weka 朴素贝叶斯算法 数据分类问题 现在有一个需求需要实现如下功能: 根据x,y,z的值得到状态,比如:0.5,0.1,0.2 状态是sit;0.6,0.1,0.2 状态是stand. 后来上网查到weka这个东西,因为我对算法确实不太了解,也没看懂,只能模仿. 我有一个训练样本,命名test1.arff,内容的一部分如下: @relation test1 @attribute x numeric @attribute y numeric @attribute z num

mahout 是否有基于内存模式的贝叶斯算法实现

问题描述 mahout 是否有基于内存模式的贝叶斯算法实现 数据量比较小,是否可以直接连数据库查询获取原始数据, mahout是否有这种实现 还是只能和hadoop连用

程序-基于朴素贝叶斯算法的java软件实现

问题描述 基于朴素贝叶斯算法的java软件实现 做一个exe的能够实现朴素贝叶斯算法的软件,求源程序,需要用到那些包可以标注下 解决方案 http://download.csdn.net/detail/walking56849/6972831http://blog.csdn.net/xceman1997/article/details/7955349

贝叶斯算法

2010-09-17 13:09 by T2噬菌体, 154746 阅读, 49 评论, 收藏, 编辑 0.写在前面的话       我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比的美感.而每次将学过的算法应用到实际中,并解决了实际问题后,那种快感更是我在其它地方体会不到的.       一直想写关于算法的博文,也曾写过零散的两篇,但也许是相比于工程性文章来说太小众,并没有引起大家的兴趣.最近面临毕业找工作,为了能给自己增加筹码,决定再次复习算法方面的知识,我决

朴素贝叶斯算法

我们来约定一下: S: 邮件为垃圾邮件的概率 V: 邮件含有'viagra'词的概率 贝叶斯会告诉我们已知这个邮件含有viagra词,判断为垃圾邮件的概率: 假设垃圾邮件和非垃圾邮件的概率都是0.5,即: 则通过上面的公式得到: 假设50%的垃圾邮件中有'vargra',只有1%的非垃圾邮件中含有这个单词,问这个邮件是垃圾邮件的概率: 可见,含有这个单词一般都是垃圾邮件. 更加精致的邮件分类器 想象一下我们有一堆字母,,我们使用Xi表示一封信中含有此词的概率.同样,表示垃圾邮件中含有单词的概率,

intel-hadoop/HiBench流程分析----以贝叶斯算法为例

1.HiBench算法简介 Hibench 包含9个典型的hadoop负载(micro benchmarks,hdfs benchmarks,web search bench marks,machine learning benchmarks和data analytics benchmarks) 具体参考CDH集群安装&测试总结:第三节内容 micro benchmarks Sort:使用hadoop randomtextwriter生成数据,并对数据进行排序. Wordcount:统计输入数据

Andrew Ng机器学习公开课笔记 -- 朴素贝叶斯算法

网易公开课,第5,6课  notes,http://cs229.stanford.edu/notes/cs229-notes2.pdf 前面讨论了高斯判别分析,是一种生成学习算法,其中x是连续值  这里要介绍第二种生成学习算法,Naive Bayes算法,其中x是离散值的向量  这种算法常用于文本分类,比如分类垃圾邮件 首先,如何表示一个文本,即x?   以上面这种向量来表示,字典中的词是否在该文本中出现  其中每个词,可以看作是一个特征,对于特征的选取,可以过滤到stop word,或只选取出

从贝叶斯方法谈到贝叶斯网络

从贝叶斯方法谈到贝叶斯网络 0 引言     事实上,介绍贝叶斯定理.贝叶斯方法.贝叶斯推断的资料.书籍不少,比如<数理统计学简史>,以及<统计决策论及贝叶斯分析 James O.Berger著>等等,然介绍贝叶斯网络的中文资料则非常少,中文书籍总共也没几本,有的多是英文资料,但初学者一上来就扔给他一堆英文论文,因无基础和语言的障碍而读得异常吃力导致无法继续读下去则是非常可惜的(当然,有了一定的基础后,便可阅读更多的英文资料).     11月9日上午,机器学习班第9次课,邹博讲贝