王 攀,陳雪嬌
(1.南京郵電大學(xué) 現(xiàn)代郵政學(xué)院,南京 210003; 2.南京信息職業(yè)技術(shù)學(xué)院 通信學(xué)院,南京 210023)
流量分類(lèi)與識(shí)別是提升網(wǎng)絡(luò)管理與安全監(jiān)測(cè)水平,改善服務(wù)質(zhì)量的基礎(chǔ),也是網(wǎng)絡(luò)設(shè)計(jì)與規(guī)劃等網(wǎng)絡(luò)行為的前提。隨著用戶(hù)隱私保護(hù)和安全意識(shí)的增強(qiáng),SSL、SSH、VPN和Tor等技術(shù)得到了越來(lái)越廣泛的應(yīng)用,導(dǎo)致加密流量在網(wǎng)絡(luò)傳輸中的比重越來(lái)越高。
因采用應(yīng)用層加密,傳統(tǒng)的端口匹配[1]、DPI深度包檢測(cè)[2-4]等技術(shù)無(wú)法準(zhǔn)確識(shí)別這類(lèi)加密應(yīng)用流量,相關(guān)研究人員也一直在嘗試通過(guò)各種機(jī)器學(xué)習(xí)方法,如SVM、決策樹(shù)、樸素貝葉斯等[5-7],圍繞流特征、凈荷特征以及混合特征進(jìn)行識(shí)別和分類(lèi)。然而這些方法都存在2個(gè)問(wèn)題,一個(gè)就是機(jī)器學(xué)習(xí)的特征提取和選擇非常復(fù)雜,耗時(shí)耗力,且非常依賴(lài)特征專(zhuān)家的知識(shí)面和經(jīng)驗(yàn);另一個(gè)就是分類(lèi)準(zhǔn)確率不高。
相比其他機(jī)器學(xué)習(xí)方法,深度學(xué)習(xí)具有深層結(jié)構(gòu)的特點(diǎn),而其他淺層結(jié)構(gòu)模型,如最大熵和Softmax回歸、SVM等方法的局限性主要是依賴(lài)于有標(biāo)記的樣本、對(duì)復(fù)雜函數(shù)難以表示和陷入局部最優(yōu)化,或者泛化能力受到樣本數(shù)據(jù)量的影響較大,如BP算法。深度學(xué)習(xí)采用訓(xùn)練多個(gè)單層非線(xiàn)性網(wǎng)絡(luò),組合底層特征構(gòu)成數(shù)據(jù)的抽象表示,從而發(fā)現(xiàn)并且刻畫(huà)問(wèn)題內(nèi)部復(fù)雜的結(jié)構(gòu)特征,故而表達(dá)數(shù)據(jù)的本質(zhì)特征。
鑒于上述深度學(xué)習(xí)的優(yōu)點(diǎn),研究人員開(kāi)始探討深度學(xué)習(xí)方法在流量識(shí)別中的應(yīng)用。文獻(xiàn)[8]嘗試用深度學(xué)習(xí)的方法來(lái)識(shí)別流量,采用堆棧式自動(dòng)編碼器(Stacked Autoencoder,SAE)來(lái)識(shí)別協(xié)議及應(yīng)用,并對(duì)未知流量進(jìn)行識(shí)別,達(dá)到了較好的準(zhǔn)確率,但文中所采用的數(shù)據(jù)集為非公開(kāi)數(shù)據(jù)集,無(wú)法進(jìn)行驗(yàn)證對(duì)比。文獻(xiàn)[9]提出采用SAE和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)對(duì)加密流量進(jìn)行識(shí)別,但對(duì)于數(shù)據(jù)的預(yù)處理和模型參數(shù)的選擇等方面論述得不夠清晰。文獻(xiàn)[10]提出一種基于CNN的流量分類(lèi)算法,分別采用公開(kāi)數(shù)據(jù)集和實(shí)際數(shù)據(jù)集進(jìn)行測(cè)試,并與傳統(tǒng)分類(lèi)方法相比,提高了流量分類(lèi)的精度,減少了分類(lèi)使用的時(shí)間,但并未涉及對(duì)加密流量的分類(lèi)識(shí)別。文獻(xiàn)[11]提出基于馬爾科夫模型的半監(jiān)督學(xué)習(xí)分類(lèi)器進(jìn)行流量分類(lèi)。
本文提出一種基于SAE的加密流量識(shí)別方法,一方面利用SAE的無(wú)監(jiān)督特性及在數(shù)據(jù)降維方面的優(yōu)勢(shì),結(jié)合多層感知機(jī)(Multi-Layer Perceptron,MLP)的有監(jiān)督分類(lèi)學(xué)習(xí),實(shí)現(xiàn)對(duì)加密應(yīng)用流量的準(zhǔn)確識(shí)別;另一方面考慮到樣本數(shù)據(jù)集的類(lèi)別不平衡性對(duì)分類(lèi)精度的影響,本文采用SMOTE過(guò)抽樣方法對(duì)不平衡數(shù)據(jù)集進(jìn)行處理。
自動(dòng)編碼器是一種多層神經(jīng)網(wǎng)絡(luò),屬于非監(jiān)督學(xué)習(xí),不需要對(duì)訓(xùn)練樣本進(jìn)行標(biāo)記,其輸入層和輸出層表示相同的含義——具有的節(jié)點(diǎn)數(shù)。自動(dòng)編碼器學(xué)習(xí)的是一個(gè)輸入輸出相同的“恒等函數(shù)”,其意義在于中間層,這一層是輸入向量的特征表達(dá)。其原理表示如下:
假設(shè)輸入一個(gè)n維信號(hào)x(x∈[0,1]),經(jīng)過(guò)輸入層到達(dá)中間層,信號(hào)變?yōu)閥,可以用下式表示:
y=a(Wx+b)
(1)
其中,a()表示激活函數(shù),如Sigmoid函數(shù)、ReLU函數(shù)等,實(shí)現(xiàn)非線(xiàn)性變換,W為權(quán)值,b為偏置。信號(hào)y經(jīng)過(guò)解碼層解碼,輸出到輸出層,輸出層和輸入層一樣有n個(gè)神經(jīng)元,假設(shè)輸出信號(hào)為z,計(jì)算公式如下:
z=a(W′y+b′)
(2)
則z為x的預(yù)測(cè)值,W′、b′同樣分別表示權(quán)值與偏置,以區(qū)別于W、b。通過(guò)調(diào)整網(wǎng)絡(luò)參數(shù),使得最終輸出的z與原始輸入的x盡可能相近??赏ㄟ^(guò)損失/誤差函數(shù)進(jìn)行最小化運(yùn)算得到,損失/誤差函數(shù)可以是均方差(MSE)、交叉熵(Cross Entropy)等。
SAE是深度學(xué)習(xí)領(lǐng)域常用的一個(gè)深度學(xué)習(xí)模型,由多個(gè)自動(dòng)編碼器堆疊而成,其目的是為了逐層提取輸入數(shù)據(jù)的高階特征,常被稱(chēng)為逐層貪婪訓(xùn)練學(xué)習(xí)過(guò)程,在此過(guò)程中逐層降低輸入數(shù)據(jù)的維度,將一個(gè)復(fù)雜的輸入數(shù)據(jù)轉(zhuǎn)化成了一個(gè)系列簡(jiǎn)單的高階特征,然后再把這些高階特征輸入一個(gè)分類(lèi)器進(jìn)行分類(lèi)[12]。如圖1所示,SAE的訓(xùn)練過(guò)程主要分為以下4步:
1)給定初始輸入Y,采用無(wú)監(jiān)督方式訓(xùn)練第一層自動(dòng)編碼器V,輸出為Y′,設(shè)定輸入Y和輸出Y′的損失函數(shù),或者叫做重構(gòu)誤差,最小化損失函數(shù)以減少重構(gòu)誤差達(dá)到設(shè)定值。
2)把第一個(gè)自動(dòng)編碼器(AE1)隱含層的輸出V作為第二個(gè)自動(dòng)編碼器(AE2)的輸入,采用以上同樣的方法訓(xùn)練自動(dòng)編碼器Z。
3)重復(fù)第2步直到初始化完成所有自動(dòng)編碼器。
4)把最后一個(gè)SAE的隱含層輸出(如圖1中的Z)作為分類(lèi)器的輸入,然后采用有監(jiān)督的方法訓(xùn)練分類(lèi)器的參數(shù)。
圖1 SAE訓(xùn)練過(guò)程
網(wǎng)絡(luò)流量數(shù)據(jù)與圖像既有相同之處,也有不同之處。相同之處在于網(wǎng)絡(luò)數(shù)據(jù)包分組中的每一個(gè)字節(jié)都是由8 bit構(gòu)成,取值范圍為0~255,非常類(lèi)似于黑白圖片中的一個(gè)灰度像素,可以借鑒很多圖像識(shí)別的深度學(xué)習(xí)方法;不同之處在于數(shù)據(jù)包分組的長(zhǎng)度,即每個(gè)數(shù)據(jù)包所包含的字節(jié)數(shù)長(zhǎng)短不一,因而無(wú)法直接作為深度學(xué)習(xí)模型的輸入,必須進(jìn)行數(shù)據(jù)預(yù)處理。圖2為樣本數(shù)據(jù)的預(yù)處理過(guò)程。
圖2 數(shù)據(jù)預(yù)處理流程
數(shù)據(jù)預(yù)處理流程如下:
步驟1樣本數(shù)據(jù)包文件導(dǎo)入:流量樣本數(shù)據(jù)集有各種形式,比如原始數(shù)據(jù)包、包特征文件等。為獲取流量樣本文件中所存儲(chǔ)的分組信息,一般首先對(duì)樣本文件頭部進(jìn)行讀取,以獲得該樣本文件的概要信息,比如總共有多少分組或有哪些特征項(xiàng)。如果是原始數(shù)據(jù)包形式,還需要進(jìn)行數(shù)據(jù)包過(guò)濾。原因在于樣本數(shù)據(jù)包文件往往不夠純凈,即其中雖包含大量的準(zhǔn)確樣本數(shù)據(jù)包,但也包含部分其他數(shù)據(jù)包,比如APR、DHCP等局域網(wǎng)數(shù)據(jù),這些數(shù)據(jù)的濾除對(duì)于后期的訓(xùn)練和測(cè)試都是有意義的。
步驟2循環(huán)讀取數(shù)據(jù)包:預(yù)處理過(guò)程逐個(gè)讀取流量樣本數(shù)據(jù)集中每一個(gè)分組,對(duì)該分組完成預(yù)處理之后再讀取下一個(gè)分組,直至文件中最后一個(gè)分組為止。
步驟3分組截?cái)?Truncation)和補(bǔ)零(zero-padding):形成分組字節(jié)矩陣(Packet Byte Matrix,PBM)作為深度學(xué)習(xí)模型的輸入。其中,PBM的每一行都是流量樣本中的一個(gè)分組,也是網(wǎng)絡(luò)的輸入基本單元,稱(chēng)為分組字節(jié)向量(Packet Byte Vector,PBV)??紤]到深度學(xué)習(xí)的輸入維度需統(tǒng)一,而每個(gè)分組的大小都不一樣,因此需要考慮要么統(tǒng)一截?cái)?要么長(zhǎng)度不足的補(bǔ)零。定義Truncation_len為截?cái)嚅L(zhǎng)度,需要考慮如下3個(gè)問(wèn)題:
1)每個(gè)分組的大小最大值為MTU,即1 500 Byte,即以太網(wǎng)傳輸?shù)淖畲驣P報(bào)文(包含IP頭部)是1 500 Byte。所以,Truncation_len值的理論范圍為0 Byte~1 500 Byte。
2)Truncation_len的選值。該值過(guò)大,會(huì)造成深度學(xué)習(xí)訓(xùn)練的輸入?yún)?shù)過(guò)多,從而加大訓(xùn)練的復(fù)雜度;該值過(guò)小,則會(huì)犧牲識(shí)別的準(zhǔn)確性,因?yàn)橛锌赡鼙唤財(cái)嗟膬艉蓛?nèi)容中是包含有流量識(shí)別的特征信息。
3)數(shù)據(jù)集中的分組大小分布。從數(shù)據(jù)集中的分組大小的分布可以看出,分組大小主要分布在頭部(前300 Byte)和尾部(后1 200 Byte~1 500 Byte)。因此,本文從保障準(zhǔn)確性的角度出發(fā),選擇Truncation_len為最大值,即1 500 Byte。
步驟4歸一化(Normalization):為了提升訓(xùn)練的性能,將每個(gè)分組歸一化至0~1。每個(gè)分組大小為0~255,因此每個(gè)分組大小均除以256。
步驟5類(lèi)別不平衡的樣本數(shù)據(jù)集處理。詳述見(jiàn)節(jié)2.2。
步驟6樣本標(biāo)記:根據(jù)流量樣本數(shù)據(jù)集對(duì)數(shù)據(jù)包文件的標(biāo)記。對(duì)PBM進(jìn)行標(biāo)記,可以通過(guò)在矩陣中增加一列用于標(biāo)記每一行,即PBV,也可單獨(dú)建立標(biāo)記向量用于標(biāo)記PBV。
無(wú)論是淺層機(jī)器學(xué)習(xí),還是深度學(xué)習(xí),分類(lèi)識(shí)別研究基礎(chǔ)都是基于一種假設(shè):各種網(wǎng)絡(luò)應(yīng)用流都是均勻分布在網(wǎng)絡(luò)中,即網(wǎng)絡(luò)數(shù)據(jù)流的應(yīng)用類(lèi)別是平衡的。然而,現(xiàn)實(shí)網(wǎng)絡(luò)中各種加密應(yīng)用數(shù)據(jù)流分布很不均衡,比如通過(guò)加密協(xié)議承載的音、視頻流遠(yuǎn)大于即時(shí)通信、純網(wǎng)頁(yè)加密流等。網(wǎng)絡(luò)流類(lèi)別不平衡是指流量樣本數(shù)據(jù)集中存在的類(lèi)別樣本數(shù)量不均衡,通過(guò)訓(xùn)練,這些分類(lèi)算法可能會(huì)忽略少數(shù)類(lèi)別的流樣本導(dǎo)致欠擬合,或重視少數(shù)類(lèi)的差別造成過(guò)擬合[13]。
在進(jìn)行深度學(xué)習(xí)訓(xùn)練之前,本文采用過(guò)抽樣和欠抽樣2種辦法來(lái)處理不平衡數(shù)據(jù)集。對(duì)于比例過(guò)大的樣本采用欠抽樣方法來(lái)減少樣本數(shù)量;對(duì)于比例過(guò)小的樣本采用過(guò)抽樣技術(shù)提高樣本的可分性,拓展分類(lèi)的決策邊界。SMOTE算法是一種隨機(jī)過(guò)抽樣方法,其主要思想是應(yīng)用K-最近鄰方法,在少數(shù)類(lèi)樣本之間利用線(xiàn)性插值生成新的樣本,從而增加少數(shù)類(lèi)樣本的數(shù)量,使數(shù)據(jù)集的類(lèi)別數(shù)量相對(duì)平衡[14]。SMOTE 算法按照一定規(guī)則,利用插值方法合成新樣本有良好的泛化作用,避免了隨機(jī)復(fù)制原有樣本的盲目和局限。沒(méi)有引進(jìn)少數(shù)類(lèi)的冗余信息,擴(kuò)展決策區(qū)域,避免過(guò)擬合問(wèn)題,改善了數(shù)據(jù)集的可分性。
本文所采用的數(shù)據(jù)來(lái)源于“ISCX VPN-non VPN traffic dataset”[15],該數(shù)據(jù)集包括常規(guī)加密和VPN隧道傳輸?shù)?類(lèi)加密應(yīng)用。本文選擇常規(guī)加密流量中的15種應(yīng)用作為訓(xùn)練和測(cè)試的樣本數(shù)據(jù),樣本數(shù)據(jù)集均為PCAP文件格式。為了說(shuō)明不平衡樣本對(duì)性能的影響,同時(shí)給出了平衡樣本,詳細(xì)描述見(jiàn)表1。從表1可以看出,不平衡樣本中比例最高的netflix可以達(dá)到27.701%,比例最少的aim_chat僅有0.663%;對(duì)于樣本量少的類(lèi)別采用SMOTE過(guò)抽樣方法,而對(duì)于樣本量多的類(lèi)別采用欠抽樣方法,通過(guò)這2種方式預(yù)處理之后可以看出,樣本基本都在5%~8%。
表1 樣本數(shù)據(jù)集描述
根據(jù)第1節(jié)所述的SAE模型的訓(xùn)練過(guò)程,可將基于SAE的加密流量識(shí)別模型的搭建和訓(xùn)練分為2大階段:第一階段是SAE的訓(xùn)練過(guò)程,這一深度學(xué)習(xí)訓(xùn)練過(guò)程是無(wú)監(jiān)督的,稱(chēng)之為SAE訓(xùn)練過(guò)程;第二階段是將訓(xùn)練好的SAE與分類(lèi)輸出相連,完成一個(gè)基于MLP的分類(lèi)模型的訓(xùn)練,這一階段是有監(jiān)督的,稱(chēng)之為SAE分類(lèi)器訓(xùn)練過(guò)程?;谏鲜龅?個(gè)訓(xùn)練過(guò)程,本文所提出的SAE模型架構(gòu)也分為2個(gè)部分:SAE訓(xùn)練過(guò)程和SAE分類(lèi)器訓(xùn)練過(guò)程。
如圖3所示,第一階段,SAE訓(xùn)練過(guò)程中由3個(gè)自動(dòng)編碼器堆疊而成。
圖3 SAE模型架構(gòu)
訓(xùn)練過(guò)程分為如下幾步:
Z=∑WY+b
(3)
計(jì)算后得到的結(jié)果采用ReLu作為激活函數(shù),其公式表示如下:
ReLU(Z)=max[0,Z]
(4)
輸出層與輸入層相同,由1 500個(gè)神經(jīng)元構(gòu)成。定義損失函數(shù)為MSE,為盡可能減少重構(gòu)誤差,實(shí)質(zhì)上就是最小化輸入與輸出的誤差,假設(shè)n為輸出神經(jīng)元個(gè)數(shù),則定義如下:
(5)
在反向傳播的過(guò)程中,采用隨機(jī)梯度下降(Stochastic gradient descent,SGD)算法更新權(quán)值W、偏置b以最小化損失函數(shù),計(jì)算公式如下:
(6)
(7)
其中,ρ為學(xué)習(xí)速率。
第1階段整體處理過(guò)程總結(jié)見(jiàn)算法1,即SAE模型訓(xùn)練算法。
算法1SAE模型訓(xùn)練算法
輸入Y={y1,y2,…,yk},k=1 500,即PBV
1.設(shè)定相關(guān)初始化參數(shù)。激活函數(shù)α= ReLU; е為訓(xùn)練周期,即epoches;τ為mini_batch的大小;
2.for t from 1 to e do
3.for each τ do
4.針對(duì)每一個(gè)流量樣本y∈Y,執(zhí)行如下步驟:
5.前向傳播:計(jì)算式(3);
6.激活函數(shù):計(jì)算式(4);
7.計(jì)算損失函數(shù)并最小化:計(jì)算式(5);
8.反向傳播更新權(quán)值:計(jì)算式(6)和式(7);
9.end for
10.end for
第2個(gè)階段是SAE分類(lèi)器訓(xùn)練過(guò)程,如圖3所示,由1個(gè)輸入層、3個(gè)隱藏層和1個(gè)輸出層構(gòu)成,訓(xùn)練過(guò)程分為如下6步:
步驟1輸入數(shù)據(jù)采用第2.1節(jié)所描述的數(shù)據(jù)預(yù)處理后所得到的PBV,訓(xùn)練數(shù)據(jù)輸入維度為1 500,即輸入為1 500個(gè)神經(jīng)元。
步驟23個(gè)隱藏層分別使用SAE模型中訓(xùn)練好的Autoencoder1、Autoencoder2和Autoencoder3,神經(jīng)元個(gè)數(shù)分別為740、92和32,對(duì)輸入數(shù)據(jù)進(jìn)行加權(quán)、偏置,見(jiàn)式(3)。
步驟3計(jì)算后得到的結(jié)果均采用ReLu作為激活函數(shù),見(jiàn)式(4)。
(8)
步驟5在模型訓(xùn)練過(guò)程中,采用交叉熵作為損失函數(shù),假設(shè)L表示損失函數(shù),則定義如下:
(9)
步驟6在反向傳播的過(guò)程中,同樣采用SGD算法更新權(quán)值W、偏置b以最小化損失函數(shù),見(jiàn)式(6)和式(7)。
第2階段整體處理過(guò)程總結(jié)見(jiàn)算法2,即SAE分類(lèi)模型訓(xùn)練算法。
算法2SAE分類(lèi)模型訓(xùn)練算法
輸入Y={y1,y2,…,yk},k=1 500,即PBV
1.設(shè)定相關(guān)初始化參數(shù)。隱藏層激活函數(shù)α= ReLU; 分類(lèi)激活函數(shù)s = Softmax;е為訓(xùn)練周期,即epoches;τ為mini_batch的大小;
2.for t from 1 to e do
3.for each τ do
4.針對(duì)每一個(gè)流量樣本y∈Y,執(zhí)行如下步驟:
5.前向傳播:計(jì)算式(3);
6.激活函數(shù):計(jì)算式(4);當(dāng)?shù)竭_(dá)輸出層時(shí),計(jì)算式(8);
7.計(jì)算損失函數(shù)并最小化:計(jì)算式(9);
8.反向傳播更新權(quán)值:計(jì)算式(6)和式(7);
9.end for
10.end for
為了測(cè)試并對(duì)比SAE的流量識(shí)別性能,本文選擇最基本的深度學(xué)習(xí)模型——MLP來(lái)與之對(duì)比,實(shí)驗(yàn)環(huán)境參數(shù)見(jiàn)表2。本文設(shè)計(jì)了一個(gè)簡(jiǎn)單的MLP模型用于加密流量識(shí)別,模型采用1個(gè)輸入層,1 500個(gè)神經(jīng)元;2個(gè)隱藏層,分別為128和32個(gè)神經(jīng)元,激活函數(shù)為ReLU;1個(gè)輸出層,15個(gè)神經(jīng)元,激活函數(shù)為Softmax用于分類(lèi)。
表2 實(shí)驗(yàn)環(huán)境參數(shù)
在訓(xùn)練過(guò)程中,將數(shù)據(jù)集隨機(jī)的分成2部分:一部分是訓(xùn)練集,占比為60%;剩下的40%為測(cè)試集。深度學(xué)習(xí)的模型訓(xùn)練過(guò)程中所采用的優(yōu)化器、損失函數(shù)、epoches以及mini_batch等參數(shù)信息見(jiàn)表3。
表3 模型訓(xùn)練參數(shù)設(shè)置
圖4為SAE模型的訓(xùn)練過(guò)程中準(zhǔn)確率和損失率的變化趨勢(shì)??梢钥闯?在200個(gè)訓(xùn)練周期中,SAE模型的準(zhǔn)確率穩(wěn)定攀升,直至0.99,最后趨于穩(wěn)定;而損失率持續(xù)下降并趨于穩(wěn)定。
圖4 訓(xùn)練過(guò)程中的準(zhǔn)確率和損失率變化曲線(xiàn)
為了評(píng)估模型的性能,本文采用以下2類(lèi)指標(biāo):
1)精確率和召回率
誤報(bào)(False Positive,FP)是指非類(lèi)別C(C指代一個(gè)特定的類(lèi)別)的流量被分類(lèi)成為類(lèi)別C;真陰性(True Negative,TN)是指非類(lèi)別C的流被分成非類(lèi)別C;漏報(bào)(False Negative,FN)是指屬于類(lèi)別C的流量被分類(lèi)為非類(lèi)別C;真陽(yáng)性(True Positive,TP)是指屬于類(lèi)別C的流量而被分類(lèi)成類(lèi)別C。
精確率(Precision)和召回率(Recall)計(jì)算如下:
(10)
(11)
2)F1-Score
F1-Score是精確率和召回率加權(quán)調(diào)和平均,用于綜合反映整體的指標(biāo)[18],最常見(jiàn)的F1-Score計(jì)算公式為:
(12)
為了驗(yàn)證不平衡數(shù)據(jù)集與平衡數(shù)據(jù)集對(duì)分類(lèi)性能的影響,本文分別用節(jié)2.2中所描述2種數(shù)據(jù)集,采用基于MLP的深度學(xué)習(xí)方法進(jìn)行模型訓(xùn)練和測(cè)試,得出的分類(lèi)混淆矩陣如圖5所示。在該矩陣中,對(duì)角線(xiàn)上的元素代表分類(lèi)正確的樣本數(shù)量,其他元素均為誤判??梢苑浅C黠@地看出,圖5(a)中有不少分類(lèi)錯(cuò)誤的樣本,而圖5(b)中分類(lèi)性能較好??梢钥闯?不平衡數(shù)據(jù)集對(duì)于分類(lèi)器的性能有直接的影響,因此本文中后續(xù)的實(shí)驗(yàn)均基于第2.2節(jié)所描述的平衡數(shù)據(jù)集,以期最大程度上減少對(duì)分類(lèi)性能的影響。
圖5 基于平衡、不平衡數(shù)據(jù)集的MLP識(shí)別方法混淆矩陣
圖6展示了基于平衡數(shù)據(jù)集訓(xùn)練出來(lái)的MLP和SAE 2種加密流量識(shí)別方法的分類(lèi)混淆矩陣。從對(duì)角線(xiàn)上的元素?cái)?shù)量,也即分類(lèi)正確的樣本數(shù)量來(lái)看,基于SAE的分類(lèi)方法要高于MLP方法。比如,對(duì)于aim_chat與ICQ這2種加密應(yīng)用而言,因均為聊天類(lèi)的應(yīng)用,所以流量特征方面較為相近,容易造成誤判。在MLP識(shí)別方法中,aim_chat被誤判為ICQ的樣本數(shù)量高達(dá)174,已接近測(cè)試集的10%;而在SAE識(shí)別方法中,aim_chat被誤判為ICQ的樣本數(shù)量?jī)H為59,大致為測(cè)試集的3%。
圖6 基于SAE、MLP的加密流量識(shí)別方法混淆矩陣
從混淆矩陣中還不能直觀(guān)的反映出2種方法的分類(lèi)性能,圖7和圖8分別展示了MLP和SAE 2種加密流量識(shí)別方法在精確度、召回率和F1-Score 3個(gè)指標(biāo)上的對(duì)比。雖然基于MLP的加密流量識(shí)別方法顯示出比較好的性能,但可以明顯看出,在aim_chat、Facebook、hangout和ICQ這4種流量特征相近的即時(shí)通信類(lèi)加密應(yīng)用的分類(lèi)性能上,有比較大的差距。而圖8所展示出的基于SAE的加密流量識(shí)別方法則展示出了很好的分類(lèi)性能。從表4中更能清晰地看到每一種加密應(yīng)用的3項(xiàng)指標(biāo),尤其是總體指標(biāo),可以看出,基于SAE的加密流量識(shí)別方法在分類(lèi)精度、召回率和F1-Score 3項(xiàng)指標(biāo)均達(dá)到99%,高于基于MLP的加密流量識(shí)別方法的指標(biāo)(96%),顯示出了優(yōu)秀的分類(lèi)性能。
圖7 基于MLP方法的精度、召回率和F1-Score
圖8 基于SAE方法的精度、召回率和F1-Score
表4 SAE、MLP的精確度、召回率和F1-Score
本文提出一種基于SAE的深度學(xué)習(xí)方法對(duì)加密應(yīng)用流量進(jìn)行分類(lèi)識(shí)別,利用SAE的無(wú)監(jiān)督特性及在數(shù)據(jù)降維方面的優(yōu)勢(shì),并結(jié)合MLP的有監(jiān)督分類(lèi)學(xué)習(xí),實(shí)現(xiàn)對(duì)加密流量的準(zhǔn)確識(shí)別。同時(shí)考慮到樣本數(shù)據(jù)集的類(lèi)別不平衡性對(duì)分類(lèi)精度的影響,本文采用SMOTE過(guò)抽樣方法對(duì)不平衡數(shù)據(jù)集進(jìn)行處理。實(shí)驗(yàn)結(jié)果表明,該方法在樣本數(shù)據(jù)集類(lèi)別平衡的情況下識(shí)別精確度和召回率可以達(dá)到99%。在未來(lái)工作中,將進(jìn)一步減少訓(xùn)練參數(shù),并研究采用非監(jiān)督的方式對(duì)加密應(yīng)用實(shí)現(xiàn)準(zhǔn)確識(shí)別。