周亮瑾,閻志遠(yuǎn),戴琳琳
(1.中國(guó)鐵道科學(xué)研究院 研究生部,北京 100081;2.中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京 100081)
與傳統(tǒng)基于鐵路內(nèi)網(wǎng)的鐵路電子商務(wù)系統(tǒng)不同的是,鐵路互聯(lián)網(wǎng)售票系統(tǒng)是面向互聯(lián)網(wǎng)的電子商務(wù)網(wǎng)站,面臨著更為復(fù)雜的風(fēng)險(xiǎn)防控要求。自從2011年鐵路互聯(lián)網(wǎng)售票啟動(dòng)以來(lái),互聯(lián)網(wǎng)售票網(wǎng)站、手機(jī)APP購(gòu)票成為旅客購(gòu)票的主渠道,為廣大旅客提供了更加便利快捷的購(gòu)票服務(wù)。2018年春運(yùn)期間,互聯(lián)網(wǎng)售票量單日高峰已超過(guò)1000萬(wàn)張,平均每天售票量達(dá)到鐵路全渠道總售票量的70%。在節(jié)假日購(gòu)票高峰,一些不法分子利用非法收集用戶信息、使用搶票軟件或搭建高性能搶票服務(wù)器等手段,對(duì)熱門火車票進(jìn)行“秒殺”,嚴(yán)重干擾了公平公正的購(gòu)票秩序,對(duì)廣大旅客正常購(gòu)票造成了影響。如何從海量購(gòu)票請(qǐng)求中有效區(qū)分異常購(gòu)票行為,是解決“黃牛搶票”的關(guān)鍵所在。
異常購(gòu)票行為是指不同于正常用戶人工購(gòu)票過(guò)程中的單個(gè)或一系列行為的組合,包括通過(guò)非法簡(jiǎn)化預(yù)設(shè)的購(gòu)票流程,壓縮購(gòu)票關(guān)鍵步驟的執(zhí)行時(shí)間,以及通過(guò)大量并發(fā)提交同一個(gè)用戶的購(gòu)票請(qǐng)求以提高非法購(gòu)票成功率等行為。對(duì)鐵路互聯(lián)網(wǎng)售票系統(tǒng)產(chǎn)生較大影響的異常購(gòu)票請(qǐng)求主要來(lái)源于其他電商網(wǎng)站,這些電商通過(guò)非法解析網(wǎng)站購(gòu)票接口,構(gòu)建搶票服務(wù)器,模擬購(gòu)票請(qǐng)求和自動(dòng)化購(gòu)票流程,從而獲得比正常用戶人工操作更快的速度實(shí)現(xiàn)非法“搶票”。這些電商搶票使用的網(wǎng)站賬號(hào)信息,部分是其通過(guò)非法收集證件提前建立和認(rèn)證的網(wǎng)站賬號(hào),部分是其誘導(dǎo)用戶提供本人已注冊(cè)的網(wǎng)站賬號(hào)和密碼。
對(duì)于這些異常購(gòu)票行為的區(qū)分可從分析購(gòu)票請(qǐng)求的用戶賬號(hào)和行為兩方面入手。從購(gòu)票請(qǐng)求的用戶賬號(hào)分析,主要是使用基于用戶關(guān)系特征的識(shí)別算法。比如,根據(jù)用戶常用命名方法識(shí)別機(jī)器人賬號(hào),或是利用貝葉斯網(wǎng)絡(luò)、神經(jīng)網(wǎng)絡(luò)分類法進(jìn)行用戶和購(gòu)票人關(guān)系分析[1-4]。但是,由于建立深度學(xué)習(xí)分析的網(wǎng)絡(luò)需要大量復(fù)雜樣本進(jìn)行訓(xùn)練,同時(shí)越來(lái)越多非法“搶票”利用正常用戶賬號(hào)進(jìn)行操作,使其行為更具隱蔽性。從購(gòu)票請(qǐng)求的行為分析,主要是基于行為特征的分類識(shí)別算法,例如貝葉斯算法、決策樹分類算法和SVM算法等。這些算法普遍具有運(yùn)行效率高、訓(xùn)練樣本簡(jiǎn)單的特點(diǎn),但是如何選擇有效屬性,特別是確定屬性閾值,是這些算法實(shí)現(xiàn)精確分類需要解決的問題。
本文提出基于樸素貝葉斯分類算法的異常行為分類技術(shù),同時(shí)結(jié)合使用遺傳算法計(jì)算屬性閾值,從而進(jìn)一步提高分類算法的準(zhǔn)確性,可有效解決異常行為分類問題。
如果把1個(gè)互聯(lián)網(wǎng)訂票請(qǐng)求操作劃分為獨(dú)立的步驟,那么可分為登錄、選擇目標(biāo)車次、查詢目標(biāo)車次余票信息、選擇乘坐旅客信息、確認(rèn)訂單信息、提交訂單信息、支付等步驟,每個(gè)步驟都有1個(gè)操作停留時(shí)間,其中每步是相對(duì)獨(dú)立的。為了達(dá)到搶票目的,訂票請(qǐng)求中各個(gè)步驟的操作時(shí)間必須是遠(yuǎn)低于正常人工操作時(shí)間。這里可把查詢目標(biāo)車次余票信息(Query Ticketing Step,QTS)、選擇乘坐旅客(Select Passenger Step,SPS)、提交訂單(Submit Order Step,SOS)、完成支付(Pay Order Step,POS)4個(gè)步驟的停留時(shí)間作為購(gòu)票行為的4個(gè)關(guān)鍵屬性。
目前第三方電商推出了高度自動(dòng)化的“搶票”服務(wù),其實(shí)現(xiàn)原理是通過(guò)模擬器或者真機(jī)黑廠,使用程序自動(dòng)調(diào)用互聯(lián)網(wǎng)售票服務(wù)接口來(lái)模擬用戶的正常購(gòu)票流程,因此停留時(shí)間的計(jì)算定義為:在購(gòu)票流程中,上個(gè)接口調(diào)用完成后,與目標(biāo)接口調(diào)用之間的延時(shí)值。
由于非法電商自己構(gòu)建的用戶賬號(hào)里的常用聯(lián)系人會(huì)定期變化,同時(shí)非法電商為了實(shí)現(xiàn)更快搶購(gòu)車票,從中獲得代理費(fèi)用,會(huì)使用其他用戶添加該用戶為常用聯(lián)系人,使用多個(gè)賬號(hào)進(jìn)行并發(fā)購(gòu)票。因此,發(fā)起購(gòu)票請(qǐng)求的用戶,其常用聯(lián)系人更新頻率和相關(guān)性(User Relevance Information,URI),可以在一定程度上表明該用戶是否被網(wǎng)上代買服務(wù)利用;出行人的信息在多個(gè)賬號(hào)內(nèi)關(guān)聯(lián)性(Passenger Relevance Information,PRI),可以表明該出行人是否經(jīng)常在第三方電商上購(gòu)買代買服務(wù);在短時(shí)間內(nèi)接到多個(gè)用戶對(duì)某個(gè)出行人的購(gòu)票請(qǐng)求(Concurrent Request Information,CRI),在一定程度表明該出行人可能目前正在使用非法“搶票”軟件。
(1)
(2)
(3)
(4)
定義5 請(qǐng)求用戶賬號(hào)更新聯(lián)系人屬性(guri)。該屬性反映了用戶賬號(hào)常用聯(lián)系人變化的頻率。用mun表示該用戶賬號(hào)下常用聯(lián)系人更新個(gè)數(shù),用nuc表示常用聯(lián)系人更新次數(shù),因此,請(qǐng)求用戶賬號(hào)更新聯(lián)系人屬性guri的公式為
(5)
定義6 常用聯(lián)系人相關(guān)性屬性(gpri)。該屬性反映了常用聯(lián)系人與用戶賬號(hào)的黏性,數(shù)值越小表明乘車人經(jīng)常使用固定用戶賬號(hào)進(jìn)行購(gòu)票,與用戶賬號(hào)的黏性比較強(qiáng),這也符合正常旅客購(gòu)票習(xí)慣。用bi表示購(gòu)票請(qǐng)求中乘車人,在所有關(guān)聯(lián)的用戶賬號(hào)中購(gòu)票次數(shù),因此,常用聯(lián)系人相關(guān)性屬性gpri的公式為
(6)
定義7 并發(fā)購(gòu)票請(qǐng)求屬性(gcri)。該屬性反映同一乘車人同時(shí)使用多個(gè)賬號(hào)進(jìn)行并發(fā)購(gòu)票請(qǐng)求的異常情況。用t表示計(jì)算的時(shí)間區(qū)間,用qi表示該時(shí)間區(qū)間內(nèi),不同用戶賬號(hào)為同一旅客提交的并發(fā)購(gòu)票請(qǐng)求量,因此,并發(fā)購(gòu)票請(qǐng)求屬性gcri的公式為
(7)
查詢目標(biāo)車次余票信息屬性tQTS、選擇乘坐旅客屬性tSPS、提交訂單屬性tSOS和完成支付屬性tPOS,這些屬性值在每次請(qǐng)求中是動(dòng)態(tài)變化,是下一步使用異常行為識(shí)別模型進(jìn)行判斷的基本屬性。同時(shí)配合基于請(qǐng)求用戶特征統(tǒng)計(jì)的靜態(tài)屬性,如請(qǐng)求用戶賬號(hào)更新聯(lián)系人屬性guri,常用聯(lián)系人相關(guān)性屬性gpri,以及同一乘車人的并發(fā)購(gòu)票請(qǐng)求屬性gcri,結(jié)合用戶是否有異常操作歷史記錄、購(gòu)票請(qǐng)求設(shè)備指紋是否屬于模擬器或黑廠等其他屬性對(duì)異常購(gòu)票行為進(jìn)行綜合判斷。
對(duì)于一個(gè)未分類的數(shù)據(jù)E,E由i個(gè)特征屬性組成,可以表示為E={t1,t2,…,ti}。對(duì)于類別集合C={a1,a2},其中a1是正常用戶請(qǐng)求類別,a2是異常用戶請(qǐng)求類別。分別計(jì)算P(a1│E),P(a2|E)。如果P(ak│E)=max{P(a1│E),P(a2│E)},則E∈ak。
根據(jù)貝葉斯定理可以得到
(8)
那么對(duì)于每個(gè)分類來(lái)說(shuō),分母P(E)都相同,想要比較1個(gè)最大值,只需要分子P(E│ak)P(ak)最大化就行。
由于事件的特征屬性都是獨(dú)立的,那么可以得到
P(E│ak)P(ak)
=P(t1│ak)P(t2│ak)…P(ti│ak)P(ak)
(9)
這里的P(ak)就是基于樣本中統(tǒng)計(jì)1個(gè)請(qǐng)求屬于正常請(qǐng)求和異常請(qǐng)求的先驗(yàn)概率,P(tm│ak)可以通過(guò)查詢屬性閾值矩陣和相應(yīng)的概率矩陣獲得,這樣就可以得到未分類的數(shù)據(jù)E的分類值。
本文設(shè)計(jì)了一個(gè)通過(guò)遺傳算法來(lái)確定每個(gè)屬性的閾值以及持續(xù)細(xì)化閾值的方法[5]。首先將人工標(biāo)記的樣本作為訓(xùn)練樣本,根據(jù)遺傳算法對(duì)訓(xùn)練樣本的每個(gè)屬性求解出閾值的最優(yōu)值,然后應(yīng)用于樣本進(jìn)行準(zhǔn)確率校驗(yàn)。
采用遺傳算法進(jìn)行最優(yōu)值計(jì)算時(shí),需要通過(guò)編碼方式確定每個(gè)閾值使用多少位的二進(jìn)制來(lái)代表基因染色體編碼,隨機(jī)初始化若干閾值矩陣父代,選取適應(yīng)度函數(shù)作為閾值矩陣優(yōu)化的目標(biāo)函數(shù),通過(guò)選擇算法和遺傳變異算法會(huì)產(chǎn)生若干閾值矩陣子代,迭代確定出最終閾值矩陣,這是屬性一次閾值矩陣的計(jì)算過(guò)程,可以使用相同過(guò)程持續(xù)細(xì)化閾值。
1.3.1 編碼方式
每個(gè)二進(jìn)制代碼對(duì)應(yīng)的十進(jìn)制值為
(10)
在取值區(qū)間內(nèi)對(duì)應(yīng)的值為
(11)
1.3.2 適應(yīng)度函數(shù)
1.3.3 選擇算法
根據(jù)遺傳算法,適應(yīng)度函數(shù)值越高的個(gè)體就越有可能繁殖后代,但也并非適應(yīng)度越高的就肯定后代越多,都是從概率上進(jìn)行估算。本文采用常用的選擇函數(shù)輪盤賭(Roulette Wheel Selection)選擇法。假設(shè)種群數(shù)目n,某個(gè)體適應(yīng)度為f,則其被選中繼續(xù)繁衍的概率為
(12)
顯然適應(yīng)度越高對(duì)應(yīng)的選擇概率也就越大。按照這樣的比例組成1個(gè)“輪盤”,轉(zhuǎn)動(dòng)“輪盤”隨機(jī)選擇其中個(gè)體進(jìn)入遺傳變異階段,選擇后保持種群規(guī)模不變。
1.3.4 遺傳變異
二進(jìn)制閾值矩陣的基因重組是,2個(gè)矩陣中同1個(gè)屬性的二進(jìn)制編碼在隨機(jī)幾個(gè)位置上進(jìn)行交換;基因變異時(shí),閾值矩陣本身每個(gè)屬性的隨機(jī)幾個(gè)位置上按照概率進(jìn)行取反。同時(shí),為了加快遺傳算法的進(jìn)化速度,而又能保證后期能夠比較精確地收斂到最優(yōu)解上,采取動(dòng)態(tài)改變步長(zhǎng)的方法,使用基因重組概率Pcom和基因變異概率Pvar來(lái)動(dòng)態(tài)調(diào)節(jié)。對(duì)于適應(yīng)度較高的個(gè)體,對(duì)應(yīng)的Pcom和Pvar值較低,使得優(yōu)良的基因得以保持;對(duì)于適應(yīng)度較低的個(gè)體,對(duì)應(yīng)的Pcom和Pvar值較高,加速其進(jìn)化速度;當(dāng)種群中每個(gè)個(gè)體的適應(yīng)度趨于一致時(shí),加大Pcom和Pvar值;當(dāng)種群中每個(gè)個(gè)體的適應(yīng)度比較分散時(shí),適當(dāng)減少Pcom和Pvar值[6]。
(13)
(14)
式中:Pc1為基因重組的常數(shù)概率,表明進(jìn)行基因重組的可能性大小;λ為適應(yīng)性權(quán)重系數(shù);fc為要基因重組的2個(gè)個(gè)體中適應(yīng)函數(shù)較高的值;fv為要基因變異的個(gè)體中適應(yīng)函數(shù)值;favg為適應(yīng)函數(shù)值的平均值;Pc2為基因變異的常數(shù)概率,表明進(jìn)行基因變異的可能性大?。沪虨樽儺悪?quán)重系數(shù)。
1.3.5 確定閾值矩陣
1.3.6 持續(xù)細(xì)化閾值
當(dāng)通過(guò)遺傳算法[7-9]計(jì)算出第1個(gè)閾值矩陣后,每個(gè)屬性可以進(jìn)一步細(xì)化閾值,通過(guò)類似的算法進(jìn)行下1個(gè)閾值計(jì)算,直到閾值個(gè)數(shù)超出預(yù)設(shè)值?c后退出。
由于鐵路購(gòu)票請(qǐng)求具有規(guī)律性,在節(jié)假日期間,購(gòu)票壓力大,使用非法搶票軟件的可能性大,而在非節(jié)假日期間,購(gòu)票請(qǐng)求相對(duì)平穩(wěn),因此在異常行為分析中,需要充分考慮到鐵路售票自身的特點(diǎn),需要根據(jù)不同時(shí)期、長(zhǎng)短途票等特點(diǎn),選取不同樣本進(jìn)行訓(xùn)練,生成應(yīng)用于不同時(shí)期異常行為分析的算法數(shù)據(jù),這是本文設(shè)計(jì)的異常行為分類算法運(yùn)行框架第1步。
異常行為分類算法運(yùn)行框架第2步需要根據(jù)樣本集分別進(jìn)行算法訓(xùn)練,如圖1所示,分為以下步驟。
步驟1:前期收集人工標(biāo)識(shí)好的屬性樣本集S,據(jù)訓(xùn)練樣本提取當(dāng)前待細(xì)化的閾值矩陣。
步驟2:根據(jù)得到的閾值矩陣,計(jì)算訓(xùn)練樣本中的異常行為分類條件概率表,將該條件概率表應(yīng)用于樣本,進(jìn)行準(zhǔn)確率、召回率、調(diào)和平均值計(jì)算[10-12],得到種群中每個(gè)個(gè)體的適應(yīng)值。
步驟3:根據(jù)得到的當(dāng)前待細(xì)化的閾值矩陣[13],計(jì)算屬性閾值區(qū)間,并確定相應(yīng)的基因編碼方式,隨機(jī)生成6~10個(gè)閾值矩陣種群進(jìn)入遺傳算法進(jìn)行優(yōu)化計(jì)算。
步驟4:根據(jù)個(gè)體適應(yīng)值,使用輪盤賭選擇法,選擇個(gè)體進(jìn)入基因重組變異,通過(guò)選擇后依然保持種群規(guī)模不變,適應(yīng)性強(qiáng)的個(gè)體更有可能多次入選。
步驟5:根據(jù)個(gè)體適應(yīng)值計(jì)算得到的基因重組概率Pcom和基因變異概率Pvar進(jìn)行基因重組變異產(chǎn)生新一代屬性矩陣種群,根據(jù)設(shè)置的進(jìn)化代數(shù)?g,重復(fù)步驟4,直到得到最后的閾值矩陣。
步驟6:將得到的閾值矩陣計(jì)算適應(yīng)值,與之前閾值矩陣對(duì)比,如果有提升同時(shí)控制閾值細(xì)度不高于6個(gè),分別得到子閾值矩陣,繼續(xù)重復(fù)步驟2,直至退出。
圖1 異常行為分類算法運(yùn)行框架—算法訓(xùn)練流程圖
異常行為分類算法運(yùn)行框架第3步根據(jù)需要選擇合適的算法數(shù)據(jù)對(duì)實(shí)際購(gòu)票請(qǐng)求進(jìn)行分類,根據(jù)分類結(jié)果進(jìn)行處理。同時(shí),將購(gòu)票請(qǐng)求及分析結(jié)果進(jìn)行存儲(chǔ),作為后續(xù)算法改進(jìn)的數(shù)據(jù)依據(jù),如圖2所示。
為了區(qū)分正常請(qǐng)求和異常請(qǐng)求,預(yù)先在幾個(gè)非法電商上注冊(cè)200個(gè)用戶賬號(hào),按照不同熱門車次、乘車時(shí)間進(jìn)行購(gòu)票請(qǐng)求,在鐵路互聯(lián)網(wǎng)售票系統(tǒng)后臺(tái)根據(jù)預(yù)先標(biāo)識(shí)的用戶和購(gòu)買車次對(duì)請(qǐng)求進(jìn)行區(qū)分,并對(duì)各個(gè)屬性值進(jìn)行統(tǒng)計(jì);然后再使用100個(gè)用戶賬號(hào)在網(wǎng)站及手機(jī)應(yīng)用進(jìn)行正常購(gòu)票模擬,并在后臺(tái)系統(tǒng)進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。先后整理和分類春運(yùn)售票期間4 000個(gè)實(shí)際網(wǎng)站用戶請(qǐng)求,其中1 500個(gè)正常請(qǐng)求,2 500個(gè)異常請(qǐng)求,同時(shí)還收集了同一時(shí)期的1 500個(gè)標(biāo)識(shí)測(cè)試樣本進(jìn)行驗(yàn)證。
圖2 異常行為分類算法運(yùn)行框架-系統(tǒng)結(jié)構(gòu)圖
如圖3所示,通過(guò)調(diào)整遺傳代數(shù)?g值,計(jì)算樣本準(zhǔn)確率βacc、召回率βrec以及調(diào)和平均值fm,以準(zhǔn)確率值為主要參考值。在算例中,遺傳代數(shù)?g值在5~15時(shí)比較平穩(wěn),但是隨著?g值的增加,準(zhǔn)確率也隨之上升,在40~45達(dá)到較高值,并趨于穩(wěn)定。由于召回率和調(diào)和平均值也相對(duì)穩(wěn)定,因此?g值可以在40~50之間進(jìn)行選擇。
圖3 遺傳代數(shù)對(duì)算法準(zhǔn)確率、召回率、調(diào)和平均值的影響測(cè)試結(jié)果
如圖4所示,通過(guò)調(diào)整閾值矩陣細(xì)化次數(shù)?c值,計(jì)算樣本準(zhǔn)確率βacc、召回率βrec以及調(diào)和平均值fm,以準(zhǔn)確率為主要參考值。隨著閾值細(xì)化次數(shù)增加,一開始準(zhǔn)確率也隨之上升,但隨著細(xì)化次數(shù)的進(jìn)一步增加,準(zhǔn)確率值逐漸下探,表明閾值矩陣細(xì)化到一定程度后,對(duì)于算法判斷沒有增益,反而會(huì)降低算法計(jì)算性能和判斷準(zhǔn)確度。因此,閾值矩陣細(xì)化次數(shù)?c取值2次,此時(shí)算法綜合運(yùn)行效果較好。
圖4 閾值矩陣細(xì)化次數(shù)對(duì)算法準(zhǔn)確率、召回率、調(diào)和平均值的影響測(cè)試結(jié)果
如圖5所示,與決策樹算法相比,本文算法的準(zhǔn)確率、召回率以及調(diào)和平均值都有優(yōu)勢(shì),可以達(dá)到97.1%分類準(zhǔn)確率,與決策樹算法相比,有接近3%~5%的提升。
圖5 本文算法與決策樹算法對(duì)比測(cè)試結(jié)果
圖6 細(xì)化閾值矩陣對(duì)算法影響測(cè)試結(jié)果
如圖6所示,進(jìn)行閾值矩陣細(xì)化算法對(duì)樸素貝葉斯分類算法(NBC)的運(yùn)行效果影響對(duì)比測(cè)試。實(shí)驗(yàn)表明,在增加了閾值矩陣細(xì)化算法后,本文算法比NBC算法有了6.5%的準(zhǔn)確率提升。
為了更嚴(yán)厲地打擊異常用戶購(gòu)票行為,目前鐵路互聯(lián)網(wǎng)售票網(wǎng)站基于購(gòu)票行為的風(fēng)險(xiǎn)控制機(jī)制往往會(huì)增加正常用戶的誤傷率。為了更好地實(shí)現(xiàn)鐵路互聯(lián)網(wǎng)售票系統(tǒng)異常購(gòu)票行為的有效識(shí)別,通過(guò)分析提取購(gòu)票行為的特征屬性,有機(jī)結(jié)合了貝葉斯分類算法和遺傳算法,實(shí)現(xiàn)了鐵路互聯(lián)網(wǎng)異常購(gòu)票行為識(shí)別分類器,通過(guò)特征閾值的細(xì)化分類后的概率矩陣能夠準(zhǔn)確地識(shí)別異常用戶購(gòu)票行為。通過(guò)實(shí)驗(yàn)數(shù)據(jù)測(cè)試表明,本文設(shè)計(jì)的識(shí)別和分類用戶請(qǐng)求算法,基于簡(jiǎn)單的樣本訓(xùn)練,就可以達(dá)到97.1%的分類控制的效果,與決策樹算法相比,準(zhǔn)確率有接近3%~5%的提升,同時(shí)算法運(yùn)行效率很高,可以滿足1000TPS高并發(fā)請(qǐng)求分類的要求。