郝曉培,朱建生,單杏花
(中國(guó)鐵道科學(xué)研究院,北京 100081)
高速鐵路以及鐵路信息化技術(shù)的快速發(fā)展,為旅客的出行、購(gòu)票等提供了極大的便利。目前鐵路12306互聯(lián)網(wǎng)售票系統(tǒng)售票量占全渠道的80%以上,日均售票量超過(guò)千萬(wàn),已成為全球最大的票務(wù)系統(tǒng)。然而節(jié)假日運(yùn)力資源緊張,旅客“一票難求”的情況依然存在,從而衍生出一批線上黃牛利用互聯(lián)網(wǎng)法律法規(guī)不健全的漏洞以及高效的云資源,囤積大量黑產(chǎn)賬戶進(jìn)行搶票、囤票、倒票等不正當(dāng)?shù)姆绞街\取利益。為了維護(hù)客運(yùn)購(gòu)票場(chǎng)景的公平公正以及系統(tǒng)的安全穩(wěn)定,客運(yùn)團(tuán)隊(duì)研發(fā)并上線了風(fēng)控系統(tǒng),采用實(shí)時(shí)行為分析以及基于行為特征進(jìn)行有監(jiān)督的用戶分類的方式,識(shí)別出了大量的異常購(gòu)票行為,進(jìn)行不同策略的卡控,取得了明顯的效果。不僅僅在鐵路客運(yùn),其他互聯(lián)網(wǎng)行業(yè)也存在黑產(chǎn)用戶非法活動(dòng),故國(guó)內(nèi)外針對(duì)黑產(chǎn)用戶識(shí)別進(jìn)行了大量的研究。在用戶個(gè)體特征領(lǐng)域,周亮謹(jǐn)?shù)热薣1]基于購(gòu)票流程中主要購(gòu)票行為為用戶特征,基于樸素貝葉斯分類算法構(gòu)建行為分類器,實(shí)現(xiàn)異常用戶識(shí)別,運(yùn)行效率和準(zhǔn)確率均滿足需要。Moh等人[2]構(gòu)建Twitter用戶的相關(guān)特征,構(gòu)建特征矩陣計(jì)算用戶信任度,從而識(shí)別異常用戶。在社交網(wǎng)絡(luò)領(lǐng)域,宋艷紅[3]利用G-N社區(qū)發(fā)現(xiàn)算法以及粗糙集理論計(jì)算用戶特征權(quán)重以及特征信用值,并構(gòu)建用戶可行度,從而識(shí)別異常用戶。Din I U等人[4]基于社交網(wǎng)絡(luò)自身的拓?fù)浣Y(jié)構(gòu),對(duì)類似社交網(wǎng)絡(luò)中的異常郵件進(jìn)行識(shí)別。仲麗君等人[5]介紹了當(dāng)前基于社交網(wǎng)絡(luò)進(jìn)行異常用戶識(shí)別的方式,包括分類、聚類、統(tǒng)計(jì)、信息論、混合、圖等六大類,并對(duì)各類方法進(jìn)行了對(duì)比。
基于個(gè)體特征的異常用戶識(shí)別,忽略了個(gè)體間的社會(huì)關(guān)系,無(wú)法完整描述用戶特征,社區(qū)發(fā)現(xiàn)也只關(guān)注局部的拓?fù)浣Y(jié)構(gòu),沒(méi)有很好利用每個(gè)節(jié)點(diǎn)的語(yǔ)義信息,均存在一定的局限性。為了進(jìn)一步完善用戶特征表示,該文在研究鐵路客運(yùn)售票業(yè)務(wù)的基礎(chǔ)上,構(gòu)造了旅客個(gè)體特征以及社交關(guān)系網(wǎng)絡(luò),利用圖神經(jīng)網(wǎng)絡(luò)充分融合個(gè)體特征及社交關(guān)系特征,構(gòu)建特征向量,以提高識(shí)別異常用戶的準(zhǔn)確率。
為了提高黑產(chǎn)用戶識(shí)別準(zhǔn)確率,該文提出了一種基于旅客個(gè)體特征及旅客社交關(guān)系的黑產(chǎn)用戶識(shí)別模型,其總體流程如圖1所示。
圖1 模型總體方案流程
主要包括特征構(gòu)建、圖嵌入向量表示以及黑產(chǎn)用戶識(shí)別等。
(1)特征構(gòu)建。
圖數(shù)據(jù)中同時(shí)包含兩部分信息:實(shí)體特征屬性和實(shí)體之間的關(guān)系[6]。其中屬性信息描述圖中個(gè)體節(jié)點(diǎn)的固有特征,對(duì)應(yīng)鐵路旅客的出行及購(gòu)票特征;結(jié)構(gòu)信息描述了個(gè)體之間的關(guān)聯(lián)性質(zhì),對(duì)應(yīng)鐵路旅客之間的購(gòu)票關(guān)系以及同行關(guān)系[7]。
綜合考慮鐵路購(gòu)票系統(tǒng)以及其他出行服務(wù)數(shù)據(jù)的復(fù)雜性、多樣性以及安全性,實(shí)現(xiàn)了對(duì)不同系統(tǒng),不同類型數(shù)據(jù)進(jìn)行獲取、轉(zhuǎn)碼、清洗、入庫(kù)、關(guān)聯(lián)等處理,從時(shí)間、空間等兩個(gè)維度構(gòu)建用戶特征體系[8]。
鐵路旅客之間的購(gòu)票關(guān)系以及同行關(guān)系代表了鐵路旅客的社交關(guān)系,通過(guò)分析具有鐵路同出行社交關(guān)系的旅客具有相似度較高的出行特征,比如:常駐地、出行目的等,同時(shí)旅客的特征除了跟自身的購(gòu)票及出行特征有關(guān)之外,還與其有同行關(guān)系或購(gòu)票關(guān)系相關(guān)的旅客特征有關(guān)系,這里基于鐵路購(gòu)票及出行社交關(guān)系構(gòu)建旅客社交關(guān)系網(wǎng)絡(luò),如圖2所示。
圖2 關(guān)系網(wǎng)絡(luò)構(gòu)建
(2)圖嵌入向量表示。
基于旅客個(gè)體特征以及關(guān)系網(wǎng)絡(luò)生成的數(shù)據(jù)組成了非歐氏數(shù)據(jù)集,無(wú)法采用傳統(tǒng)的方式進(jìn)行處理,而圖神經(jīng)網(wǎng)絡(luò)是針對(duì)典型的不具備規(guī)則空間結(jié)構(gòu)的非歐氏數(shù)據(jù)類型進(jìn)行深度學(xué)習(xí)而發(fā)展起來(lái)的,可以挖掘出節(jié)點(diǎn)之間的關(guān)系特征[9],故這里采用圖神經(jīng)網(wǎng)絡(luò)對(duì)旅客特征進(jìn)行處理。其主要采用一定的方法對(duì)旅客社交網(wǎng)絡(luò)中的旅客節(jié)點(diǎn)進(jìn)行向量表示,隨著節(jié)點(diǎn)自身特征、鄰居節(jié)點(diǎn)的特征的更新以及圖形拓?fù)浣Y(jié)構(gòu)的變化得到最終的表示向量,該特征向量保留原始圖的結(jié)構(gòu)和節(jié)點(diǎn)屬性信息。
(3)黑產(chǎn)用戶識(shí)別。
該文主要采用無(wú)核二次曲面支持向量機(jī)作為黑產(chǎn)用戶識(shí)別模型,該模型可在原空間中使用非線性二次曲面對(duì)樣本進(jìn)行直接分類,避免了核函數(shù)結(jié)構(gòu)以及參數(shù)的選擇,提高了模型的效率及可用性,該模型將圖嵌入向量成特征向量作為樣本的輸入,實(shí)現(xiàn)黑產(chǎn)用戶識(shí)別。
本節(jié)主要基于旅客個(gè)體特征及關(guān)系網(wǎng)絡(luò)通過(guò)圖神經(jīng)網(wǎng)絡(luò)模型進(jìn)行特征向量表示。其核心思想是通過(guò)學(xué)習(xí)一個(gè)對(duì)鄰居頂點(diǎn)進(jìn)行聚合表示的函數(shù)來(lái)產(chǎn)生目標(biāo)頂點(diǎn)的embedding向量[10]。
(1)算法流程。
目前鐵路12306互聯(lián)網(wǎng)售票系統(tǒng)已有6億注冊(cè)用戶,每年出行人次達(dá)到30億,購(gòu)票及同行關(guān)系復(fù)雜,其旅客社交網(wǎng)絡(luò)組成了規(guī)模較大的圖數(shù)據(jù),其子圖的節(jié)點(diǎn)數(shù)存在呈指數(shù)級(jí)增長(zhǎng)的問(wèn)題,同時(shí)也存在部分度非常大的超級(jí)節(jié)點(diǎn),導(dǎo)致進(jìn)行全圖訓(xùn)練的時(shí)間代價(jià)、計(jì)算代價(jià)以及存儲(chǔ)代價(jià)不可控。為了解決該問(wèn)題,該文針對(duì)GraphSAGE[11]模型進(jìn)行訓(xùn)練,該模型從聚合鄰居節(jié)點(diǎn)操作出發(fā),對(duì)鄰居節(jié)點(diǎn)進(jìn)行抽樣以控制實(shí)際運(yùn)算節(jié)點(diǎn)的規(guī)模,同時(shí)防止鄰居節(jié)點(diǎn)隨機(jī)采樣導(dǎo)致局部信息丟失。增加了特征初始化操作,以降低信息丟失率,其主要訓(xùn)練過(guò)程如下:
算法:改進(jìn)GraphSAGE算法主要流程。
Input:樣本集B;圖G=(V,E),其中V代表用戶節(jié)點(diǎn)集合,E代表節(jié)點(diǎn)之間的關(guān)系;層數(shù)K;權(quán)重矩陣L(k),?k∈{1,2,…,k};非線性函數(shù)σ;聚合函數(shù)Agg(k);鄰居采樣函數(shù)N(k):v→2v,?k∈{1,2,…,k}
Output:輸出所有節(jié)點(diǎn)的特征向量zv,k∈B
1.fori=1…Ndo
2.forj=1…bihdo
4. end
5.end
6.B(k)←B
7.fork=K…1 do
8.B(k-1)←B
9. foru∈B(k)do
10.B(k-1)←B(k-1)∪Nk(u)
11. end
12.end
14.fork=1…Kdo
15.foru∈B(k)do
19. end
20.end
(2)特征值初始化。
如上述算法所示,為了防止對(duì)鄰居節(jié)點(diǎn)采樣導(dǎo)致局部信息丟失,算法的1~5行,遍歷每一個(gè)節(jié)點(diǎn),提前將節(jié)點(diǎn)的特征向量與它所有的鄰居節(jié)點(diǎn)的特征向量按照固定的權(quán)重進(jìn)行線性組合,使得每一個(gè)節(jié)點(diǎn)初始狀態(tài)下已經(jīng)包含周圍鄰居節(jié)點(diǎn)的一些信息,從而在采樣初始階段保留部分局部信息。
(3)鄰居節(jié)點(diǎn)采樣。
算法的6~12行,首先遍歷出樣本集B內(nèi)參與中心節(jié)點(diǎn)聚合操作的所有k階子圖,并在這些節(jié)點(diǎn)上進(jìn)行K次聚合操作的迭代運(yùn)算,基本思路是:要獲得某個(gè)中心節(jié)點(diǎn)第k層的特征,需要對(duì)第k-1層的鄰居進(jìn)行采樣,接著對(duì)k-1層的每個(gè)節(jié)點(diǎn)采樣其k-2層的鄰居節(jié)點(diǎn),不斷循環(huán),直到采樣完第1層的所有鄰居位置。
(4)聚合操作。
算法的13~20行主要是對(duì)鄰居節(jié)點(diǎn)進(jìn)行聚合操作,其中第15行通過(guò)聚合函數(shù)對(duì)每個(gè)節(jié)點(diǎn)的鄰居節(jié)點(diǎn)特征進(jìn)行聚合,接著第16行對(duì)聚合后的鄰居特征與中心節(jié)點(diǎn)的上一層特征進(jìn)行拼接,輸?shù)絾螌泳W(wǎng)絡(luò)中獲得中心節(jié)點(diǎn)的特征向量,最后對(duì)計(jì)算好的特征向量進(jìn)行歸一化處理,以保證所有節(jié)點(diǎn)向量在相同的單位尺度上。
(5)參數(shù)學(xué)習(xí)。
該文主要采用無(wú)監(jiān)督學(xué)習(xí),即節(jié)點(diǎn)與其鄰居具有類似的特征標(biāo)識(shí),沒(méi)有直接相連的節(jié)點(diǎn)特征標(biāo)識(shí)相差較大,損失函數(shù)如下:
(1)
其中,Zu表示節(jié)點(diǎn)u的圖特征向量表示,v表示u節(jié)點(diǎn)的鄰居節(jié)點(diǎn),σ指的是sigmod函數(shù),表示樣本數(shù),vn~Pn(v)表示負(fù)樣本數(shù)。
本節(jié)以圖嵌入向量表示生成的特征向量為輸入,利用無(wú)核二次曲面支持向量機(jī)[12]以實(shí)現(xiàn)黑產(chǎn)用戶識(shí)別,該算法基本原理如下:
(1)模型輸入。
(2)模型輸出。
(2)
其滿足分類曲面g(z)=0可以將黑產(chǎn)用戶與正常用戶分開。
(3)優(yōu)化函數(shù)。
(3)
故二次曲面支持向量機(jī)優(yōu)化問(wèn)題可以表示為:
(4)
(4)決策函數(shù)。
該模型的目標(biāo)是將所有的正常用戶樣本點(diǎn)分布在g(z)=1的外側(cè),黑產(chǎn)用戶在g(z)=-1的外側(cè),并最大化所有樣本到分類曲面的相對(duì)幾何距離,其對(duì)應(yīng)的分類所測(cè)函數(shù)為:
f(x)=sign(g(z))
(5)
假設(shè)參數(shù)最優(yōu)解為:W*,b*,c*,則最終分類決策函數(shù)為:
f(x)=sign(ZTW*Z+b*TZ+c*)
(6)
本模型基于目前鐵路客運(yùn)固定時(shí)間段的生產(chǎn)數(shù)據(jù)作為原始數(shù)據(jù),構(gòu)建用戶基礎(chǔ)特征以及關(guān)系網(wǎng)絡(luò)。面對(duì)海量的交易信息,實(shí)驗(yàn)主要采用Spark進(jìn)行基礎(chǔ)特征處理,Spark GraphX[13]進(jìn)行關(guān)系網(wǎng)絡(luò)構(gòu)建,最后基于Spark實(shí)現(xiàn)GraphSAGE以及支持向量模型。
該文主要解決的是二分類問(wèn)題,將黑產(chǎn)用戶用-1表示,正常用戶用1表示。以現(xiàn)有的風(fēng)控策略以及鐵路客運(yùn)用戶畫像系統(tǒng)為基礎(chǔ),隨機(jī)抽取100個(gè)正常用戶以及100個(gè)黑產(chǎn)用戶作為種子樣本,以整個(gè)旅客關(guān)系網(wǎng)絡(luò)為基礎(chǔ),擴(kuò)展出100萬(wàn)個(gè)樣本作為測(cè)試數(shù)據(jù),其中正常用戶897 813,黑產(chǎn)用戶102 187。為降低模型復(fù)雜度,主要挑選了11個(gè)基礎(chǔ)特征,如表1所示,并對(duì)跨度較大的特征進(jìn)行歸一化處理。
表1 旅客個(gè)體特征
首先將100萬(wàn)樣本數(shù)據(jù)按照1∶9分為兩部分,其中90%作為訓(xùn)練集,10%作為測(cè)試樣本,以驗(yàn)證模型的好壞。同時(shí)為了排除不同訓(xùn)練子集帶來(lái)的統(tǒng)計(jì)誤差,采用k折交叉驗(yàn)證(k-fold-cross-validation)方法[14],即將數(shù)據(jù)隨機(jī)分為k組,依次將其中一組作為測(cè)試集,剩下的k-1組作為訓(xùn)練組構(gòu)建模型,基于本實(shí)驗(yàn)樣本的數(shù)據(jù)量,隨機(jī)將訓(xùn)練樣本集分成20組。
在圖嵌入向量表示模型中,基于鐵路旅客購(gòu)票關(guān)系以及同行關(guān)系構(gòu)造的關(guān)系網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,為了保證模型訓(xùn)練的效率,設(shè)k為2,關(guān)系網(wǎng)絡(luò)中每個(gè)用戶節(jié)點(diǎn)可以最多根據(jù)其2跳鄰接點(diǎn)的信息進(jìn)行聚合學(xué)習(xí)。常見(jiàn)的聚合函數(shù)包括平均、GCN歸納式、LSTM、pooling聚合器。其中LSTM具有更強(qiáng)的表達(dá)能力,故該文主要采用LSTM聚合。
分別從準(zhǔn)確率、ROC曲線、誤傷率以及滯后性對(duì)模型進(jìn)行對(duì)比分析。
準(zhǔn)確率:即整個(gè)樣本集預(yù)測(cè)結(jié)果的準(zhǔn)確性,準(zhǔn)確率越高越好。
ROC曲線以及AUC值:ROC曲線反映敏感性和特異性連續(xù)變量的綜合指標(biāo);AUC值即ROC曲線下方面積的大小,值越大代表分類器效果越好[15]。
誤傷率:將正常用戶識(shí)別為黑產(chǎn)用戶的比例,比例越小越好。
滯后性:識(shí)別異常用戶的耗時(shí)對(duì)比情況,耗時(shí)越短越好。
該文主要采用兩種對(duì)比方案進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)一:將原始特征向量,圖嵌入表示生成的特征的向量分別作為二次曲面支持向量機(jī)進(jìn)行對(duì)比;實(shí)驗(yàn)二:將該黑產(chǎn)用戶識(shí)別模型與現(xiàn)有的風(fēng)控策略模型進(jìn)行對(duì)比。
4.3.1 實(shí)驗(yàn)一
該實(shí)驗(yàn)的目的是對(duì)比旅客個(gè)體原始特征與聚合相鄰節(jié)點(diǎn)特征(下面簡(jiǎn)稱融合特征)對(duì)相同模型性能的影響,分別對(duì)兩類特征采用二次曲面支持向量機(jī)模型訓(xùn)練之后,分別對(duì)測(cè)試樣本進(jìn)行測(cè)試,同時(shí)對(duì)兩個(gè)模型的準(zhǔn)確率、ROC曲線進(jìn)行對(duì)比分析。
(1)準(zhǔn)確率。
從表2可以看出,在相同的黑產(chǎn)用戶識(shí)別模型中,基于融合特征的樣本的準(zhǔn)確率明顯高于原始特征,同時(shí)融合特征的方差相對(duì)較小,具有更好的魯棒性,且相對(duì)穩(wěn)定,因此基于圖嵌入向量表示生成的旅客特征更能完整地表達(dá)旅客的特征,對(duì)黑產(chǎn)用戶的識(shí)別具有積極作用。
表2 準(zhǔn)確率對(duì)比 %
(2)ROC曲線。
ROC曲線和對(duì)應(yīng)的AUC值是衡量分類模型性能以及能力的重要指標(biāo),是研究模型泛化能力的主要工具,實(shí)驗(yàn)一兩個(gè)模型對(duì)應(yīng)的ROC曲線以及AUC值如圖3所示。
圖3 ROC 曲線與AUC值
如圖3所示,橫軸FPR表示假正率,縱軸TPR表示真正率,其中融合特征模型的ROC曲線完全覆蓋原始特征的ROC曲線,同時(shí)融合特征模型的AUC值相對(duì)較大,因此融合特征模型的性能更優(yōu)且泛化能力更強(qiáng)。
4.3.2 實(shí)驗(yàn)二
該實(shí)驗(yàn)的目的是對(duì)比現(xiàn)有風(fēng)控策略模型與黑產(chǎn)用戶識(shí)別模型,由于目前樣本的訓(xùn)練集以及測(cè)試集的類別標(biāo)簽均是采用現(xiàn)在的風(fēng)控策略進(jìn)行標(biāo)記,僅僅依靠針對(duì)測(cè)試集進(jìn)行測(cè)試的準(zhǔn)確率以及ROC無(wú)法體現(xiàn)黑產(chǎn)用戶識(shí)別模型的性能。因此,測(cè)試樣本改為隨機(jī)抽取一周的互聯(lián)網(wǎng)購(gòu)票用戶作為測(cè)試集,依次用兩個(gè)模型進(jìn)行異常用戶標(biāo)記,分別從誤傷率以及滯后性兩個(gè)方面進(jìn)行分析。
(1)誤傷率。
誤傷率即將正常購(gòu)票的用戶識(shí)別為異常用戶的比例,通過(guò)分析一個(gè)月的用戶訪問(wèn)日志、投訴、行為分析等,發(fā)現(xiàn)黑產(chǎn)用戶識(shí)別模型的誤傷率降低了10%。
(2)滯后性。
滯后性即識(shí)別出異常用戶需要的時(shí)間。采用兩個(gè)模型識(shí)別近半年的異常用戶,并隨機(jī)抽取1 000個(gè)異常賬戶(編號(hào)為1到1 000)進(jìn)行識(shí)別時(shí)間分析,如圖4所示(為方便顯示1 000個(gè)賬戶隨機(jī)抽取節(jié)點(diǎn)繪制),其中橫坐標(biāo)表示時(shí)間,縱坐標(biāo)表示異常賬戶的編號(hào)??梢钥闯?,文中模型的散點(diǎn)相對(duì)當(dāng)前風(fēng)控模型比較集中在左側(cè),經(jīng)過(guò)統(tǒng)計(jì),文中模型在隨機(jī)抽取的異常賬戶中,超過(guò)60%識(shí)別時(shí)間有所提前,即現(xiàn)有的風(fēng)控策略需要積累一定的用戶行為特征才能夠識(shí)別出異常用戶,而文中黑產(chǎn)用戶識(shí)別模型可以同時(shí)通過(guò)用戶關(guān)系層面的關(guān)聯(lián)挖掘潛在的黑產(chǎn)用戶,在其進(jìn)行異常操作之前進(jìn)行相應(yīng)的控制。
圖4 異常用戶識(shí)別時(shí)間對(duì)比
分析了現(xiàn)有售票系統(tǒng)的數(shù)據(jù)特點(diǎn),構(gòu)建了用戶實(shí)體特征以及實(shí)體之間關(guān)系特征,基于GraphSAGE模型進(jìn)行鄰居節(jié)點(diǎn)采樣,將旅客個(gè)體特征與其相鄰節(jié)點(diǎn)特征進(jìn)行融合,生成最終的旅客特征向量,將其作為無(wú)核二次曲面支持向量機(jī)的輸入進(jìn)行黑產(chǎn)用戶識(shí)別。實(shí)驗(yàn)證明融合個(gè)體特征及鄰居節(jié)點(diǎn)特征生成的特征向量在相同的模型下,準(zhǔn)確率及AUC值都表現(xiàn)較好,而且相對(duì)現(xiàn)有的風(fēng)控策略模型,降低了誤傷率,縮短了黑產(chǎn)用戶識(shí)別的時(shí)間。