基于邮件内容的多层次邮件分类方法与流程

文档序号:12278389阅读:574来源:国知局
基于邮件内容的多层次邮件分类方法与流程

本发明属于网络通信技术领域,具体涉及一种基于邮件内容的多层次邮件分类方法的设计。



背景技术:

在网络进入万千大众的生活的同时,网络通信也就变得越来越频繁了,邮件通信正是网络通信的重要手段。然而,就在电子邮件逐渐成为一种不可或缺的重要信息交流工具的同时,日益增长的邮件数量也给人们的生活和工作带来了极大的困扰。尤其是对于公司和国家机关部门,面对现在大量的推荐邮件,问候邮件和掺杂在其中的重要邮件和急需处理的邮件,人们需要付出极大的工作量,造成大量的人力浪费和经济损失。

为了应对这些问题,目前通常采用邮件过滤,但是常见的邮件过滤算法主要是考虑邮件的内容,实际上就是文本的分类算法,另外通用的算法对不同的用户没有进行区别对待。在现有的一些解决方案中,包括基于概率的邮件分类方法、基于统计学习的邮件分类方法、基于相似度聚类的邮件分类方法等。

基于概率的邮件分类方法,如经典的贝叶斯方法,其原理是计算各个类别在给定这组属性值时的条件概率,并将条件概率最大的类标号作为分类的结果,采用该方法的缺点是前提条件一般不能满足。

基于统计学习的邮件分类方法,如SVM、决策树等。SVM方法是目前比较好的邮件分类方法之一,它主要是应对数据集在低纬度上无法正确分类,通道不是线性变换的函数对原始的特征空间进行映射,转换成一个更高维度的特征空间,在新的空间上实现对数据集的正确分类,根据邮件所在的平面来决定邮件所属的类别,其缺点是核函数的选择有一定的盲目性,缺乏有效的指导,很难针对某个具体问题选择最佳的核函数。决策树是比较有效率的一个方法,其原理是先将属性值进行离散化,然后按离散化的值进行建树,依次进行,直到该分支满足预定的要求,否则继续下去,直到该分支为单个邮件。其缺点是很容易过拟合。

基于相似度聚类的邮件分类方法,如KNN,其原理是计算邮件之间的距离,样本离哪个类别近就认为该封邮件属于哪个类别。其缺点是需要计算邮件之间的距离,分类效率较低。

这些方法都有各自的优势,同时也有各自的缺点。但是在最近几年的邮件分类问题,样本的不平衡性成为在邮件分类中大问题,人们往往要每天面对各种各样的推送邮件和骚扰邮件的狂轰乱炸,为了不错过重要的信息,只能在大量由口件中挑去需要的少量邮件。现有的邮件分类方法基本采用单一的算法模型,对邮件只进行简单的抽样,无法解决样本的不平衡性对分类器分类效果带来的重大影响。因此,样本的不平衡性对现有的邮件分类方法的效果影响是非常大的,尤其是对于我们想要提取的少量重要邮件的识别效果更是惨不忍睹。



技术实现要素:

本发明的目的是为了解决现有技术中样本的不平衡性对邮件分类的效果有重大影响的问题,提出了一种基于邮件内容的多层次邮件分类方法。

本发明的技术方案为:基于邮件内容的多层次邮件分类方法,包括以下步骤:

S1、对原始邮件数据集进行预处理,生成新的邮件数据集Email-Matrix-SVD;

S2、采用朴素贝叶斯算法、支持向量机和C4.5算法组合投票,构建第一级分类器,对邮件数据集Email-Matrix-SVD进行第一级过滤,得到重要、不重要以及不确定三个标签的邮件数据集;

S3、采用随机森林算法构建第二级分类器,对第一级过滤后不确定标签的邮件数据集进行第二级过滤,得到重要、不重要以及不确定三个标签的邮件数据集;

S4、采用liblinear算法构建第三级分类器,对第二级过滤后不确定标签的邮件数据集进行第三级过滤,得到重要、不重要两个标签的邮件数据集。

