李 雯,朱建生,單杏花
(1.中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 研究生部,北京 100081;2.中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京 100081)
鐵路客運(yùn)自2011年推出12306互聯(lián)網(wǎng)售票系統(tǒng)以來(lái)[1],不斷地進(jìn)行技術(shù)攻關(guān),至2018年春運(yùn),該系統(tǒng)的承載能力與以往相比已經(jīng)有了質(zhì)的飛躍,單日售票能力從1 000萬(wàn)張?zhí)岣叩搅? 500萬(wàn)張,高峰時(shí)段1 s可以售出近700張票,已經(jīng)可以滿(mǎn)足春運(yùn)購(gòu)票期間大量用戶(hù)購(gòu)票時(shí)系統(tǒng)的正常穩(wěn)定運(yùn)行。但是第三方軟件以“預(yù)付可提高排名”,“專(zhuān)享100 M提速光纖”等標(biāo)題為“噱頭”,吸引了大量的用戶(hù)借助其進(jìn)行購(gòu)票。數(shù)據(jù)顯示,2017年12月開(kāi)始,各種搶票軟件活躍用戶(hù)環(huán)比增長(zhǎng)近3成,搶票功能加速包費(fèi)用從10元到50元不等,在利益的驅(qū)使下,第三方軟件公司嚴(yán)重?fù)p害了用戶(hù)的利益和公平公正的購(gòu)票環(huán)境。目前,互聯(lián)網(wǎng)交易相關(guān)的法律法規(guī)還不健全[2],相關(guān)異常用戶(hù)的行為對(duì)社會(huì)危害性極大,嚴(yán)重破壞了交易平臺(tái)公平公正的環(huán)境。
通過(guò)技術(shù)手段對(duì)異常購(gòu)票行為進(jìn)行限制是確保公平公正售票,保障百姓購(gòu)票利益的主要方式。目前,風(fēng)險(xiǎn)控制系統(tǒng)可以從用戶(hù)登錄IP更換頻率、設(shè)備指紋更換頻率、余票查詢(xún)頻率以及內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)地址更換頻率等角度實(shí)時(shí)識(shí)別異常請(qǐng)求[3]。然而,對(duì)海量的用戶(hù)行為歷史數(shù)據(jù)還沒(méi)有進(jìn)行更深一層的分析,還不能有效地挖掘出歷史數(shù)據(jù)的潛在價(jià)值,因此,急需構(gòu)建一個(gè)基于海量歷史數(shù)據(jù)對(duì)異常用戶(hù)進(jìn)行識(shí)別的模型。本文結(jié)合大數(shù)據(jù)技術(shù)及機(jī)器學(xué)習(xí)技術(shù),研究識(shí)別異常用戶(hù)的分析方法,設(shè)計(jì)了一套異常用戶(hù)智能識(shí)別模型,通過(guò)對(duì)歷史用戶(hù)數(shù)據(jù)進(jìn)行機(jī)器學(xué)習(xí)訓(xùn)練,實(shí)現(xiàn)對(duì)囤票、倒票等異常用戶(hù)行為的高效識(shí)別。
為了識(shí)別異常用戶(hù),需要對(duì)用戶(hù)的異常性進(jìn)行指數(shù)化,異常用戶(hù)指數(shù)區(qū)間為[0~1],如果該指數(shù)越接近1,則說(shuō)明該用戶(hù)是異常用戶(hù)的概率越大。
鐵路12306互聯(lián)網(wǎng)售票系統(tǒng)在提供服務(wù)過(guò)程中,用戶(hù)與系統(tǒng)交互產(chǎn)生了海量有關(guān)用戶(hù)訪(fǎng)問(wèn)的行為日志數(shù)據(jù),這些日志數(shù)據(jù)詳細(xì)描述了用戶(hù)對(duì)鐵路12306互聯(lián)網(wǎng)售票系統(tǒng)的使用情況,通過(guò)對(duì)海量的購(gòu)票日志數(shù)據(jù)進(jìn)行數(shù)據(jù)分析,挖掘并提取出用戶(hù)異常購(gòu)票行為特征,建立規(guī)則庫(kù),根據(jù)規(guī)則識(shí)別出異常購(gòu)票用戶(hù)。
通過(guò)離線(xiàn)分析異常購(gòu)票用戶(hù)的識(shí)別模型,在用戶(hù)使用鐵路12306互聯(lián)網(wǎng)售票系統(tǒng)購(gòu)票的過(guò)程中,實(shí)時(shí)收集該用戶(hù)的行為日志數(shù)據(jù)以及基本數(shù)據(jù)(包括個(gè)人信息、常用聯(lián)系人信息等),并與離線(xiàn)分析出的識(shí)別模型進(jìn)行匹配,從而達(dá)到實(shí)時(shí)管控和打擊刷票等異常行為的目的,維護(hù)互聯(lián)網(wǎng)售票交易的公平性。
基于海量用戶(hù)信息,傳統(tǒng)的數(shù)據(jù)存儲(chǔ)和處理方法無(wú)法滿(mǎn)足算法的高效準(zhǔn)確運(yùn)行。本文主要通過(guò)KETTLE和Flume作為數(shù)據(jù)采集的主要工具[4-5],其中,KETTLE主要采集關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù),F(xiàn)lume主要采集用戶(hù)操作日志即非結(jié)構(gòu)化數(shù)據(jù)。關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)直接存儲(chǔ)到Hive中等待數(shù)據(jù)預(yù)處理, Flume采集的用戶(hù)行為日志數(shù)據(jù),進(jìn)入Kafka消息隊(duì)列,被SparkStreaming準(zhǔn)實(shí)時(shí)消費(fèi)解析成結(jié)構(gòu)化數(shù)據(jù)并存儲(chǔ)到 Hive中[6-7]。
對(duì)于采集到Hive中的用戶(hù)行為數(shù)據(jù)以及購(gòu)票信息,主要使用Hive Sql及其自定義函數(shù)(UDF),將數(shù)據(jù)處理操作轉(zhuǎn)換成分布式MapReduce任務(wù)運(yùn)行,使海量數(shù)據(jù)能夠高效準(zhǔn)確地進(jìn)行處理。這種方法能夠滿(mǎn)足Spark機(jī)器學(xué)習(xí)數(shù)據(jù)模式的條件,從而對(duì)數(shù)據(jù)源指數(shù)權(quán)重算法模型進(jìn)行高效訓(xùn)練。
指數(shù)的大小源于數(shù)據(jù)集的特征,而處理這些特征需要一組權(quán)重。因此,在異常用戶(hù)特征屬性標(biāo)簽的實(shí)現(xiàn)處理問(wèn)題上,采用一種自定義的指數(shù)權(quán)重算法,即通過(guò)指數(shù)權(quán)重算法動(dòng)態(tài)計(jì)算指數(shù)的權(quán)重,實(shí)現(xiàn)修正人工確定指數(shù)的誤判。
根據(jù)研究目標(biāo)的實(shí)際情況,異常用戶(hù)指數(shù)的計(jì)算分為兩部分:(1)用戶(hù)特征權(quán)重值計(jì)算;(2)用戶(hù)指數(shù)預(yù)測(cè)。因此,采用Spark MLlib中的K-means聚類(lèi)算法和邏輯回歸判別算法,構(gòu)成一個(gè)組合指數(shù)算法模型,對(duì)異常用戶(hù)指數(shù)進(jìn)行預(yù)測(cè)[8-9],指數(shù)權(quán)重算法的具體結(jié)構(gòu)如圖1所示。
圖1 指數(shù)權(quán)重算法結(jié)構(gòu)
指數(shù)權(quán)重算法為兩層結(jié)構(gòu):第1層主要用于修正特征值權(quán)重;第2層主要是用于計(jì)算指數(shù)P值,P值的取值范圍為[0~1]。
(1)利用K-means聚類(lèi)算法將數(shù)據(jù)分成K類(lèi)。其中,由于該場(chǎng)景中無(wú)法確定具體的k值,因此,通過(guò)肘部法則估計(jì)聚類(lèi)數(shù)量。肘部法則模擬不同k值的成本函數(shù)值,k值增大,平均畸變程度減小,從而每個(gè)類(lèi)包含的樣本數(shù)減少,樣本離其重心更近。但是,隨著k值繼續(xù)增大,平均畸變程度的改善效果將不斷減低,當(dāng)畸變程度的改善效果下降幅度最大時(shí),相應(yīng)的k值稱(chēng)為肘部。
(2)利用K-means聚類(lèi)算法[10]的結(jié)果篩選最大值簇和最小值簇。
(3)篩選得到的最大值簇?cái)?shù)據(jù)類(lèi)標(biāo)記為1,最小值簇?cái)?shù)據(jù)類(lèi)標(biāo)記為0,將二者數(shù)據(jù)作為邏輯回歸的訓(xùn)練集數(shù)據(jù)。
(4)利用篩選得到的數(shù)據(jù)訓(xùn)練邏輯回歸模型。
(5)利用確定的邏輯回歸模型得到修正的特征權(quán)重。
(6)將修正后的權(quán)重帶入原始數(shù)據(jù),計(jì)算出最終的指數(shù)。
(7)對(duì)結(jié)果進(jìn)行數(shù)據(jù)歸一化(指數(shù)歸一化,指數(shù)范圍為 [0~1])。
該算法的最終目標(biāo)是計(jì)算樣本特征的某一指數(shù)(沒(méi)有歸一化的指數(shù))。指數(shù)的大小來(lái)源于樣本特征實(shí)現(xiàn)的特征值。通常有:
其中, w1, w2,…, wn表示權(quán)重系數(shù),x1, x2,…, xn表示特征值。已知w1, w2,…, wn初始值,為了得到準(zhǔn)確度高的G值,需要修正權(quán)重值。具體修正權(quán)重值算法步驟如下。
3.3.1 計(jì)算聚類(lèi)中心
在數(shù)據(jù)采集階段,利用K-means聚類(lèi)方法對(duì)數(shù)據(jù)集進(jìn)行聚類(lèi),得到聚類(lèi)的簇中心向量:β1, β1,…,βn,根據(jù)公式(2)對(duì)簇中心進(jìn)行指數(shù)化:
其中,A表示初始權(quán)重, Bi為第i個(gè)簇中心的結(jié)果指數(shù),最后篩選出簇中心結(jié)果指數(shù)最大和最小的兩個(gè)簇。
假設(shè)總共分為4類(lèi),其中,簇中心向量分別為:β1,β2,β3,β4,那么,簇中心的結(jié)果指數(shù)取值有 :B1, B2, B3, B4,若 : B1>B3>B4>B2,則將結(jié)果為 B1的簇標(biāo)記為G1類(lèi)用戶(hù),結(jié)果為B2的簇標(biāo)記為G2類(lèi)用戶(hù),這兩類(lèi)用戶(hù)作為邏輯回歸模型的數(shù)據(jù)集。
3.3.2 建立判別模型
建立一種基于邏輯回歸模型的判別模型,對(duì)于指數(shù)值的大小可以用G→{0, 1}的映射進(jìn)行表示,邏輯回歸模型的結(jié)果也只能為1或0,因此,可以假設(shè)1為異常行為指數(shù)值大的用戶(hù)(即G1類(lèi)用戶(hù)),0為異常行為指數(shù)值小的用戶(hù)(即G2類(lèi)用戶(hù))。
邏輯回歸模型建立在Sigmoid函數(shù)基礎(chǔ)之上,邏輯回歸模型計(jì)算公式為:
其中, xi是提取的用戶(hù)特征,θi為xi的對(duì)應(yīng)參數(shù)(及回歸模型特征xi的回歸系數(shù))。當(dāng)Pθ(x)=0時(shí),被檢測(cè)的用戶(hù)指數(shù)值小,當(dāng)Pθ(x)=1時(shí),被檢測(cè)的異常用戶(hù)指數(shù)值大。
為計(jì)算最佳回歸參數(shù)θ,采用極大似然法:(1)輸入人工設(shè)置初始參數(shù)值(初始權(quán)重):θ'0, θ'1, θ'2, …,θ'i,…,θ'n。(2)計(jì)算輸出,得到訓(xùn)練后的參數(shù)值(修正后的權(quán)重):θ0, θ1, θ2, …, θi,…,θn。(3)利用上述的 G1類(lèi)以及G2類(lèi)用戶(hù)數(shù)據(jù)集作為邏輯回歸模型的訓(xùn)練集數(shù)據(jù)進(jìn)行訓(xùn)練,從而得到修正后的權(quán)重。
3.3.3 結(jié)果歸一化
將得到的修正后的權(quán)重值代入原始數(shù)據(jù),計(jì)算所有數(shù)據(jù)樣本的異常用戶(hù)指數(shù)。
以上是用戶(hù)特征處理自定義的指數(shù)算法模型原理推導(dǎo)。主要是對(duì)用戶(hù)的行為屬性以及用戶(hù)屬性進(jìn)行分析和選取,選擇合適的屬性作為輸入?yún)?shù),用以訓(xùn)練基于邏輯回歸算法的分類(lèi)模型,得到相應(yīng)系數(shù)(特征權(quán)重),從而完成對(duì)指數(shù)算法模型的構(gòu)建。
分析數(shù)據(jù)主要來(lái)源于2017年所有的購(gòu)票數(shù)據(jù)和用戶(hù)購(gòu)票日志,主要包括用戶(hù)的購(gòu)票信息,常用聯(lián)系人操作信息,用戶(hù)購(gòu)票行為日志信息等。通過(guò)KETTLE和SparkStreaming將數(shù)據(jù)進(jìn)行處理并存儲(chǔ)到Hive數(shù)據(jù)倉(cāng)庫(kù)中,產(chǎn)生分析數(shù)據(jù)的寬表,表中每個(gè)記錄對(duì)應(yīng)一個(gè)特征的數(shù)據(jù)項(xiàng),總共包含25種特征向量,其主要特征向量包括:CDN地址變換頻率,退票比例,頁(yè)面平均查詢(xún)頻率,改簽比例,同一時(shí)間段購(gòu)票次數(shù),常用聯(lián)系人更換頻率等。特征向量是以結(jié)構(gòu)化和數(shù)字化處理的用戶(hù)基本購(gòu)票信息,常用聯(lián)系人操作信息,購(gòu)票行為日志信息等3類(lèi)價(jià)值特征,并對(duì)特征向量進(jìn)行歸一化處理,排除各價(jià)值變量因數(shù)據(jù)級(jí)差別造成的影響。
運(yùn)用Spark MLlib中的K-means方法進(jìn)行聚類(lèi)分析。
4.2.1 聚類(lèi)變量獨(dú)立性檢驗(yàn)
聚類(lèi)算法需要輸入變量彼此之間相互獨(dú)立,故要對(duì)聚類(lèi)變量進(jìn)行相關(guān)性分析,運(yùn)用Spark MLlib工具檢驗(yàn),結(jié)果表明,挑選的25種特征變量中,存在3對(duì)變量之間相對(duì)波動(dòng)幅度的相關(guān)系數(shù)大于0.3,故刪除這3個(gè)特征向量,剩余的22種特征變量通過(guò)獨(dú)立性檢驗(yàn)。
4.2.2 聚類(lèi)分析及聚類(lèi)群體分析
通過(guò)肘部法估計(jì)出聚類(lèi)個(gè)數(shù)是4。
K-means聚類(lèi)算法將用戶(hù)群體分為4個(gè)群體,其中,各個(gè)用戶(hù)群體的聚類(lèi)中心點(diǎn)如表1所示。
表1 K-means聚類(lèi)結(jié)果表
根據(jù)K-means聚類(lèi)的結(jié)果,將第1類(lèi)和第2類(lèi)作為異常用戶(hù)指數(shù)預(yù)測(cè)模型的樣本數(shù)據(jù)進(jìn)行訓(xùn)練,其中,第1類(lèi)指數(shù)設(shè)置為1,第2指數(shù)設(shè)置為0,將該樣本數(shù)據(jù)源加入到訓(xùn)練模型中進(jìn)行訓(xùn)練,通過(guò)Spark MLlib的邏輯回歸模型分析,由式3可得各個(gè)影響因子邏輯回歸的回歸系數(shù)值 ,如表2所示。
表2 K-means聚類(lèi)參數(shù)值結(jié)果表
由此獲得的邏輯回歸模型表達(dá)式為:
根據(jù)異常用戶(hù)指數(shù)預(yù)測(cè)的模型,對(duì)K-means算法的樣本數(shù)據(jù)進(jìn)行訓(xùn)練,計(jì)算出每個(gè)用戶(hù)的異常用戶(hù)指數(shù),依據(jù)現(xiàn)有風(fēng)控系統(tǒng)對(duì)用戶(hù)的攔截頻率,發(fā)現(xiàn)現(xiàn)有風(fēng)控系統(tǒng)攔截頻率高的用戶(hù)在通過(guò)該指數(shù)模型計(jì)算出的異常用戶(hù)指數(shù)幾乎都在[0.7,1]之間,實(shí)驗(yàn)結(jié)果如表3所示。
表3 異常指數(shù)計(jì)算與分類(lèi)結(jié)果對(duì)比表
分析表明,異常用戶(hù)預(yù)測(cè)準(zhǔn)確度達(dá)到了80%,該模型具有較好的檢驗(yàn)效果。
目前,鐵路互聯(lián)網(wǎng)售票系統(tǒng)異常用戶(hù)惡意搶票、囤票現(xiàn)象泛濫,本文研究并設(shè)計(jì)了一種指數(shù)算法模型,能夠通過(guò)海量的用戶(hù)購(gòu)票信息以及交易行為日志等數(shù)據(jù),對(duì)異常購(gòu)票用戶(hù)進(jìn)行識(shí)別,并使用2017年互聯(lián)網(wǎng)客票系統(tǒng)相關(guān)數(shù)據(jù)對(duì)算法模型進(jìn)行驗(yàn)證,80%異常用戶(hù)預(yù)測(cè)準(zhǔn)確度證明該算法模型能夠比較有效地識(shí)別出異常購(gòu)票用戶(hù),可以與當(dāng)前實(shí)時(shí)風(fēng)險(xiǎn)控制系統(tǒng)相結(jié)合,更加高效地識(shí)別異常用戶(hù)。