本發(fā)明屬于網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體涉及一種基于郵件內(nèi)容的多層次郵件分類方法的設(shè)計。
背景技術(shù):
在網(wǎng)絡(luò)進(jìn)入萬千大眾的生活的同時,網(wǎng)絡(luò)通信也就變得越來越頻繁了,郵件通信正是網(wǎng)絡(luò)通信的重要手段。然而,就在電子郵件逐漸成為一種不可或缺的重要信息交流工具的同時,日益增長的郵件數(shù)量也給人們的生活和工作帶來了極大的困擾。尤其是對于公司和國家機(jī)關(guān)部門,面對現(xiàn)在大量的推薦郵件,問候郵件和摻雜在其中的重要郵件和急需處理的郵件,人們需要付出極大的工作量,造成大量的人力浪費和經(jīng)濟(jì)損失。
為了應(yīng)對這些問題,目前通常采用郵件過濾,但是常見的郵件過濾算法主要是考慮郵件的內(nèi)容,實際上就是文本的分類算法,另外通用的算法對不同的用戶沒有進(jìn)行區(qū)別對待。在現(xiàn)有的一些解決方案中,包括基于概率的郵件分類方法、基于統(tǒng)計學(xué)習(xí)的郵件分類方法、基于相似度聚類的郵件分類方法等。
基于概率的郵件分類方法,如經(jīng)典的貝葉斯方法,其原理是計算各個類別在給定這組屬性值時的條件概率,并將條件概率最大的類標(biāo)號作為分類的結(jié)果,采用該方法的缺點是前提條件一般不能滿足。
基于統(tǒng)計學(xué)習(xí)的郵件分類方法,如SVM、決策樹等。SVM方法是目前比較好的郵件分類方法之一,它主要是應(yīng)對數(shù)據(jù)集在低緯度上無法正確分類,通道不是線性變換的函數(shù)對原始的特征空間進(jìn)行映射,轉(zhuǎn)換成一個更高維度的特征空間,在新的空間上實現(xiàn)對數(shù)據(jù)集的正確分類,根據(jù)郵件所在的平面來決定郵件所屬的類別,其缺點是核函數(shù)的選擇有一定的盲目性,缺乏有效的指導(dǎo),很難針對某個具體問題選擇最佳的核函數(shù)。決策樹是比較有效率的一個方法,其原理是先將屬性值進(jìn)行離散化,然后按離散化的值進(jìn)行建樹,依次進(jìn)行,直到該分支滿足預(yù)定的要求,否則繼續(xù)下去,直到該分支為單個郵件。其缺點是很容易過擬合。
基于相似度聚類的郵件分類方法,如KNN,其原理是計算郵件之間的距離,樣本離哪個類別近就認(rèn)為該封郵件屬于哪個類別。其缺點是需要計算郵件之間的距離,分類效率較低。
這些方法都有各自的優(yōu)勢,同時也有各自的缺點。但是在最近幾年的郵件分類問題,樣本的不平衡性成為在郵件分類中大問題,人們往往要每天面對各種各樣的推送郵件和騷擾郵件的狂轟亂炸,為了不錯過重要的信息,只能在大量由口件中挑去需要的少量郵件?,F(xiàn)有的郵件分類方法基本采用單一的算法模型,對郵件只進(jìn)行簡單的抽樣,無法解決樣本的不平衡性對分類器分類效果帶來的重大影響。因此,樣本的不平衡性對現(xiàn)有的郵件分類方法的效果影響是非常大的,尤其是對于我們想要提取的少量重要郵件的識別效果更是慘不忍睹。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中樣本的不平衡性對郵件分類的效果有重大影響的問題,提出了一種基于郵件內(nèi)容的多層次郵件分類方法。
本發(fā)明的技術(shù)方案為:基于郵件內(nèi)容的多層次郵件分類方法,包括以下步驟:
S1、對原始郵件數(shù)據(jù)集進(jìn)行預(yù)處理,生成新的郵件數(shù)據(jù)集Email-Matrix-SVD;
S2、采用樸素貝葉斯算法、支持向量機(jī)和C4.5算法組合投票,構(gòu)建第一級分類器,對郵件數(shù)據(jù)集Email-Matrix-SVD進(jìn)行第一級過濾,得到重要、不重要以及不確定三個標(biāo)簽的郵件數(shù)據(jù)集;
S3、采用隨機(jī)森林算法構(gòu)建第二級分類器,對第一級過濾后不確定標(biāo)簽的郵件數(shù)據(jù)集進(jìn)行第二級過濾,得到重要、不重要以及不確定三個標(biāo)簽的郵件數(shù)據(jù)集;
S4、采用liblinear算法構(gòu)建第三級分類器,對第二級過濾后不確定標(biāo)簽的郵件數(shù)據(jù)集進(jìn)行第三級過濾,得到重要、不重要兩個標(biāo)簽的郵件數(shù)據(jù)集。
本發(fā)明的有益效果是:本發(fā)明在分類器的設(shè)計上,采用了多級分類的方式,增加了算法的層次性,通過層層過濾,在保證召回率的情況下,逐步提高了分類器的準(zhǔn)確率,使得正負(fù)樣本(重要郵件和不重要郵件)的平衡性不斷增加,從而在最后一級上實現(xiàn)郵件數(shù)據(jù)的基本平衡,使得最終的分類效果受樣本不平衡性的影響較小,在郵件分類中取得了較好的效果。
附圖說明
圖1為本發(fā)明提供的基于郵件內(nèi)容的多層次郵件分類方法流程圖。
圖2為本發(fā)明步驟S1的分步驟流程圖。
圖3為本發(fā)明實施例的樸素貝葉斯算法流程圖。
圖4為本發(fā)明實施例的支持向量機(jī)算法流程圖。
圖5為本發(fā)明實施例的C4.5算法流程圖。
圖6為本發(fā)明步驟S3的分步驟流程圖。
圖7為本發(fā)明步驟S4的分步驟流程圖。
圖8為本發(fā)明與傳統(tǒng)隨機(jī)森林分類方法以及adaboost算法各項指標(biāo)對比示意圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明的實施例作進(jìn)一步的說明。
本發(fā)明提供了一種基于郵件內(nèi)容的多層次郵件分類方法,如圖1所示,包括以下步驟:
S1、對原始郵件數(shù)據(jù)集進(jìn)行預(yù)處理,生成新的郵件數(shù)據(jù)集Email-Matrix-SVD。
如圖2所示,該步驟具體包括以下分步驟:
S11、郵件解析。
由于郵件是半結(jié)構(gòu)化文檔,無法直接作為文本進(jìn)行處理,因此需要先對郵件進(jìn)行解析。通過分析郵件格式,對原始郵件數(shù)據(jù)集中的郵件內(nèi)容、主題、發(fā)件人地址、發(fā)件時間、收件人地址以及附件信息進(jìn)行提取,存儲提取結(jié)果,生成郵件數(shù)據(jù)集EmailDatas。
S12、生成郵件空間向量模型。
對郵件數(shù)據(jù)集EmailDatas中郵件的內(nèi)容和主題進(jìn)行分詞,并進(jìn)行詞根提取、詞性標(biāo)注和停用詞過濾,然后通過位置和詞性tf-idf計算單詞權(quán)重,之后通過卡方檢驗對單詞進(jìn)行初步篩選,生成郵件空間向量模型Email-Matrix。
S13、郵件去重。
在使用郵件時,我們會經(jīng)常問到這樣一個問題,會有一些郵件重復(fù)的發(fā)給了我們。在第一次我們可能很關(guān)心這封郵件,但是之后我們已經(jīng)關(guān)注到了這封郵件,可能就對這封郵件不再關(guān)注。郵件空間向量模型Email-Matrix中就存在這種現(xiàn)象,同一封郵件或者相似度比較大的郵件,存在兩種標(biāo)簽,在數(shù)據(jù)挖掘中我們稱這些數(shù)據(jù)為噪音。因此本發(fā)明實施例中通過相似度計算對郵件空間向量模型Email-Matrix中的郵件進(jìn)行去重處理:
首先遍歷重要郵件中每份郵件,與每一封不重要的郵件計算相似度,假如相似度大于閾值Sim_Value,則認(rèn)為這兩封郵件重復(fù),刪掉不重要的郵件。當(dāng)重要郵件遍歷完成之后,對不重要的郵件進(jìn)行遍歷,計算不重要郵件之間的相似度,把相似度高于閾值Sim_Value的郵件刪掉。這里的依據(jù)是負(fù)類樣本的郵件數(shù)目遠(yuǎn)大于正類樣本的郵件數(shù)目,通過該步驟可以起到平衡正負(fù)樣本的作用。
S14、數(shù)據(jù)采樣。
郵件空間向量模型Email-Matrix是非常不平衡的郵件數(shù)據(jù)集,重要郵件和不重要郵件之間的數(shù)量差距比較大,因此采用過采樣和欠采樣結(jié)合的方法對郵件空間向量模型Email-Matrix進(jìn)行采樣,降低郵件空間向量模型Email-Matrix的不平衡程度。
S15、數(shù)據(jù)降維。
對于郵件空間向量模型Email-Matrix而言,模型精度越高,模型確信度越高,模型復(fù)雜度就越高,則學(xué)習(xí)該模型所需要的樣本數(shù)也就越多。而特征的數(shù)量越多就會造成模型越復(fù)雜,就會導(dǎo)致學(xué)習(xí)訓(xùn)練的速度大大下降,因此在高維特征的樣本訓(xùn)練中我們要先進(jìn)行降維。本發(fā)明實施例中采用改進(jìn)后的SVD降維算法對郵件空間向量模型Email-Matrix進(jìn)行降維處理,生成郵件數(shù)據(jù)集Email-Matrix-SVD,具體步驟如下:
S151、對郵件空間向量模型Email-Matrix的列向量進(jìn)行特征空間聚類。
S152、根據(jù)步驟S151的聚類結(jié)果,把郵件數(shù)據(jù)在特征維度上分割成m個郵件數(shù)據(jù)集Email-Matrixi,i=1,2,…,m。
S153、對m個郵件數(shù)據(jù)集Email-Matrixi調(diào)用原始SVD算法進(jìn)行數(shù)據(jù)降維,得到m個新的郵件數(shù)據(jù)集Email-Matrix-SVDi,i=1,2,…,m。
S154、將m個新的郵件數(shù)據(jù)集Email-Matrix-SVDi合并成一個新的郵件數(shù)據(jù)集Email-Matrix-SVD-tmp,再進(jìn)行一次SVD降維得到郵件數(shù)據(jù)集Email-Matrix-SVD。
S2、采用樸素貝葉斯算法、支持向量機(jī)和C4.5算法組合投票,構(gòu)建第一級分類器,對郵件數(shù)據(jù)集Email-Matrix-SVD進(jìn)行第一級過濾,得到重要、不重要以及不確定三個標(biāo)簽的郵件數(shù)據(jù)集。
第一級分類器的構(gòu)建是很重要的,因為第一級分類器的構(gòu)建對準(zhǔn)確率和召回率都有很直接的影響,可以說如果第一級分類器不能選擇適當(dāng)?shù)乃惴ê蛥?shù)的話,后面兩級的執(zhí)行將是無比困難的。本發(fā)明實施例中,第一級分類器采用了樸素貝葉斯算法、支持向量機(jī)和C4.5算法的投票組合分類器。從郵件數(shù)據(jù)集Email-Matrix-SVD中抽取ClassNum_first個數(shù)據(jù)集作為訓(xùn)練集,令M=ClassNum_first/3,對M個訓(xùn)練集進(jìn)行樸素貝葉斯算法訓(xùn)練,M個訓(xùn)練集進(jìn)行支持向量機(jī)算法訓(xùn)練,另外M個訓(xùn)練集進(jìn)行C4.5算法訓(xùn)練,之后通過三種算法的投票結(jié)果得到重要、不重要以及不確定三個標(biāo)簽的郵件數(shù)據(jù)集。
其中,如圖3所示,本發(fā)明實施例的樸素貝葉斯算法的具體步驟如下:
A1、根據(jù)公式(1)計算訓(xùn)練集中重要郵件的先驗概率P(im):
式中im_NUM表示訓(xùn)練集中重要郵件的數(shù)量,unim_NUM表示訓(xùn)練集中不重要郵件的數(shù)量,k為特征維度,wij為郵件空間向量模型Email-Matrix的權(quán)值。
A2、根據(jù)公式(2)計算訓(xùn)練集中不重要郵件的先驗概率P(unim):
A3、根據(jù)公式(3)(4)分別計算重要郵件的條件概率P(tj|im)和不重要郵件的條件概率P(tj|unim):
A4、保存步驟A1-A3計算得到的各個概率,生成樸素貝葉斯分類模型。
A5、計算得到郵件樣本屬于重要郵件的概率和郵件樣本屬于不重要郵件的概率的比值φ。
A6、設(shè)定兩個閾值nbc_im和nbc_unim,對郵件樣本的最終標(biāo)簽進(jìn)行判定:
若φ≥nbc_im,則郵件樣本判定為重要郵件;
若φ≤nbc_unim,則郵件樣本判定為不重要郵件;
若nbc_unim<φ<nbc_im,則郵件樣本判定為不確定郵件。
如圖4所示,本發(fā)明實施例的支持向量機(jī)算法具體步驟如下:
B1、分別設(shè)置支持向量機(jī)的核函數(shù)、懲罰系數(shù)以及類別權(quán)重。
B2、生成分類超平面函數(shù)。
設(shè)置支持向量機(jī)的核函數(shù)、懲罰系數(shù)、類別權(quán)重以及生成分類超平面函數(shù)的過程均為本領(lǐng)域技術(shù)人員所熟知的,在此不再贅述。
B3、計算支持向量機(jī)的判別函數(shù):
y=wx+b (5)
式中w為分類超平面向量,b為常數(shù)。
B4、設(shè)定兩個閾值svm_im和svm_unim,對郵件樣本的最終標(biāo)簽進(jìn)行判定:
若y≥svm_im,則郵件樣本判定為重要郵件;
若y≤svm_unim,則郵件樣本判定為不重要郵件;
若svm_unim<y<svm_im,則郵件樣本判定為不確定郵件。
如圖5所示,本發(fā)明實施例中C4.5算法的具體步驟如下:
C1、對特征值進(jìn)行離散化。
眾所周知在郵件生成的向量空間模型中,特征的值都是連續(xù)值,無法直接參與決策樹的特征選擇,因此需要對特征值進(jìn)行離散化處理。
C2、特征選擇,選取信息增益比最大的特征。
C3、決策樹生長,利用信息增益比最大的特征對訓(xùn)練集樣本進(jìn)行分支。
C4、判斷生成的新葉子節(jié)點是否符合停止條件,若是則進(jìn)入步驟C5,否則返回步驟C2。
為了防止過擬合,當(dāng)葉子節(jié)點的樣本數(shù)少K個時停止訓(xùn)練,K值取決總樣本數(shù)。
C5、判斷是否所有的葉子節(jié)點都符合停止條件,若是則進(jìn)入步驟C6,否則返回步驟C2。
C6、完成決策樹訓(xùn)練,將每一個葉子節(jié)點的郵件樣本判定為該葉子節(jié)點對應(yīng)的郵件類別,即重要郵件、不重要郵件或不確定郵件。
C7、為防止過擬合,對決策樹模型進(jìn)行剪枝,以降低決策樹的復(fù)雜度。
C8、由于之前步驟中設(shè)定了停止條件以及最后對決策樹模型進(jìn)行了剪枝,簡化了決策樹模型的復(fù)雜度,這也就會導(dǎo)致在郵件的判定上會有一定的偏差,郵件決策樹的葉子節(jié)點上類別可能不純凈,因此這里需要計算每個葉子節(jié)點的純度purity:
式中N表示該葉子節(jié)點的總郵件數(shù),Nc表示與該葉子節(jié)點類別相同的郵件數(shù)。
C9、設(shè)置置信度dtc_value,若purity>dtc_value,則該葉子節(jié)點對應(yīng)的郵件類別是可信的,否則該葉子節(jié)點對應(yīng)的郵件類別是待定的,將其劃分為不確定郵件。
S3、采用隨機(jī)森林算法構(gòu)建第二級分類器,對第一級過濾后不確定標(biāo)簽的郵件數(shù)據(jù)集進(jìn)行第二級過濾,得到重要、不重要以及不確定三個標(biāo)簽的郵件數(shù)據(jù)集。
第二級分類器的構(gòu)建要兼顧召回率和準(zhǔn)確率,在保證召回率的情況下,盡可能的過濾掉足夠多的負(fù)類樣本(不重要郵件),使得正負(fù)類樣本的在最后一級相對均衡。
如圖6所示,該步驟具體包括以下分步驟:
S31、對第一級過濾后不確定標(biāo)簽的郵件數(shù)據(jù)集進(jìn)行隨機(jī)森林抽樣,生成訓(xùn)練集RFDatas,具體過程如下:
S311、設(shè)隨機(jī)森林的決策樹數(shù)量為RF_NUM,每一棵決策樹的郵件數(shù)量為RF_Email_Num,在抽樣中重要郵件所占的數(shù)量為RF_imEmail_Num。
S312、根據(jù)第一級過濾后的郵件數(shù)據(jù)集的標(biāo)簽,生成兩個新的郵件數(shù)據(jù)集IMEmails_Second和UNIMEmails_Second,分別表示所有的重要郵件和不重要郵件。
S313、對于重要郵件數(shù)據(jù)集進(jìn)行有放回的RF_imEmail_Num次抽樣,獲取RF_imEmail_Num個重要郵件樣本。
S314、在第一級過濾后的所有郵件數(shù)據(jù)集中有放回地隨機(jī)抽取RF_Email_Num-RF_imEmail_Num個郵件樣本,與步驟S313中抽取的重要郵件樣本結(jié)合,生成訓(xùn)練集RFDatas。
S32、對訓(xùn)練集RFDatas的屬性進(jìn)行隨機(jī)抽取。
S33、根據(jù)信息增益率選取特征。
S34、決策樹生長,對訓(xùn)練集RFDatas中的郵件樣本進(jìn)行分支。
S35、判斷新節(jié)點的郵件樣本是否純凈,若是則進(jìn)入步驟S36,否則返回步驟S33。
S36、判斷是否所有郵件樣本都正確分類,若是則進(jìn)入步驟S38,否則進(jìn)入步驟S37。
S37、判斷決策樹的屬性是否用完,若是則進(jìn)入步驟S38,否則返回步驟S33。
S38、將所有決策樹的輸出結(jié)果進(jìn)行投票,根據(jù)投票結(jié)果對郵件樣本的最終標(biāo)簽進(jìn)行判定:
若則郵件樣本判定為重要郵件;
若則郵件樣本判定為不重要郵件;
若則郵件樣本判定為不確定郵件;式中y為決策樹輸出結(jié)果,RF_NUM為隨機(jī)森林中決策樹的數(shù)量,imp_Value_Second與unimp_Value_Second為設(shè)定的閾值。
S4、采用liblinear算法構(gòu)建第三級分類器,對第二級過濾后不確定標(biāo)簽的郵件數(shù)據(jù)集進(jìn)行第三級過濾,得到重要、不重要兩個標(biāo)簽的郵件數(shù)據(jù)集。
通過前兩級分類器的控制和過濾,在第三級分類中的負(fù)類跟正類樣本的不平衡性已經(jīng)大大地降低,可以通過簡單的算法實現(xiàn)對訓(xùn)練集的學(xué)習(xí)和訓(xùn)練。在這一級的分類器選擇上,使用liblinear算法可以解決郵件高維度的問題,并且能夠充分的考慮郵件的信息,提高運行速度和結(jié)果的精度。
如圖7所示,該步驟具體包括以下分步驟:
S41、設(shè)定liblinear算法的參數(shù)、懲罰系數(shù)和權(quán)重。
在第三級分類器的訓(xùn)練過程中由于數(shù)據(jù)集的不平衡性已經(jīng)降低了很多,因此在使用liblinear時不需要再進(jìn)行對不重要郵件進(jìn)行采樣處理了,可以通過參數(shù)設(shè)置和權(quán)重設(shè)置來進(jìn)行訓(xùn)練集的訓(xùn)練。訓(xùn)練之后的模型直接對郵件樣本進(jìn)行預(yù)測及判別。
S42、通過轉(zhuǎn)化對對偶問題進(jìn)行求解。
該步驟的具體過程為本領(lǐng)域技術(shù)人員所熟知的,在此不再贅述。
S43、生成liblinear分類平面,對第二級過濾后不確定標(biāo)簽的郵件數(shù)據(jù)集進(jìn)行分類,得到重要、不重要兩個標(biāo)簽的郵件數(shù)據(jù)集。
通過以上步驟,基于郵件內(nèi)容的多層次郵件分類器就構(gòu)建完成了,該分類器充分考慮了抽樣對不平衡數(shù)據(jù)集的影響,通過層層的過濾,在保證召回率的情況下,逐步提高分類器的準(zhǔn)確率,在郵件分類中取得了較好的效果。如圖8所示,與現(xiàn)有的傳統(tǒng)隨機(jī)森林分類方法以及以二分類柱為基分類器的adaboost算法相比,本發(fā)明提供的多層次郵件分類方法在正類樣本(即重要郵件)的召回率、郵件分類準(zhǔn)確率以及整個分類器的F1-measure(綜合評價指標(biāo))上都有顯著提高。
本領(lǐng)域的普通技術(shù)人員將會意識到,這里所述的實施例是為了幫助讀者理解本發(fā)明的原理,應(yīng)被理解為本發(fā)明的保護(hù)范圍并不局限于這樣的特別陳述和實施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開的這些技術(shù)啟示做出各種不脫離本發(fā)明實質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護(hù)范圍內(nèi)。