李 雯,朱建生,單杏花
(1.中國鐵道科學研究院集團有限公司 研究生部,北京 100081;2.中國鐵道科學研究院集團有限公司 電子計算技術研究所,北京 100081)
鐵路客運自2011年推出12306互聯網售票系統以來[1],不斷地進行技術攻關,至2018年春運,該系統的承載能力與以往相比已經有了質的飛躍,單日售票能力從1 000萬張提高到了1 500萬張,高峰時段1 s可以售出近700張票,已經可以滿足春運購票期間大量用戶購票時系統的正常穩定運行。但是第三方軟件以“預付可提高排名”,“專享100 M提速光纖”等標題為“噱頭”,吸引了大量的用戶借助其進行購票。數據顯示,2017年12月開始,各種搶票軟件活躍用戶環比增長近3成,搶票功能加速包費用從10元到50元不等,在利益的驅使下,第三方軟件公司嚴重損害了用戶的利益和公平公正的購票環境。目前,互聯網交易相關的法律法規還不健全[2],相關異常用戶的行為對社會危害性極大,嚴重破壞了交易平臺公平公正的環境。
通過技術手段對異常購票行為進行限制是確保公平公正售票,保障百姓購票利益的主要方式。目前,風險控制系統可以從用戶登錄IP更換頻率、設備指紋更換頻率、余票查詢頻率以及內容分發網絡(CDN)地址更換頻率等角度實時識別異常請求[3]。然而,對海量的用戶行為歷史數據還沒有進行更深一層的分析,還不能有效地挖掘出歷史數據的潛在價值,因此,急需構建一個基于海量歷史數據對異常用戶進行識別的模型。本文結合大數據技術及機器學習技術,研究識別異常用戶的分析方法,設計了一套異常用戶智能識別模型,通過對歷史用戶數據進行機器學習訓練,實現對囤票、倒票等異常用戶行為的高效識別。
為了識別異常用戶,需要對用戶的異常性進行指數化,異常用戶指數區間為[0~1],如果該指數越接近1,則說明該用戶是異常用戶的概率越大。
鐵路12306互聯網售票系統在提供服務過程中,用戶與系統交互產生了海量有關用戶訪問的行為日志數據,這些日志數據詳細描述了用戶對鐵路12306互聯網售票系統的使用情況,通過對海量的購票日志數據進行數據分析,挖掘并提取出用戶異常購票行為特征,建立規則庫,根據規則識別出異常購票用戶。
通過離線分析異常購票用戶的識別模型,在用戶使用鐵路12306互聯網售票系統購票的過程中,實時收集該用戶的行為日志數據以及基本數據(包括個人信息、常用聯系人信息等),并與離線分析出的識別模型進行匹配,從而達到實時管控和打擊刷票等異常行為的目的,維護互聯網售票交易的公平性。
基于海量用戶信息,傳統的數據存儲和處理方法無法滿足算法的高效準確運行。本文主要通過KETTLE和Flume作為數據采集的主要工具[4-5],其中,KETTLE主要采集關系型數據庫的數據,Flume主要采集用戶操作日志即非結構化數據。關系型數據庫的數據直接存儲到Hive中等待數據預處理, Flume采集的用戶行為日志數據,進入Kafka消息隊列,被SparkStreaming準實時消費解析成結構化數據并存儲到 Hive中[6-7]。
對于采集到Hive中的用戶行為數據以及購票信息,主要使用Hive Sql及其自定義函數(UDF),將數據處理操作轉換成分布式MapReduce任務運行,使海量數據能夠高效準確地進行處理。這種方法能夠滿足Spark機器學習數據模式的條件,從而對數據源指數權重算法模型進行高效訓練。
指數的大小源于數據集的特征,而處理這些特征需要一組權重。因此,在異常用戶特征屬性標簽的實現處理問題上,采用一種自定義的指數權重算法,即通過指數權重算法動態計算指數的權重,實現修正人工確定指數的誤判。
根據研究目標的實際情況,異常用戶指數的計算分為兩部分:(1)用戶特征權重值計算;(2)用戶指數預測。因此,采用Spark MLlib中的K-means聚類算法和邏輯回歸判別算法,構成一個組合指數算法模型,對異常用戶指數進行預測[8-9],指數權重算法的具體結構如圖1所示。

圖1 指數權重算法結構
指數權重算法為兩層結構:第1層主要用于修正特征值權重;第2層主要是用于計算指數P值,P值的取值范圍為[0~1]。
(1)利用K-means聚類算法將數據分成K類。其中,由于該場景中無法確定具體的k值,因此,通過肘部法則估計聚類數量。肘部法則模擬不同k值的成本函數值,k值增大,平均畸變程度減小,從而每個類包含的樣本數減少,樣本離其重心更近。但是,隨著k值繼續增大,平均畸變程度的改善效果將不斷減低,當畸變程度的改善效果下降幅度最大時,相應的k值稱為肘部。
(2)利用K-means聚類算法[10]的結果篩選最大值簇和最小值簇。
(3)篩選得到的最大值簇數據類標記為1,最小值簇數據類標記為0,將二者數據作為邏輯回歸的訓練集數據。
(4)利用篩選得到的數據訓練邏輯回歸模型。
(5)利用確定的邏輯回歸模型得到修正的特征權重。
(6)將修正后的權重帶入原始數據,計算出最終的指數。
(7)對結果進行數據歸一化(指數歸一化,指數范圍為 [0~1])。
該算法的最終目標是計算樣本特征的某一指數(沒有歸一化的指數)。指數的大小來源于樣本特征實現的特征值。通常有:

