宋曉麗,張勇波,張培穎
(1.中國石油大學(華東)信息化建設處,山東 青島 266580; 2.中國石油大學(華東)計算機與通信工程學院,山東 青島 266580)
隨著互聯(lián)網(wǎng)技術的發(fā)展以及高校數(shù)字化建設進程的加快,大多數(shù)高校已經(jīng)建成自己的校園一卡通系統(tǒng),學生利用校園卡可以在校園內(nèi)任意商戶進行消費[1-2]。隨著校園卡應用場景和消費流水的不斷增加,校園一卡通系統(tǒng)的資金安全問題日益突出,校園卡欺詐問題越來越引起人們的重視[3-4]。
校園卡欺詐問題可以歸結為學生消費數(shù)據(jù)的異常檢測問題,目前有關異常檢測的算法研究較多,主要分為3類:基于監(jiān)督學習的異常檢測算法、基于半監(jiān)督學習的異常檢測算法和基于無監(jiān)督學習的異常檢測算法。許多消費數(shù)據(jù)異常檢測算法采用監(jiān)督式的方法[5-6],但監(jiān)督式的方法需要確定已知數(shù)據(jù)屬于正常數(shù)據(jù)還是異常數(shù)據(jù),對數(shù)據(jù)標簽的準確性要求較高且無法檢測訓練數(shù)據(jù)中未曾出現(xiàn)的異常行為。無監(jiān)督式的方法僅利用數(shù)據(jù)自身的內(nèi)部統(tǒng)計特征進行檢測,檢測過程中需要進行大量的計算,檢測效率較為低下[7-8]。半監(jiān)督式的方法利用數(shù)據(jù)的標簽信息,檢測效率要高于無監(jiān)督式的方法,且由于利用了數(shù)據(jù)自身的統(tǒng)計特征可以檢驗先驗未知的異常行為[9-10]。
然而,學生消費數(shù)據(jù)具有明顯的時間序列數(shù)據(jù)的特征,傳統(tǒng)的機器學習方法難以對這種時間序列特征進行建模,這使得傳統(tǒng)機器學習方法提取特征的效果并不理想。由于深度學習方法可以提取數(shù)據(jù)深層次的特征,隨著近幾年深度學習的發(fā)展,利用深度學習進行消費數(shù)據(jù)異常檢測得到了廣泛的應用[11-13],在眾多深度學習模型中,門控循環(huán)單元(Gated Recurrent Unit, GRU)具有強大的時序建模能力,能夠有效處理時間序列數(shù)據(jù)[14]。此外,自編碼器具有強大的隱特征學習能力,可以提取數(shù)據(jù)更高維度的特征[15]。
根據(jù)上述特性,本文提出一種基于半監(jiān)督學習的時間序列數(shù)據(jù)異常檢測方法以實現(xiàn)學生消費數(shù)據(jù)的異常檢測。本文主要貢獻如下:
1)提出一種基于改進自編碼器的時序數(shù)據(jù)重構模型。首先通過添加高斯噪聲對原始數(shù)據(jù)進行數(shù)據(jù)增強,然后利用GRU替換自編碼器中的前饋神經(jīng)網(wǎng)絡進行時間序列數(shù)據(jù)的重構。
2)提出一種基于重構誤差的異常檢測器。首先計算重構誤差,然后利用馬氏距離計算誤差分數(shù),最后計算Fβ-分數(shù)確定誤差閾值,進行異常數(shù)據(jù)的檢測。
3)利用所提方法對校園消費數(shù)據(jù)進行異常檢測實驗,并與多個已有算法進行對比,以驗證所提方法的有效性及優(yōu)越性。
基于監(jiān)督式學習方法的異常檢測由于應用了數(shù)據(jù)的標簽信息,與無監(jiān)督式的方法相比,具有更高的檢測精度和檢測效率,其主要思想是通過訓練數(shù)據(jù)學習正常數(shù)據(jù)跟異常數(shù)據(jù)的分類邊界,以實現(xiàn)區(qū)分正常數(shù)據(jù)跟異常數(shù)據(jù)的目的。
黃勇新[16]在深度森林的基礎上添加了基學習器,并提出了一種綜合采樣方法,將AUC作為評價級聯(lián)性能以及控制級聯(lián)增長的標準,構建了一個信用卡欺詐檢測模型,實驗結果表明該模型在信用卡欺詐數(shù)據(jù)集上較之于其他模型具有優(yōu)秀的綜合性能。李兆桐等人[17]利用LSTM神經(jīng)網(wǎng)絡構建工業(yè)互聯(lián)網(wǎng)設備狀態(tài)的預測模型,實驗結果表明了所提方法的有效性。Kiran等人[18]利用樸素貝葉斯改進了k近鄰分類方法進行消費數(shù)據(jù)異常檢測,實驗結果表明了所提方法的優(yōu)越性能。
基于半監(jiān)督學習方法的異常檢測由于應用了數(shù)據(jù)的標簽信息,檢測效率要高于無監(jiān)督學習方法,其基本思想是利用不含異常的數(shù)據(jù)進行訓練,學得正常數(shù)據(jù)的判別邊界,在測試過程中,不在判別邊界范圍內(nèi)的數(shù)據(jù)被劃分為異常數(shù)據(jù)。
Akcay等人[19]利用生成式對抗網(wǎng)絡進行數(shù)據(jù)的重構將距離訓練數(shù)據(jù)較遠的點判定為異常。唐海賢等人[20]針對到達服務器端的傳感器數(shù)據(jù)流提出了一種基于卷積神經(jīng)網(wǎng)絡和長短時記憶網(wǎng)絡的半監(jiān)督在線異常檢測算法,實驗結果表明,與多種算法相比,所提算法效果更優(yōu)。郝怡然等人[21]提出了一種基于t-SNE算法的NLOF網(wǎng)絡流量異常檢測算法,實驗結果表明了所提算法有更優(yōu)越的檢測性能。
基于無監(jiān)督學習方法的異常檢測僅利用數(shù)據(jù)的內(nèi)部特性來檢測異常值,要求在隱空間里正常數(shù)據(jù)跟異常數(shù)據(jù)是可以區(qū)分的。
張晨旭等人[22]利用自編碼器對正常聲音數(shù)據(jù)進行重建,利用重建誤差進行異常檢測,實驗結果表明,所提方法能夠提升對機器異常聲音的檢測效果。張聰?shù)热薣23]提出了一種基于多變量耦合網(wǎng)絡與變分圖自編碼器的異常檢測方法,提高了系統(tǒng)異常檢測的準確性和可靠性。孫遠等人[24]結合K-means算法與智能蝙蝠算法進行網(wǎng)絡流量數(shù)據(jù)的異常檢測,實驗結果表明了聚類準確率、耗時、誤報率方面要明顯優(yōu)于傳統(tǒng)的K-means算法。
本文所提的基于半監(jiān)督學習的學生消費數(shù)據(jù)異常檢測方法示意圖如圖1所示。
圖1 所提方法示意圖
總體而言,首先將沒有異常的訓練數(shù)據(jù)利用改進的自編碼器模型進行數(shù)據(jù)的重構,之后利用重構數(shù)據(jù)和原始數(shù)據(jù)計算異常分數(shù),利用基于重構誤差的異常檢測算法檢測含有異常的測試數(shù)據(jù)中的異常。
為了對學生消費數(shù)據(jù)的時序性建模,參考CHO[25]和MALHOTRA[26]的方法,利用GRU對時間序列數(shù)據(jù)中時間間隔較長的依賴關系的建模能力,用其替換自編碼器中的前饋神經(jīng)網(wǎng)絡,結構如圖2所示。
圖2 基于改進自編碼器的時序數(shù)據(jù)重構模型
本文提出的時序數(shù)據(jù)重構模型分為6個部分,分別為數(shù)據(jù)增強、增強數(shù)據(jù)序列、時序數(shù)據(jù)編碼器、GRU單元、時序數(shù)據(jù)解碼器和重構數(shù)據(jù)序列。
首先對原始學生消費數(shù)據(jù)X進行數(shù)據(jù)增強,通過添加高斯噪聲,提高模型準確率。
X′=X+α×σ2×randn(m)
(1)
其中,α為噪聲比例,σ2為原始數(shù)據(jù)的方差,m為原始數(shù)據(jù)的長度,randn(m)可以產(chǎn)生m條服從標準正態(tài)分布的數(shù)據(jù)。
之后將增強后的數(shù)據(jù)按長度為n的窗口劃分序列。
st=[xt-n+1,xt-n+2,…,xt]
(2)
其中xi∈X,st表示結束時間為t的原始數(shù)據(jù)序列。
隨后將劃分后的每一個原始數(shù)據(jù)序列作為時序數(shù)據(jù)編碼器的輸入進行編碼。
et=encoder(st)
(3)
編碼后的數(shù)據(jù)經(jīng)過中間的GRU層。
e′t=GRU(et)
(4)
將GRU的輸出作為解碼器的輸入進行解碼,得到對原始數(shù)據(jù)序列的重構。
s′t=decoder(e′t)
(5)
通過最小化重構誤差(如均方誤差)進行訓練。
min(loss(st,s′t))=min(‖st-s′t‖2)
(6)
本節(jié)介紹一種基于重構誤差的時間序列異常檢測器,其處理流程如圖3所示。
圖3 基于重構誤差的異常檢測器
首先,將原始學生消費數(shù)據(jù)分為2個部分,不含有異常數(shù)據(jù)的訓練數(shù)據(jù)和含有異常數(shù)據(jù)的測試數(shù)據(jù),之后利用前一節(jié)提出的基于改進自編碼器的時序數(shù)據(jù)重構模型將訓練數(shù)據(jù)進行數(shù)據(jù)重構,利用極大似然估計法將重構誤差擬合為正態(tài)分布;之后,計算測試數(shù)據(jù)跟重構測試數(shù)據(jù)之間的誤差,利用馬氏距離計算測試數(shù)據(jù)的重構誤差分數(shù);利用Fβ-分數(shù)確定異常檢測的閾值;最后,測試數(shù)據(jù)中重構誤差分數(shù)超過異常檢測閾值的數(shù)據(jù)被判定為異常數(shù)據(jù)。
(7)
2)將重構誤差擬合為正態(tài)分布函數(shù)。假設正常數(shù)據(jù)的重構誤差服從正態(tài)分布N=N(μ,σ2) ,采用極大似然估計法,去估計均值μ和方差σ2的值:
(8)
(9)
3)利用馬氏距離計算異常檢測的誤差分數(shù)。計算公式如下:
(10)
4)利用Fβ-分數(shù)確定誤差閾值:
η=max(Fβ)
(11)
本文采用某高校的學生校園卡消費記錄,共有85433條數(shù)據(jù)并對數(shù)據(jù)按照式(12)進行標準化處理。
(12)
其中Xstad為標準化后的數(shù)據(jù),X為原始數(shù)據(jù),μ、σ分別為原始數(shù)據(jù)的均值與標準差。
取70%作為算法的訓練數(shù)據(jù),剩余30%作為算法的測試數(shù)據(jù)。
共開展2組對比實驗:
1)與其他半監(jiān)督檢測方法對比。首先,將所提數(shù)據(jù)重構模型與循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN )[27]、長短期記憶網(wǎng)絡(Long Short-Term Memory,LSTM )[28]、GRU這3個已有深度學習模型進行對比,驗證所提時間序列數(shù)據(jù)重構算法的有效性;之后,面向時間序列異常檢測,利用重構誤差進行異常檢測,以驗證模型整體的異常檢測性能。
2)與監(jiān)督學習方法和無監(jiān)督學習方法對比。與基于監(jiān)督學習方法的SVM分類算法和基于無監(jiān)督學習方法的孤立森林(Isolation Forest, iForest)[29]算法分別進行異常檢測實驗對比,以驗證所提方法的檢測性能。
對于時間序列數(shù)據(jù)重構問題,采用最大誤差(Max Error, ME)、均方誤差(Mean Squre Error, MSE)、平均絕對誤差(Mean Absolute Error, MAE)作為數(shù)據(jù)重構誤差衡量指標,各定義如下所示:
(13)
(14)
(15)
對于異常檢測問題,采用查準率(Precision, P)、查全率(Recall, R)、F1-分數(shù)(F1-Socre,F1)這3個評價指標來衡量所提方法的學生消費數(shù)據(jù)異常檢測性能,表達式如下:
(16)
(17)
(18)
其中,TP表示將正常數(shù)據(jù)預測為正常的數(shù)目,真實為正常,預測也為正常;FP表示將異常數(shù)據(jù)預測為正常的數(shù)目,真實為異常,預測為正常;FN表示將正常數(shù)據(jù)預測為異常的數(shù)目,真實為正常,預測為異常。
第一組實驗結果如圖4及表1、表2所示。
圖4 算法收斂性對比
表1 半監(jiān)督數(shù)據(jù)重構誤差對比
表2 半監(jiān)督異常檢測性能對比
由圖4及表1、表2可得以下結論:
1)對于數(shù)據(jù)重構實驗,所提方法在第100次迭代左右收斂,LSTM與GRU在第150次迭代左右收斂,RNN在第175次迭代左右收斂。所提方法收斂速度要快于2個對比方法,且能收斂到更低的損失處。
2)對于數(shù)據(jù)重構實驗,所提方法在ME、MSE、MAE這3個指標上的表現(xiàn)均要優(yōu)于其他3個對比算法,ME平均降低18.34%,MSE平均降低24.46%,MAE平均降低27.12%。在第一部分實驗結果表明,本文所提的數(shù)據(jù)重構模型時序數(shù)據(jù)重構是可行的,并且相較其他模型可以得到更好的精度。
3)對于數(shù)據(jù)異常檢測實驗,所提方法在查準率、查全率、F1-分數(shù)3個指標上的表現(xiàn)均要優(yōu)于其他3個對比算法,查準率平均提高3.87%,查全率平均提高13.74%,F(xiàn)1-分數(shù)平均提高8.27%。
4)數(shù)據(jù)重構實驗表明本文所提的時間序列數(shù)據(jù)重構算法可以更有效地提取學生正常消費數(shù)據(jù)的特征,進而可以更準確地確定誤差閾值,從而在異常檢測實驗中可以取得更佳的檢測性能。
第二組實驗結果如表3、表4所示,由于監(jiān)督學習的方法與無監(jiān)督學習的方法不需要進行數(shù)據(jù)的重構以及數(shù)據(jù)重構誤差的計算,故僅列出對比方法與所提方法的異常檢測實驗結果。
表3 監(jiān)督、無監(jiān)督異常檢測性能對比
表4 監(jiān)督、無監(jiān)督異常檢測運行速度對比
由表3、表4可得以下結論:
1)所提方法在查準率、查全率、F1-分數(shù)3個指標上的表現(xiàn)均要優(yōu)于SVM和iForest算法,與SVM相比,查準率提高7.70%,查全率提高11.28%,F(xiàn)1-分數(shù)提高9.30%;與iForest相比,查準率提高2.45%,查全率提高3.61%,F(xiàn)1-分數(shù)提高2.97%。
2)所提方法在運行速度上要快于iForest方法,但慢于SVM方法,與iForest方法相比,運行速度是其193.76%,與SVM方法相比,速度僅為其57.50%。
3)所提方法在檢測準確率上要高于監(jiān)督學習方法SVM和無監(jiān)督學習方法iForest,在檢測速度上要快于iForest方法,但慢于SVM方法。這是因為監(jiān)督式的方法需要已知數(shù)據(jù)屬于正常數(shù)據(jù)還是異常數(shù)據(jù),對數(shù)據(jù)標簽的準確性要求較高且無法檢測訓練數(shù)據(jù)中未曾出現(xiàn)的異常行為,但由于利用了數(shù)據(jù)的標簽,檢測速度較快;無監(jiān)督式的方法僅利用數(shù)據(jù)自身的內(nèi)部統(tǒng)計特征進行檢測,可以檢測訓練數(shù)據(jù)中未曾出現(xiàn)的異常行為,但檢測過程中需要進行大量的計算,檢測效率較為低下;半監(jiān)督式的方法利用了數(shù)據(jù)的標簽信息,檢測效率要高于無監(jiān)督式的方法,且由于利用了數(shù)據(jù)自身的統(tǒng)計特征可以檢驗先驗未知的異常行為,在檢測性能方面又要優(yōu)于監(jiān)督式的方法。
上述實驗結論表明,本文所提基于半監(jiān)督學習的學生消費數(shù)據(jù)異常檢測方法能夠有效提升學生消費數(shù)據(jù)的異常檢測效果。
本文針對學生消費數(shù)據(jù)的異常檢測問題,提出了一種基于半監(jiān)督學習的學生消費數(shù)據(jù)異常檢測方法,此方法包含2個部分:一是基于改進自編碼器的時序數(shù)據(jù)重構模型;二是基于重構誤差的異常檢測器。首先,利用改進的自編碼器對原始數(shù)據(jù)進行重構。然后,根據(jù)訓練數(shù)據(jù)的重構誤差確定異常閾值,利用異常檢測器對異常進行檢。最后,在某高校學生校園卡的消費數(shù)據(jù)上進行異常檢測,實驗的結果表明所提異常檢測方法可以提高學生消費數(shù)據(jù)的異常檢測性能。
但是,本文工作仍存在以下不足:半監(jiān)督式的檢測方法在檢測速度上要明顯慢于監(jiān)督式的方法,在數(shù)據(jù)量較大時可能無法滿足任務的實時性要求,故在未來的研究中將重點從提高方法的運行速度上對所提方法進行優(yōu)化。