贝叶斯过滤垃圾邮件算法的基本步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、贝叶斯过滤算法的基本步骤
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
由此可推出该邮件为非垃圾邮件
基于朴素贝叶斯分类器的文本分类算法(上)
本文缘起于最近在读的一本书-- Tom M.Mitchell的《机器学习》,书中第6章详细讲解了贝叶斯学习的理论知识,为了将其应用到实际中来,参考了网上许多资料,从而得此文。文章将分为两个部分,第一部分将介绍贝叶斯学习的相关理论(如果你对理论不感兴趣,请直接跳至第二部分<<基于朴素贝叶斯分类器的文本分类算法(下)>>)。第二部分讲如何将贝叶斯分类器应用到中文文本分类,随文附上示例代码。
Introduction
我们在《概率论和数理统计》这门课的第一章都学过贝叶斯公式和全概率公式,先来简单复习下:
条件概率
定义设A, B是两个事件,且P(A)>0 称P(B∣A)=P(AB)/P(A)为在条件A 下发生的条件事件B发生的条件概率。
乘法公式设P(A)>0 则有P(AB)=P(B∣A)P(A)
全概率公式和贝叶斯公式
定义设S为试验E的样本空间,B1, B2, …Bn为E的一组事件,若BiBj=Ф, i≠j, i, j=1, 2, …,n; B1∪B2∪…∪Bn=S则称B1, B2, …, Bn为样本空间的一个划分。
定理设试验E的样本空间为,A为E的事件,B1, B2, …,Bn为的一个划分,且P(Bi)>0 (i=1, 2, …n),则P(A)=P(A∣B1)P(B1)+P(A∣B2)+ …+P(A∣Bn)P (Bn)称为全概率公式。
定理设试验俄E的样本空间为S,A为E的事件,B1, B2, …,Bn为的一个划分,则
P(Bi∣A)=P(A∣Bi)P(Bi)/∑P(B|Aj)P(Aj)=P(B|Ai)P(Ai)/P(B)
称为贝叶斯公式。说明:i,j均为下标,求和均是1到n
下面我再举个简单的例子来说明下。
示例1