本发明的有益效果是:本发明在分类器的设计上,采用了多级分类的方式,增加了算法的层次性,通过层层过滤,在保证召回率的情况下,逐步提高了分类器的准确率,使得正负样本(重要邮件和不重要邮件)的平衡性不断增加,从而在最后一级上实现邮件数据的基本平衡,使得最终的分类效果受样本不平衡性的影响较小,在邮件分类中取得了较好的效果。

附图说明

图1为本发明提供的基于邮件内容的多层次邮件分类方法流程图。

图2为本发明步骤S1的分步骤流程图。

图3为本发明实施例的朴素贝叶斯算法流程图。

图4为本发明实施例的支持向量机算法流程图。

图5为本发明实施例的C4.5算法流程图。

图6为本发明步骤S3的分步骤流程图。

图7为本发明步骤S4的分步骤流程图。

图8为本发明与传统随机森林分类方法以及adaboost算法各项指标对比示意图。

具体实施方式

下面结合附图对本发明的实施例作进一步的说明。

本发明提供了一种基于邮件内容的多层次邮件分类方法,如图1所示,包括以下步骤:

S1、对原始邮件数据集进行预处理,生成新的邮件数据集Email-Matrix-SVD。

如图2所示,该步骤具体包括以下分步骤:

S11、邮件解析。

由于邮件是半结构化文档,无法直接作为文本进行处理,因此需要先对邮件进行解析。通过分析邮件格式,对原始邮件数据集中的邮件内容、主题、发件人地址、发件时间、收件人地址以及附件信息进行提取,存储提取结果,生成邮件数据集EmailDatas。

S12、生成邮件空间向量模型。

对邮件数据集EmailDatas中邮件的内容和主题进行分词,并进行词根提取、词性标注和停用词过滤,然后通过位置和词性tf-idf计算单词权重,之后通过卡方检验对单词进行初步筛选,生成邮件空间向量模型Email-Matrix。

S13、邮件去重。

在使用邮件时,我们会经常问到这样一个问题,会有一些邮件重复的发给了我们。在第一次我们可能很关心这封邮件,但是之后我们已经关注到了这封邮件,可能就对这封邮件不再关注。邮件空间向量模型Email-Matrix中就存在这种现象,同一封邮件或者相似度比较大的邮件,存在两种标签,在数据挖掘中我们称这些数据为噪音。因此本发明实施例中通过相似度计算对邮件空间向量模型Email-Matrix中的邮件进行去重处理:

首先遍历重要邮件中每份邮件,与每一封不重要的邮件计算相似度,假如相似度大于阈值Sim_Value,则认为这两封邮件重复,删掉不重要的邮件。当重要邮件遍历完成之后,对不重要的邮件进行遍历,计算不重要邮件之间的相似度,把相似度高于阈值Sim_Value的邮件删掉。这里的依据是负类样本的邮件数目远大于正类样本的邮件数目,通过该步骤可以起到平衡正负样本的作用。

S14、数据采样。

邮件空间向量模型Email-Matrix是非常不平衡的邮件数据集,重要邮件和不重要邮件之间的数量差距比较大,因此采用过采样和欠采样结合的方法对邮件空间向量模型Email-Matrix进行采样,降低邮件空间向量模型Email-Matrix的不平衡程度。

S15、数据降维。

对于邮件空间向量模型Email-Matrix而言,模型精度越高,模型确信度越高,模型复杂度就越高,则学习该模型所需要的样本数也就越多。而特征的数量越多就会造成模型越复杂,就会导致学习训练的速度大大下降,因此在高维特征的样本训练中我们要先进行降维。本发明实施例中采用改进后的SVD降维算法对邮件空间向量模型Email-Matrix进行降维处理,生成邮件数据集Email-Matrix-SVD,具体步骤如下:

S151、对邮件空间向量模型Email-Matrix的列向量进行特征空间聚类。

S152、根据步骤S151的聚类结果,把邮件数据在特征维度上分割成m个邮件数据集Email-Matrixi,i=1,2,…,m。

S153、对m个邮件数据集Email-Matrixi调用原始SVD算法进行数据降维,得到m个新的邮件数据集Email-Matrix-SVDi,i=1,2,…,m。

S154、将m个新的邮件数据集Email-Matrix-SVDi合并成一个新的邮件数据集Email-Matrix-SVD-tmp,再进行一次SVD降维得到邮件数据集Email-Matrix-SVD。

