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