项目 - 垃圾邮件过滤

重点: 在项目的过程中,核心关注的应该是整个项目分析的流程,然后才是关注代码的实现。

分析:垃圾邮件过滤,显然是一个二分类的问题。而且对于原始数据,我们需要人为得给垃圾邮件打上标签。

PS: 很多时候当公司开展了一个新的业务方向时,我们想处理的目标没有明确的标签。所以日常工作中,会有两周到三周的时间,在分析数据和打标签中度过。

https://pan.baidu.com/s/1fzS4gWr2MjJlYpGFIJlu_g
2qfj


一、研究综述

随着互联网的蓬勃发展,电子邮件已经成为互联网上最普遍的通讯方式之一;据最新调查显示,2017Q3季度中国是世界最大垃圾邮件产生国和第二大受恶意邮件袭击的国家。垃圾邮件的内容主要包括欺诈邮件、新闻议程、钓鱼攻击邮件、站点宣传邮件、病毒邮件等等。

2017垃圾邮件来源分布情
2017垃圾邮件_遭恶意邮件袭击国家情况图
2017垃圾邮件_网络钓鱼全球分布

1、垃圾邮件的影响

垃圾邮件主要影响的因素如下:
1、占用网络带宽,造成邮件服务器拥塞,进而降低整个网络的运行效率。
2、骗取钱财,传播色情内容等。
3、携带病毒程序,可能导致接收邮件的机器/服务器感染病毒。

2、垃圾邮件过滤技术方案

正确的识别垃圾邮件的技术难度比较大,常用的垃圾邮件过滤方式有:关键词法、校验码法、主题/源Email地址/IP地址/附件审计、白名单/黑名单机制、贝叶斯算法过滤等;

其中贝叶斯算法过滤垃圾邮件是一种基于统计学的过滤器,是建立在已有的统计结果之上的,所以贝叶斯算法过滤垃圾邮件模型属于一种有监督的分类算法。基于贝叶斯算法的过滤垃圾邮件也属于一种比较常用的算法模型。

贝叶斯算法

贝叶斯算法对应垃圾邮件项目中的参数:

Bi:先验条件。某个词项属于垃圾邮件还是正常邮件。

A:整片文章中的所有词项

P(Bi|A) 给定一篇邮件,邮件属于正常邮件的概率是多少,邮件属于垃圾邮件的概率是多少。

P(Bi):先验概率。垃圾邮件的先验比例。

P(A|Bi) :似然概率。基于正常情况的词项,产生一个邮件的概率。

分母是常数,不用管。


二、算法

1、整体思路

1.1、任务:监督学习还是无监督学习?二分类还是多分类?文本分类还是结构化数据分类?短文本分类还是长文本分类?

1.2、数据:样本如何定义?什么样的数据作为特征?如果划分训练集和测试集?

1.3、特征:如何从原始数据中提取机器学习模型适用的特征?

1.4、模型:选择合适的模型;根据具体的任务优化模型;模型调优;多模型融合。

总体思路

2、邮件数据格式分析

属性 描述
发件人 发送邮件的邮箱号码
收件人 接受邮件的邮箱号码
邮件发送时间 发送邮件的时间点
邮件内容 邮件具体内容

邮件格式

三、分析与设计

1、任务分析

任务分析

2、模型选择分析

模型选择

3、垃圾邮件过滤技术方案

4、数据清洗

从原始数据中,将邮件数据转换称为结构化类型的数据,并且去掉其它不需要的字段信息,只需要保留发件人、收件人、发送时间、邮件内容这四部分的内容,对于这四个字段信息,如果这四个字段为空,那么将为空的属性设置为unknown。

5、特征工程

5.1、发件人和收件人邮箱服务器提取,如果没有发件人或者收件人的邮件地址的,直接将该字段的值设置为unknown。

5.2、通过对服务器地址字段的分析,可以得出在最终的算法模型中,该特征属性不需要使用的结论。

5.3、邮件发送时间提取,主要提取出来星期、小时、时间段(上午&下午&晚上&凌晨)等时间的表示字段信息。

5.4、通过对时间提取字段信息的分析,可以得到时间对于垃圾邮件的分类,作用不大,在后续的模型训练中可以不考虑该字段特征属性。同时从数据上我们也可以看出如果一个邮件没有发送时间,那么一定属于垃圾邮件,所以可以在最终模型中加入这个特征属性。

5.5、中文分词。利用开源的分词工具jeba分词处理。

5.6、信息量特征

正常邮件的内容长度一般都在一定范围内,即不会太长也不会太短;但是一般情况下,邮件的内容越短,那么该邮件就越有可能是垃圾邮件。

信号量:值越大,就越有可能是属于垃圾邮件。

x表示文本长度
• L1和L2为调节因子,在该项目中,分别设置为500和10000。
• B1和B2为信息量平滑因子,在该项目中,全部设置为1。

6、模型效果评估

在进行垃圾邮件过滤的时候,即需要注意垃圾邮件的拦截率(召回率),也需要注意正常邮件被当成垃圾邮件的错判率(精确率), 在当前项目中,我们主要考虑召回率这个指标。

7、模型选择

分别选择KNN、SVM、Bayes、DecisionTree、RandomForest、GBDT这几种算法,并比较各种不同算法的效果。


四、总结

1、垃圾邮件过滤一般常用的基础算法有Bayes、KNN、LR等。一般最常用的算法选择Bayes算法。

2、垃圾邮件过滤系统中一般采用算法过滤+其它过滤统计结合的方式来进行垃圾邮件过滤。

3、在垃圾邮件过滤中主要是需要进行分词操作,中文邮件一般可以选择使用jieba(python)、ANSJ(java)等工具进行分词处理。

4、在垃圾邮件过滤中一般注意召回率,也就是说一般情况下,需要尽可能的提高垃圾邮件过滤的成功率。

五、展望

1、修改jieba分词部分的实现逻辑,添加自定义分词词典。

2、所有代码整理,封装成为class或者API的形式。

3、基于上课所将的特征工程提取出来的全部特征信息,使用SVM、GBDT、随机森林、KNN等分类算法,查看一下效果;最终使用GridSearchCV对任意一个模型进行模型参数优化的过程。

4、使用保存好的模型对完整的原始邮件数据做一个判断/预测。(代码)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359