S2、采用朴素贝叶斯算法、支持向量机和C4.5算法组合投票,构建第一级分类器,对邮件数据集Email-Matrix-SVD进行第一级过滤,得到重要、不重要以及不确定三个标签的邮件数据集。

第一级分类器的构建是很重要的,因为第一级分类器的构建对准确率和召回率都有很直接的影响,可以说如果第一级分类器不能选择适当的算法和参数的话,后面两级的执行将是无比困难的。本发明实施例中,第一级分类器采用了朴素贝叶斯算法、支持向量机和C4.5算法的投票组合分类器。从邮件数据集Email-Matrix-SVD中抽取ClassNum_first个数据集作为训练集,令M=ClassNum_first/3,对M个训练集进行朴素贝叶斯算法训练,M个训练集进行支持向量机算法训练,另外M个训练集进行C4.5算法训练,之后通过三种算法的投票结果得到重要、不重要以及不确定三个标签的邮件数据集。

其中,如图3所示,本发明实施例的朴素贝叶斯算法的具体步骤如下:

A1、根据公式(1)计算训练集中重要邮件的先验概率P(im):

式中im_NUM表示训练集中重要邮件的数量,unim_NUM表示训练集中不重要邮件的数量,k为特征维度,wij为邮件空间向量模型Email-Matrix的权值。

A2、根据公式(2)计算训练集中不重要邮件的先验概率P(unim):

A3、根据公式(3)(4)分别计算重要邮件的条件概率P(tj|im)和不重要邮件的条件概率P(tj|unim):

A4、保存步骤A1-A3计算得到的各个概率,生成朴素贝叶斯分类模型。

A5、计算得到邮件样本属于重要邮件的概率和邮件样本属于不重要邮件的概率的比值φ。

A6、设定两个阈值nbc_im和nbc_unim,对邮件样本的最终标签进行判定:

若φ≥nbc_im,则邮件样本判定为重要邮件;

若φ≤nbc_unim,则邮件样本判定为不重要邮件;

若nbc_unim<φ<nbc_im,则邮件样本判定为不确定邮件。

如图4所示,本发明实施例的支持向量机算法具体步骤如下:

B1、分别设置支持向量机的核函数、惩罚系数以及类别权重。

B2、生成分类超平面函数。

设置支持向量机的核函数、惩罚系数、类别权重以及生成分类超平面函数的过程均为本领域技术人员所熟知的,在此不再赘述。

B3、计算支持向量机的判别函数:

y=wx+b (5)

式中w为分类超平面向量,b为常数。

B4、设定两个阈值svm_im和svm_unim,对邮件样本的最终标签进行判定:

若y≥svm_im,则邮件样本判定为重要邮件;

若y≤svm_unim,则邮件样本判定为不重要邮件;

若svm_unim<y<svm_im,则邮件样本判定为不确定邮件。

如图5所示,本发明实施例中C4.5算法的具体步骤如下:

C1、对特征值进行离散化。

众所周知在邮件生成的向量空间模型中,特征的值都是连续值,无法直接参与决策树的特征选择,因此需要对特征值进行离散化处理。

C2、特征选择,选取信息增益比最大的特征。

C3、决策树生长,利用信息增益比最大的特征对训练集样本进行分支。

C4、判断生成的新叶子节点是否符合停止条件,若是则进入步骤C5,否则返回步骤C2。

为了防止过拟合,当叶子节点的样本数少K个时停止训练,K值取决总样本数。

C5、判断是否所有的叶子节点都符合停止条件,若是则进入步骤C6,否则返回步骤C2。

C6、完成决策树训练,将每一个叶子节点的邮件样本判定为该叶子节点对应的邮件类别,即重要邮件、不重要邮件或不确定邮件。

C7、为防止过拟合,对决策树模型进行剪枝,以降低决策树的复杂度。

C8、由于之前步骤中设定了停止条件以及最后对决策树模型进行了剪枝,简化了决策树模型的复杂度,这也就会导致在邮件的判定上会有一定的偏差,邮件决策树的叶子节点上类别可能不纯净,因此这里需要计算每个叶子节点的纯度purity:

