APP下载

基于Scikit-Learn的垃圾短信过滤方法实证研究

2016-12-20李建国葛方振

关键词:朴素贝叶斯分类器

杨 忆,李建国,葛方振

(1.淮北师范大学 计算机科学与技术学院,安徽 淮北 235000;2.河海大学 计算机与信息学院,江苏 南京 211100)

基于Scikit-Learn的垃圾短信过滤方法实证研究

杨 忆1,2,李建国1,葛方振1

(1.淮北师范大学 计算机科学与技术学院,安徽 淮北 235000;2.河海大学 计算机与信息学院,江苏 南京 211100)

文章为有效应对垃圾短信,在短信数据集“SMS Spam Collection”上,以Scikit-Learn为工具,通过实验对比验证,结果表明,在比较的7种垃圾短信过滤统计学习方法中,朴素贝叶斯和支持向量机方法在判别准确率方面明显优于其他方法,这2种方法可以作为其他方法用以比较的基准测试方法.

垃圾短信;Scikit-Learn;分类;朴素贝叶斯法;支持向量机

0 引言

在移动手机高度普及的今天,垃圾短信泛滥成灾.手机用户的短信箱被五花八门的垃圾短信充斥着.据百度手机卫士《2015上半年中国移动互联网安全报告》显示,截至2015年6月,全国垃圾短信的总量为 199亿条,每月人均接收垃圾短信7条.不得不说垃圾短信已经严重侵扰到了手机用户的正常生活.因此垃圾短信的过滤成为当前人们生活急需解决的一个重要任务,垃圾短信智能过滤技术的研究具有重要的意义.

治理垃圾短信的方案层出不穷,技术也在日益革新.目前主要应用于过滤垃圾短信的2种技术分别是黑白名单和统计文本分类[1].黑白名单技术即用户可以将手机号码放入黑名单和白名单中.当用户收到的短信息来自于黑名单中的手机号码,应用程序会自动将这些短信息放入垃圾短信文件夹.该方法简单易用,但缺乏智能性,当发送者采用动态号码或者号码欺骗(Phishing)等方式发送短信,该方法将无法正确过滤.统计文本分类技术是基于短信内容的过滤方法.目前成熟的统计文本分类方法有决策树法、K近邻法、朴素贝叶斯法、支持向量机等方法.这些方法都可以用于垃圾短信检测与过滤.

鉴于统计文本分类方法在垃圾短信的过滤方面的成熟和有效性,本文主要通过使用开源机器学习工具Scikit-Learn对目前常用的几种统计文本分类方法在垃圾短信过滤方面的性能进行实验对比研究.

1 Scikit-Learn介绍

Scikit-Learn是基于python的机器学习模块,基于BSD开源许可证.它是一款简单有效的数据挖掘和数据分析工具[2].Scikit-Learn的基本功能主要被分为6个部分:分类、回归、聚类、数据降维、模型选择、数据预处理,软件包的下载官方网站:http://scikit-learn.org/stable/.Scikit-Learn中的机器学习模型非常丰富,包括支持向量机、决策树、朴素贝叶斯、K近邻等,可以根据问题的类型选择合适的模型.对于具体的机器学习问题,通常可以分为3个步骤:数据准备与预处理、模型选择与训练、模型验证与参数调优,每个步骤只需调用Scikit-Learn中封装好的API函数.以罗斯谛回归(Logistic Regression)分类器进行垃圾短信分类过滤为例.

步骤1:加载短信数据集,并进行IF-IDF特征向量化数据预处理的代码如下:

步骤2:模型选择与训练的代码如下:

步骤3:模型验证与参数调优.以使用Scikit-Learn中提供的GridSearch机制进行参数调优,代码如下:

2 数据集

用以垃圾短信分类检测过滤试验公开的数据集很少,大多数是由作者自己采集构造.本文实验采用文献[3]中的数据集,该数据集下载地址http://www.dt.fee.unicamp.br/~tiago/smsspamcollection/.数据集中样本只包含短信息(message)和短信所属类别标签(label)2个属性.数据集中短信共5 574条,其中垃圾短信(spam)474条,正常短信(ham)4 827条.数据集中前5个样本如表1所示.

表1 SMS Spam Collection数据集中样本示例

3 实验验证与分析

3.1 评价指标度量

设测试集合中共有N条短信,为方便叙述,先定义A、B、C、D 4个变量.A表示为数据集中短信息的标签为垃圾短信(spam),同时分类器判定其为垃圾短信(spam)的短信数,B表示为数据集中短信息的标签为正常短信(ham),同时分类器判定其为垃圾短信(spam)的短信数,C表示为数据集中短信息的标签为垃圾短信(spam),同时分类器判定其为正常短信(ham)的短信数,D表示为数据集中短信息的标签为正常短信(ham),同时分类器判定其为正常短信(ham)的短信数.具体如表2所示,且N=A+B+C+D.

表2 样本实际与判定结果4种情况

根据表2,定义如下4个评价指标:

1)精确率(Accuracy):Accuracy=(A+D)/N*100%,即对所有短信的判对率.

2)正确率(Precision):Precision=A(/A+B)*100%,即垃圾短信检对率.正确率反应了分类系统“找对”垃圾短信的能力,正确率越大,将非垃圾短信误判为垃圾短信的数量越少.

3)召回率(Recall):Recall=A(/A+C)*100%,即垃圾短信检出率.这个指标反映了分类器发现垃圾短信的能力,召回率越高,“漏网”的垃圾短信就越少.

4)F1值:F1=2*Precision*Recall(/Precision+Recall)*100%.

3.2 实验结果与分析

使用Scikit-Learn加载数据集后,特征选取采用IF-IDF方法计算,对常用的7种统计学分类方法[4]:罗斯谛回归(Logistic Regression,简称LR)、朴素贝叶斯(Naïve Bayes,简称NB)、K近邻(K-Nearst Neigh⁃bour,简称KNN)、随机森林(Radom Forest,简称RF)、决策树(Decision Tree,简称DT)、梯度提升决策树(Gradient Boosting Decision Tree,简称GBDT)、支持向量机(Support Vector Machine,简称SVM)进行实验比较.每次选取75%的样本作为训练集,25%的样本作为测试集,采用“5次交叉验证”,结果取平均值,7种统计方法实验结果如表3所示.在表3中给出了每种统计学分类方法在精确率、正确率、召回率和F1值4个方面的实验结果.

根据表3,经分析得出如下结论:

(1)朴素贝叶斯与SVM在检测的精确率方面分别达到98.4%和98.3%,高于其他几种分类方法.

(2)Recall的值朴素贝叶斯方法最高,达到93.74%.即朴素贝叶斯使得垃圾短信“漏网”的几率减少.

(3)Precision最高的K近邻和随机森林高达100%,表明二者把非垃圾短信误判为垃圾短信的数量大大减少.识别正常短信的能力因为数据集样本分布不平衡,导致更倾向于把正常的短信分到ham类.

综上所述,在实验比较的几种统计分类方法中,朴素贝叶斯更适用于被实际垃圾短信检测过滤系统采用.

4 结语

实验过程中发现,虽然SVM精确率较高,但训练分类器花费的时间太长,若能采用并行技术以减少SVM训练的时间,SVM也不失为一种有效的垃圾短信过滤方法.本文短信的形式仅为纯文本形式,随着大量以文本、图片、音频为载体的彩信得到广泛的普及,如何高效准确识别和过滤垃圾彩信将是今后研究的重要课题.

[1]TUFIQ M,ABDULLAH M F A.A survey of preventing,blocking and filtering short message services(SMS)spam[C]// Proc of International Conference on Computer and Electrical Engineering,IACSIT,2010(1):462-466.

[2]PEDROGOSA F,VAROQUAUX G.Scikit-learn:machine learning in python[J].JMLR,2011(12):2825-2830.

[3]ALMEIDA T A,GÓMEZ HIDALGO J M.Contributions to the study of SMS spam filtering:new collection and results[C]// Proceedings of the 2011 ACM Symposium on Document Engineering(DOCENG′11),Mountain View,CA,USA,2011.

[4]李航.统计学习方法[M].北京:清华大学出版社,2012:48-97.

An Empirical Study on Spam Messages Detection Method Based on Scikit-Learn

YANG Yi1,2,LI Jianguo1,GE Fangzhen1
(1.School of Computer Science and Technology,Huaibei Normal University,235000,Huaibei,Anhui,China;2.School of Computer and Information,Hehai University,211100,Nanjing,Jiangsu,China)

In order to effectively deal with spam messages,this paper is verified by experiment in the SMS da⁃taset“SMS spam collection”.It is found that in the experimental comparison of seven kinds of spam filtering statistical method,naive Bayesian and support vector machine in the discriminant accuracy was significantly better than the other methods.These two methods can be used as a benchmark test(baseline)method for the other methods.

spam messages;Scikit-learn;classification;naïve Bayes;support vector machine

TP 3-0

A

2095-0691(2016)04-0039-03

2016-03-01

安徽省高校自然科学重点项目(KJ2015A315,KJ2013A229);安徽省自然科学基金项目(1408085MF130);淮北师范大学青年科研项目(2013xqz06)

杨 忆(1980- ),男,安徽凤阳人,博士生,讲师,研究方向:网络与信息安全,机器学习.

猜你喜欢

朴素贝叶斯分类器
隔离朴素
基于贝叶斯解释回应被告人讲述的故事
朴素的安慰(组诗)
他是那样“笨拙”和朴素——30多年后,我们为什么还需要读路遥?
最神奇最朴素的两本书
基于差异性测度的遥感自适应分类器选择
基于实例的强分类器快速集成方法
基于贝叶斯估计的轨道占用识别方法
基于互信息的贝叶斯网络结构学习
基于层次化分类器的遥感图像飞机目标检测