针对海量短信文本的挖掘过滤需要很大的存储空间以及更强的计算能力,提出一种基于MapReduce的朴素贝叶斯的垃圾短信过滤方法;基于改进的朴素贝叶斯垃圾短信分类算法,利用MapReduce模型并行化对海量数据处理的优势进行短信文本的训练和测试。实验表明:利用计算集群实现海量垃圾短信过滤在召回率、查准率方面有所提高,垃圾短信过滤效率随着集群规模的扩增而提升较快。 The massive text mining filter requires a lot of storage space and stronger computing ability, so a spam message filtering method of MapReduce-based Bayesian is proposed. Based on the improved Naive Bayesian spam SMS classification algorithm, taking the advantage of MapReduce model pa-rallelization on massive data processing is used to train and test SMS text. Results show that using compute cluster to achieve massive spam filtering can improve the efficiency of recalling and pre-cision, and with the expansion of cluster size spam SMS filtering efficiency improve faster.
赵彩迪,朱有产,符佳慧
华北电力大学,河北 保定
收稿日期:2016年7月8日;录用日期:2016年7月26日;发布日期:2016年7月29日
针对海量短信文本的挖掘过滤需要很大的存储空间以及更强的计算能力,提出一种基于MapReduce的朴素贝叶斯的垃圾短信过滤方法;基于改进的朴素贝叶斯垃圾短信分类算法,利用MapReduce模型并行化对海量数据处理的优势进行短信文本的训练和测试。实验表明:利用计算集群实现海量垃圾短信过滤在召回率、查准率方面有所提高,垃圾短信过滤效率随着集群规模的扩增而提升较快。
关键词 :垃圾短信,短信过滤,朴素贝叶斯,MapReduce
由于手机普及率的提高和短信通信费的低廉,垃圾短信已经严重侵扰到了手机用户的正常生活,诈骗短信更是使不少用户蒙受损失。《2015上半年中国移动互联网安全报告》显示,全国垃圾短信数量高达199亿条。所以为广大用户建立起来一个可靠、准确、高效、智能的短信过滤平台,对手机短信实施有效的管制,具有重要的意义和价值。
当前垃圾短信过滤技术主要分为基于关键词和基于短信内容的过滤。前者要求只要短信中包括的敏感词汇超过一定数目就被认定为垃圾短信,该方法简单但是误判率比较高;一种是基于短信内容的过滤,通过机器学习的方法把短信自动分为正常短信和垃圾短信。通过对基于机器学习的短信文本自动分类 [
MapReduce模型 [
(1) 在Map 阶段,MapReduce模型接受键值对 作为数据输入,经过映射,聚合所有具有相同的 key 值的中间结果的value值,产生一组键值对 形式的中间结果。
(2) 在Reduce 阶段,以Map的中间结果作为Reduce函数的输入,把具有相同Key值的中间结果进行汇总处理,输出最终结果 。
整个Map/Reduce框架下处理海量数据的流程图如图1所示。
除了分类算法,特征提取很大程度上影响文本分类效果。特征提取 [
图1. MapRedeuce处理海量数据流程图
作为特征提取的标准 [
基于TF-IDF作为特征提取的标准 [
其中,
由于分类算法中SVM算法复杂程度过高,不适用于大规模的文本,本文采用经典文本分类算法朴素贝叶斯算法 [
(1) 将短信文本表示为特征向量
(2) 定义短信类别
在上面公式中
(3) 假设短信文本之间不存在依赖关系,即样本的特征向量之间是独立的,计算
最后计算出
(4) 当有一个未知类别的短信样本T,贝叶斯分类法预测T属于具有最高后验概率的类
(5) 当利用朴素贝叶斯分类器对短信进行分类时,易产生分类错误,通常用户可以接受将垃圾短信判定为合法短信,但是不能接受将合法短信被误判为垃圾短信。设定一个阈值R对朴素贝叶斯方法进行改进,令
垃圾短信过滤分类器的设计由训练过滤部分和过滤部分组成 [
根据算法流程图,将训练模块和过滤模块共有的短信文本预处理部分抽离出来,独立成预处理模块,提高代码的重用效率,将预处理部分抽离出来。基于预处理部分耗费大量的时间和计算资源,本文对预处理部分进行Mapreduce并行化改进,预处理部分MapReduce模型如表1。
图2. 朴素贝叶斯垃圾短信文本分类流程图
MapReduce | 功能 | 对需要预处理短信文本内容进行分词等处理 |
---|---|---|
输入 | 需要预处理短信文本内容 | |
输出 | 预处理后的邮件特征向量的词汇总数及每个词汇向量的频率 |
表1. 预处理模块MapReduce模型
目前挖掘分类技术 [
步骤一:文本的分布式预处理
将待处理短信文本存储在分布式文件系统HDFS的不同DataNode中,本文选择适合文本分类的方法Sequence File,将每个短信小文本按类别归并为大文件以键值对的形式存储,每个文本占据一行,添加一个全局标号fileId。之后采用中科院的ICTCLAS分词系统,对文本进行分词,去除停用词、词频统计,最中生成排序引文件。
步骤二:文本的分布式特征选择
利用MapReduce对特征选择过程进行分布式并行设计,本文采用基于词项多种因子的特征次选择算法,将词项的TF-IDF、词性与词长因子构造综合评估函数,以此来选择代表意义较强、分类性较好的特征项进行文本表示,组合成新的文本向量。如此所抽取出的特征词较不加任何因素的TF-IDF方法更能准确地表征文本内容,同时也克服TF-IDF等算法无法解决的高频但无实际含义词项的误判问题,提高了文本特征词选取的准确率。
步骤三:贝叶斯短信文本过滤模型的分布式并行训练
通过对朴素贝叶斯算法和并行策略的分析,在Hadoop平台上设计了基于朴素贝叶斯算法的短信训练模型,构件朴素贝叶斯分类器。
通过分类器对短信文本测试过程采用两轮MapReduce的方法,流程图如图3所示。
第一轮MapReduce对短信进行分词和去除噪声。每个Map函数接收一个短信数据块,输入键值对: ,经过分词处理,输出中间结果 。每个Reduce函数接受Map的输出结果,合并具有相同Key的value 值,得到各词条的数量统计以及计算得各词条的概率,输出结果为< key(类别|词条),value(“合法概率|垃圾概率”)>键值对,从而产生相应分词的词条计数结果文件,供第二轮MapReduce使用。
第二轮MapReduce计算概率比较大小。Map阶段是对输入键值对< key(类别|词条),value(词频)>的格式转换,通过拆分输入信息Key得到短信的标识,将一条短信的各个分词集中一块,并以此做输出的Key。Reduce阶段运算相应的结果,输出格式为 ,如果Value 值为T则表示是合法短信,否则为垃圾短信。
在实验室局域网环境下搭建了包含5个节点的云集群,各主机的机器名及分配的IP地址如表2所示。
图3. 分类器短信文本测试流程
功能 | 机器名 | IP地址 | Tag标记 |
---|---|---|---|
Namenode (jobtracker) | hadoop.master | 202.206.219.60 | A |
Datanode (tasktracker) | hadoop.slave61 | 202.206.219.61 | B |
Datanode (tasktracker) | hadoop.slave62 | 202.206.219.62 | B |
Datanode (tasktracker) | hadoop.slave63 | 202.206.219.63 | B |
Datanode (tasktracker) | hadoop.slave64 | 202.206.219.64 | B |
表2. 云集群主机机器名及IP地址分配表
本课题实验数据采用中国移动通信研究院所提供的人工标注的数据,其中训练集包含样本短信30000 条,测试集包含短信30,000条。实验在两种环境下进行性能测试。实验A是在普通的PC单机上基于传统的朴素贝叶斯短信过滤算法进行短信学习和分类;实验B是在Hadoop集群(单节点)上基于MapReduce的朴素贝叶斯短信过滤算法进行短信学习和分类。
本课题采用查准率(Precision),召回率(Recall),加速比(Speed-up Ratio)作为对垃圾短信过滤器性能的评价指标。
查准率 P(Precision):经分类器判断,被判为垃圾短信的所有短信中确实是垃圾短信的比例,反映过滤器辨识垃圾短信的能力。
召回率 R(Recall):实际情况中所有属于垃圾短信的文本,经分类器判断,识别出的垃圾短信占实际垃圾短信总数的比例,反应过滤器的过滤能力。
加速比(Speed-up Ratio):系统执行同一个任务,在系统改进前后所用时间的比例,反映系统执行效率的高低。
(1) 基于MapReduce的贝叶斯短信过虑算法与传统的朴素贝叶斯短信过滤算法的实验结果如下表3所示,在查准率和召回率上实验性能对比如下表4所示。
由表4的实验数据对比可以发现,基于MapReduce的改进的贝叶斯短信过滤算法与传统的朴素贝叶斯短信过滤算法在查准率和召回率上有所提高。
(2) 测试基于MapReduce的贝叶斯短信过滤算法与传统的朴素贝叶斯短信过滤算法的加速比数据如表5,加速比性能对比如下图4。
图4. 不同节点下加速比线性图
实验组别 | 邮件类型 | 判为合法短信 | 判为垃圾短信 |
---|---|---|---|
实验A | 合法短信 | 7959 | 1781 |
垃圾短信 | 2678 | 17582 | |
实验B | 合法短信 | 8471 | 1269 |
垃圾短信 | 1589 | 18671 |
表3. 实验结果
实验组别 | 查准率/% | 召回率/% |
---|---|---|
实验A | 86.78 | 90.80 |
实验B | 92.15 | 93.63 |
表4. 实验性能对比
节点个数 | 单机 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
时间(s) | 138.1 | 159 | 119.7 | 97.6 | 75.3 |
加速比 | 0.86 | 1.15 | 1.41 | 1.83 |
表5. 单机以及不同节点时加速比
分析得知:
(1) 在一个节点的情况下,由于从节点本身的TaskTracker和DataNode等的运行开销,加速比小于1,反而不如单机程序效率高。
(2) 当大于一个节点时,随着节点树目增加,加速比随之增加,各阶段的加速比越来越大,说明各个阶段的MapReduce过程得到了分布式并行运行,作业的并发程度高,运行效率高。
经过软硬件平台的搭建和实验分析,本文提出的基于MapReduce朴素贝叶斯垃圾短信过滤方案,一方面对特征选择和朴素贝叶斯算法进行改进,提高了垃圾短信过滤的召回率和查准率;另一方面引入MapReduce模型,对分类过程进行并行化处理,提高短信文本学习和分类的过程。同时垃圾短信过滤的处理对其它的微博、留言等其它短文本的过滤具有借鉴意义。
赵彩迪,朱有产,符佳慧. 基于MapReduce的朴素贝叶斯垃圾短信过滤研究 Research on Naive Bayesian Spam SMS Filtering Based on MapReduce[J]. 计算机科学与应用, 2016, 06(07): 443-450. http://dx.doi.org/10.12677/CSA.2016.67054
http://dx.doi.org/10.1145/1327452.1327492