贝叶斯过滤算法
来源:互联网 发布:手机淘宝联盟使用教程 编辑:程序博客网 时间:2024/05/23 01:59
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 (ps:实际应用时应该不能出现0,否则一项
为零会影响全局)
由此可推出该邮件为非垃圾邮件- 贝叶斯算法--邮件过滤
- 贝叶斯过滤算法
- 贝叶斯过滤算法
- 垃圾邮件和贝叶斯过滤算法
- 垃圾邮件和贝叶斯过滤算法
- 垃圾邮件和贝叶斯过滤算法
- 贝叶斯邮件过滤算法理论
- 贝叶斯过滤算法的基本步骤
- 贝叶斯过滤垃圾邮件算法的基本步骤
- 贝叶斯过滤算法的基本步骤
- 贝叶斯过滤算法的基本步骤
- [机器学习]贝叶斯垃圾邮件过滤算法
- 推荐系统之贝叶斯过滤算法
- .NET脏字过滤算法
- .NET脏字过滤算法
- 协同过滤算法
- 敏感词过滤算法
- 协同过滤推荐算法
- 封装一个双色球选号码的方法
- 你不知道的js(中)之基本类型
- 回首16展望17
- 机器学习笔记(二)模型评估与选择
- android用eclips混淆打包
- 贝叶斯过滤算法
- 字符串操作
- 162. Find Peak Element**
- get请求有中文时候一次encodeURI无效的解决方法
- 随机森林 python
- ionic-移动端web的性能优化开源组件
- 解决IE浏览器不支持console,报错未定义问题
- Mysql语句集
- AndroidStudio更改包名及更改包名后R文件丢失无法生成