垃圾邮件分类算法的研究与分析西北工业大学计算机学院陕西西安710129(SchoolofComputer,NorthwesternPolytechnicUniversityXi’an710129China)摘要:随着互联网的高速发展,电子邮件已经成为人们信息获取和信息交流的一个重要的渠道。与此同时垃圾邮件也成为互联网上的一个日益严重的安全问题,引起了越来越多的社会大众和研究人员的重视和关注。为了有效的分辨垃圾邮件,本文通过对训练数据进行相应的预处理及特征提取,分别使用朴素贝叶斯、C4.5决策树、支持向量机三种方法来对垃圾邮件进行分类,通过测试结果,比对各个分类算法的优劣,并进行了详细的分析。关键词:垃圾邮件朴素贝叶斯C4.5决策树支持向量机Abstract:WiththerapiddevelopmentoftheInternet,e-mailplaysanimportantrolesinpeople'sinformationaccessandinformationexchange.Atthesametime,spamhasbecomeanincreasinglyserioussecurityproblemontheInternet,causingmoreandmoreattentionofthecommunityandresearchers.Inordertoeffectivelydistinguishthespam,thispaperPre-processingsandextractsfeatureofthetrainingdata,andusestheNaiveBayes,C4.5DecisionTreeandSVMtoclassifythespam,Throughthetestresults,compareandanalysistheadvantagesanddisadvantagesofeachclassificationalgorithm.Keywords:spamNaiveBayesC4.5DecisionTreeSVM1引言Internet的问世带来了电子邮件业务的出现,网络技术的飞速发展促进了邮件服务的广泛普及及繁荣,电子邮件已经成为生活在信息时代的人们日常生活一个重要部分。电子邮件不仅是一个信息交流的重要渠道,而且也是人们信息获取的重要途径之一。随着互联网的普及,不仅人们的日常事务可以通过电子邮件来进行处理,而且越来越多正式和重要的信息也通过电子邮件来进行传达和交流。随着电子邮件越来越普及和重要性的持续增长,一些商家和不法分子开始利用垃圾邮件这种方式来进行广告信息的传播和用户消费行为信息的获取。根据无线服务机构WirelessServicesCorporation公司提供的一份最新调查显示,目前美国移动通信市场上所有的电子邮件服务当中,43%的都是垃圾信息,而年前垃圾邮件在电子邮件中的比例为18%。而在国内,据有关部门统计,国内的电子邮件用户,平均每天发送的短信数量超过了3亿条。邮件甚至被称为继报纸、广播、电视、网络之后的第五媒体。不过在数量庞大的电子邮件背后,垃圾邮件的问题也愈加严重。垃圾邮件可以说是因特网带给人类最具争议性的副产品之一,它的泛滥已经使整个因特网不堪重负,人们不得不花费大量时间来对付邮箱里的垃圾邮件。在这样的情势下,制定切实可行的反垃圾邮件方案无疑是Internet的一个重要课题,而对于反垃圾邮件技术的研究也称为一个新的热点领域。本文根据现有邮件分类的知识,结合训练数据集的特点,选择合适的分类算法,来实现对垃圾邮件的分类。2相关工作本文垃圾邮件的分类工作主要包括以下三个部分:文本数据预处理,数据集特征选择,分类算法的应用及结果分析。2.1文本数据预处理根据提供的训练数据集及测试数据集,编写程序,提取数据集中所有单词及对应的频率,并更改数据格式,以矩阵的形式存储。初步处理过后的训练数据集Pre-train1.csv第一行表示数据集中出现的所有单词、字母和数字属性共1000个,第2-9001行代表之前的9000条邮件训练数据集,对应第一行的单词,存储了每个单词出现的频率。Pre-train1.csv最后一列添加了label标签,表明每一条数据的属性,ham或spam。在Pre-train1.csv的基础上,我们开始对数据集中的属性进行筛选,去掉统计出来的单个字母,纯数字,以及无意义词汇属性143条,得到最终的数据集Pre-train2.csv共包含857个可靠单词属性,如图1所示,基于Pre-train2.csv数据集,我们进行后续的特征提取。图1数据集格式2.2特征提取2.2.1熵与信息增益熵是信息理论中一个非常重要的概念,表示任何一种能量在空间中分布的均匀程度,能量分布越均匀,越不确定,熵就越大。Shannon将熵应有于信息处理,提出了“信息熵”的概念。信息熵是信息的量化度量,是衡量一个随机变量取值的不确定性程度令X为随机变量,如果X随机变量的变化越多,通过它获取的信息量就越大,X的信息熵定义为:))(lb()()(iiixpxpXH(2-1)通过观察随机变量Y获得的关于随机变量X的信息熵定义为:))|(lb()|()()Y|(jiiiijiyxpyxpypXH(2-2)信息增益是信息熵的差,表示在消除不确定性后获得的信息量,定义为:)|()()Y,(IGYXHXHX(2-3)信息增益是信息论中的一个重要概念,被广泛应用在机器学习领域。对分类系统来说,计算信息增益是针对一个一个的特征项而言的,它通过统计某一个特征项t在类别C中出现与否的文档数来计算特征项t对类别C的信息增益[1],定义为考虑出现前后的信息熵之差,某个特征项的信息增益值越大,表示其贡献越大,对分类也越重要。因此,在进行特征选择时,通常选取信息增益值大的若干个单词构造文本的特征向量。本文中,训练数据集中有857个属性,全部参与训练效率过低,因此需要提取出有代表性的词汇,故选用信息增益的方式来从数据集中提取特征。将处理过后的训练数据集导入到WEKA软件中,并在预处理阶段使用AttributeSelection界面中InfoGainAttributeEval来进行信息增益特征提取,同时,将提取出来的特征属性按信息增益由高到低进行排列,结果如图2所示:图2信息增益特征提取结果根据特征提取结果,选择信息增益排列前400的单词作为最终的训练集,并生成Pre-train(3).arff数据集文件。3算法实验与分析实验部分采用自主程序设计和WEKA数据挖掘工具相结合的方法,利用经过预处理的训练集,编写MATLAB程序进行垃圾邮件分类,同时,利用WEKA软件中提供的多种常用的分类算法,进行实验。最后对各种分类方法的优劣进行总结。3.1朴素贝叶斯算法朴素贝叶斯分类器[2]是一种有监督的学习方法,其假设属性的值对给定类的影响而独立于其他属性值。用贝叶斯网表达朴素贝叶斯的分类器如图3所示。图3朴素贝叶斯网朴素贝叶斯后验概率[3]的计算公式如式(3-1)(|)()(|)()kkkPXxCcPCcPCcXxPXx(3-1)其中X表示单词序列,C表示分类。其中(|)kPXxCc的计算公式如式(3-2)(|)(|)kiikiPXxCcPXxCc(3-2)则分类结果C的选择方式为式(3-3)((|))argmaxiiCPCcXx(3-3)实验部分使用两种方法来实现贝叶斯分类算法,分别是MATLAB编写程序和WEKA平台提供的NaiveBayes算法。MATLAB程序中,根据朴素贝叶斯公式,使用经过预处理的4000条数据作为训练集,实验结果如表1所示:表1基于MATLAB的朴素贝叶斯实验结果训练数量/条训练属性条错误率40001500.0970在WEKA件中,使用9000条数据,400条属性作为训练集,在Classify条目下选择NaiveBayes分类算法,并选择Suppliedtestset作为训练模型评价方法,实验结果如表2所示:表2基于weka平台的朴素贝叶斯分类算法实验结果hamspamtotalham16951420spam61519580total23057010003.2C4.5决策算法C4.5算法是目前最具影响的决策树算法,已广泛应用于数据分类领域,C4.5算法是在ID3算法的基础上改进过来的,不仅可以处理离散型描述属性,还可以处理连续性属性。C4.5算法采用信息增益率作为选择分枝属性的标准,弥补了ID3算法在使用信息增益选择分枝属性时偏向于取值较多的属性的缺陷。作为ID3算法的改进算法,C4.5算法克服了ID3算法的两大缺点:(1)ID3算法使用信息增益作为评价标准来选择根节点和各内部节点中的分枝属性,信息增益的缺点是倾向于选择取值较多的属性,在某些情况下这类属性可能不会提供太多有价值的信息,而C4.5算法采用信息增益率作为评价标准,克服了ID3算法的这点不足;(2)(2)ID3算法只能处理描述属性为离散的数据集,而C4.5算法既可以处理离散型描述性,又可以处理连续型描述属性。C4.5算法也是一种基于信息论的机器学习方法,其核心思想是通过分析训练数据集,在整个数据集上递归地建立一个决策树。使用WEKA数据挖掘软件提供的C4.5算法进行分类,实验结果如表3所示表3C4.5决策树算法实验结果hamspamtotalham4119420spam11569580total42257810003.3支持向量机算法支持向量机算法简称SVM(SupportVectorMachine)算法[4],该算法建立在统计学习理论中的VC维和结构风险最小化基础之上,并结合最优化理论来得到分类决策函数的分类算法。其基本思想是寻找一个分类超平面,将两类样本分到超平面的两侧他在解决非线性问题、高维模式识别问题等许多问题中显示出许多优势,是统计学习理论中比较实用的算法之一,目前已在人脸识别、手写数字识别、文本分类[5]、信息检索等领域得到成功应用。支持向量机的数学模型如式(3-4)和式(3-5),该模型保证在满足条件下,超平面距离各样本点距离最大。wbw2,21min(3-4)nibxwytsiTi,...2,1,1)(..(3-5)利用WEKA软件实现支持矢量机(SMO)算法的实验结果如表4所示表4支持向量机算法实验结果hamspamtotalham40317420spam13567580total41658410003.4实验结果评价与分析3.4.1实验评价方法测试邮件集合中垃圾邮件、非垃圾邮件的数量分别是Ns、Nh,垃圾邮件中正确分类和被错分的邮件数量分别为Nss、Nsh,非垃圾邮件中被正确分类和被错误分类的邮件数量分别为Nhh、Nhs,则垃圾邮件识别算法的性能可以根据以下几个指标进行衡量。(1)垃圾邮件召回率(recall)垃圾邮件样本集中能被算法正确分类的样本所占比例,记为r,定义如式(3-6)%100shssssNNNr(3-6)可见当垃圾邮件召回率反应了算法对垃圾邮件的检测能力,该值越大说明检测能力越强,被遗漏的邮件越少。(2)垃圾邮件识别准确率(precision)被正确识别分类的邮件数占所有样本的比例,记为p,定义如式(3-7)hshhssNNNNp(3-7)准确率反应邮件被正确分类的概率,准确率越高,说明被错误分类的邮件数量就越少。3.4.2实验结果分析MATLAB编写程序实现的朴素贝叶斯算法结果与WEKA平台的实验结果存在一定的差异,对比结果如表5所示表5基于MATLAB的朴素贝叶斯实验结果算法实现环境准确率MATLAB0.903WEKA平台0.888实验结果存在差异的原因在于MATLAB程序仅仅是单纯使用朴素贝叶斯公式来进行结果计算,未考虑数据集中的噪音等因素,WEKA平台的算法包括更进一步的预处理,噪音数据去除,以及算法的优化,导致实验结果的准确率低于MATLAB程序结果。基于WEKA平台提供的三种分类方法,对比结果如表6所示表6三种算法分类效果对比准确度召回率