式中N表示该叶子节点的总邮件数,Nc表示与该叶子节点类别相同的邮件数。

C9、设置置信度dtc_value,若purity>dtc_value,则该叶子节点对应的邮件类别是可信的,否则该叶子节点对应的邮件类别是待定的,将其划分为不确定邮件。

S3、采用随机森林算法构建第二级分类器,对第一级过滤后不确定标签的邮件数据集进行第二级过滤,得到重要、不重要以及不确定三个标签的邮件数据集。

第二级分类器的构建要兼顾召回率和准确率,在保证召回率的情况下,尽可能的过滤掉足够多的负类样本(不重要邮件),使得正负类样本的在最后一级相对均衡。

如图6所示,该步骤具体包括以下分步骤:

S31、对第一级过滤后不确定标签的邮件数据集进行随机森林抽样,生成训练集RFDatas,具体过程如下:

S311、设随机森林的决策树数量为RF_NUM,每一棵决策树的邮件数量为RF_Email_Num,在抽样中重要邮件所占的数量为RF_imEmail_Num。

S312、根据第一级过滤后的邮件数据集的标签,生成两个新的邮件数据集IMEmails_Second和UNIMEmails_Second,分别表示所有的重要邮件和不重要邮件。

S313、对于重要邮件数据集进行有放回的RF_imEmail_Num次抽样,获取RF_imEmail_Num个重要邮件样本。

S314、在第一级过滤后的所有邮件数据集中有放回地随机抽取RF_Email_Num-RF_imEmail_Num个邮件样本,与步骤S313中抽取的重要邮件样本结合,生成训练集RFDatas。

S32、对训练集RFDatas的属性进行随机抽取。

S33、根据信息增益率选取特征。

S34、决策树生长,对训练集RFDatas中的邮件样本进行分支。

S35、判断新节点的邮件样本是否纯净,若是则进入步骤S36,否则返回步骤S33。

S36、判断是否所有邮件样本都正确分类,若是则进入步骤S38,否则进入步骤S37。

S37、判断决策树的属性是否用完,若是则进入步骤S38,否则返回步骤S33。

S38、将所有决策树的输出结果进行投票,根据投票结果对邮件样本的最终标签进行判定:

若则邮件样本判定为重要邮件;

若则邮件样本判定为不重要邮件;

若则邮件样本判定为不确定邮件;式中y为决策树输出结果,RF_NUM为随机森林中决策树的数量,imp_Value_Second与unimp_Value_Second为设定的阈值。

S4、采用liblinear算法构建第三级分类器,对第二级过滤后不确定标签的邮件数据集进行第三级过滤,得到重要、不重要两个标签的邮件数据集。

通过前两级分类器的控制和过滤,在第三级分类中的负类跟正类样本的不平衡性已经大大地降低,可以通过简单的算法实现对训练集的学习和训练。在这一级的分类器选择上,使用liblinear算法可以解决邮件高维度的问题,并且能够充分的考虑邮件的信息,提高运行速度和结果的精度。

如图7所示,该步骤具体包括以下分步骤:

S41、设定liblinear算法的参数、惩罚系数和权重。

在第三级分类器的训练过程中由于数据集的不平衡性已经降低了很多,因此在使用liblinear时不需要再进行对不重要邮件进行采样处理了,可以通过参数设置和权重设置来进行训练集的训练。训练之后的模型直接对邮件样本进行预测及判别。

S42、通过转化对对偶问题进行求解。

该步骤的具体过程为本领域技术人员所熟知的,在此不再赘述。

S43、生成liblinear分类平面,对第二级过滤后不确定标签的邮件数据集进行分类,得到重要、不重要两个标签的邮件数据集。

通过以上步骤,基于邮件内容的多层次邮件分类器就构建完成了,该分类器充分考虑了抽样对不平衡数据集的影响,通过层层的过滤,在保证召回率的情况下,逐步提高分类器的准确率,在邮件分类中取得了较好的效果。如图8所示,与现有的传统随机森林分类方法以及以二分类柱为基分类器的adaboost算法相比,本发明提供的多层次邮件分类方法在正类样本(即重要邮件)的召回率、邮件分类准确率以及整个分类器的F1-measure(综合评价指标)上都有显著提高。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1