其中, w1, w2,…, wn表示權重系數,x1, x2,…, xn表示特征值。已知w1, w2,…, wn初始值,為了得到準確度高的G值,需要修正權重值。具體修正權重值算法步驟如下。
3.3.1 計算聚類中心
在數據采集階段,利用K-means聚類方法對數據集進行聚類,得到聚類的簇中心向量:β1, β1,…,βn,根據公式(2)對簇中心進行指數化:

其中,A表示初始權重, Bi為第i個簇中心的結果指數,最后篩選出簇中心結果指數最大和最小的兩個簇。
假設總共分為4類,其中,簇中心向量分別為:β1,β2,β3,β4,那么,簇中心的結果指數取值有 :B1, B2, B3, B4,若 : B1>B3>B4>B2,則將結果為 B1的簇標記為G1類用戶,結果為B2的簇標記為G2類用戶,這兩類用戶作為邏輯回歸模型的數據集。
3.3.2 建立判別模型
建立一種基于邏輯回歸模型的判別模型,對于指數值的大小可以用G→{0, 1}的映射進行表示,邏輯回歸模型的結果也只能為1或0,因此,可以假設1為異常行為指數值大的用戶(即G1類用戶),0為異常行為指數值小的用戶(即G2類用戶)。
邏輯回歸模型建立在Sigmoid函數基礎之上,邏輯回歸模型計算公式為:

其中, xi是提取的用戶特征,θi為xi的對應參數(及回歸模型特征xi的回歸系數)。當Pθ(x)=0時,被檢測的用戶指數值小,當Pθ(x)=1時,被檢測的異常用戶指數值大。
為計算最佳回歸參數θ,采用極大似然法:(1)輸入人工設置初始參數值(初始權重):θ'0, θ'1, θ'2, …,θ'i,…,θ'n。(2)計算輸出,得到訓練后的參數值(修正后的權重):θ0, θ1, θ2, …, θi,…,θn。(3)利用上述的 G1類以及G2類用戶數據集作為邏輯回歸模型的訓練集數據進行訓練,從而得到修正后的權重。
3.3.3 結果歸一化
將得到的修正后的權重值代入原始數據,計算所有數據樣本的異常用戶指數。
以上是用戶特征處理自定義的指數算法模型原理推導。主要是對用戶的行為屬性以及用戶屬性進行分析和選取,選擇合適的屬性作為輸入參數,用以訓練基于邏輯回歸算法的分類模型,得到相應系數(特征權重),從而完成對指數算法模型的構建。
分析數據主要來源于2017年所有的購票數據和用戶購票日志,主要包括用戶的購票信息,常用聯系人操作信息,用戶購票行為日志信息等。通過KETTLE和SparkStreaming將數據進行處理并存儲到Hive數據倉庫中,產生分析數據的寬表,表中每個記錄對應一個特征的數據項,總共包含25種特征向量,其主要特征向量包括:CDN地址變換頻率,退票比例,頁面平均查詢頻率,改簽比例,同一時間段購票次數,常用聯系人更換頻率等。特征向量是以結構化和數字化處理的用戶基本購票信息,常用聯系人操作信息,購票行為日志信息等3類價值特征,并對特征向量進行歸一化處理,排除各價值變量因數據級差別造成的影響。
運用Spark MLlib中的K-means方法進行聚類分析。
4.2.1 聚類變量獨立性檢驗
聚類算法需要輸入變量彼此之間相互獨立,故要對聚類變量進行相關性分析,運用Spark MLlib工具檢驗,結果表明,挑選的25種特征變量中,存在3對變量之間相對波動幅度的相關系數大于0.3,故刪除這3個特征向量,剩余的22種特征變量通過獨立性檢驗。
4.2.2 聚類分析及聚類群體分析
通過肘部法估計出聚類個數是4。
K-means聚類算法將用戶群體分為4個群體,其中,各個用戶群體的聚類中心點如表1所示。

表1 K-means聚類結果表
根據K-means聚類的結果,將第1類和第2類作為異常用戶指數預測模型的樣本數據進行訓練,其中,第1類指數設置為1,第2指數設置為0,將該樣本數據源加入到訓練模型中進行訓練,通過Spark MLlib的邏輯回歸模型分析,由式3可得各個影響因子邏輯回歸的回歸系數值 ,如表2所示。

表2 K-means聚類參數值結果表
由此獲得的邏輯回歸模型表達式為:

根據異常用戶指數預測的模型,對K-means算法的樣本數據進行訓練,計算出每個用戶的異常用戶指數,依據現有風控系統對用戶的攔截頻率,發現現有風控系統攔截頻率高的用戶在通過該指數模型計算出的異常用戶指數幾乎都在[0.7,1]之間,實驗結果如表3所示。

表3 異常指數計算與分類結果對比表
分析表明,異常用戶預測準確度達到了80%,該模型具有較好的檢驗效果。
目前,鐵路互聯網售票系統異常用戶惡意搶票、囤票現象泛濫,本文研究并設計了一種指數算法模型,能夠通過海量的用戶購票信息以及交易行為日志等數據,對異常購票用戶進行識別,并使用2017年互聯網客票系統相關數據對算法模型進行驗證,80%異常用戶預測準確度證明該算法模型能夠比較有效地識別出異常購票用戶,可以與當前實時風險控制系統相結合,更加高效地識別異常用戶。