美文网首页
项目 - 垃圾邮件过滤

项目 - 垃圾邮件过滤

作者: 白尔摩斯 | 来源:发表于2019-01-05 14:48 被阅读245次

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

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

    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、使用保存好的模型对完整的原始邮件数据做一个判断/预测。(代码)

    相关文章

      网友评论

          本文标题:项目 - 垃圾邮件过滤

          本文链接:https://www.haomeiwen.com/subject/acgrrqtx.html