張野 葉國林 李欣剛
(銀聯商務股份有限公司,上海 201203)
據統計,我國境外賭博網站目前達到2000多個,網站注冊的賭博會員有數百萬人[1]。賭博是社會的不安定因素,對賭博的個人來說容易造成因嗜賭而傾家蕩產。對于國家來說,我國每年因為網絡賭博而流失到境外的資金高達幾百億元。銀聯商務作為國內最大的收單機構,服務于近800萬的商戶,某些少數非法商戶,利用銀聯商務的POS機或者條碼支付進行線上或者線下的賭博活動,嚴重違反了收單和支付市場主體合規經營意識,損壞了個人利益、國家利益和公司形象。可見監控打擊網絡賭博迫在眉睫,付順順[2]提出使用機器學習算法對網站內容做分本分類,以識別賭博網站。由于在金融支付領域的賭博監測屬于商業風控領域,且與企業業務密切相關,所以相關研究公開較少。本文提出基于組合Random Forest、GBDT、SVM和Logistic Regression的Stacking集成學習算法RGSL,以銀聯商務入網的商戶靜態信息和商戶的交易流水記錄等構造商戶特征,建立組合模型。通過分類器融合,能夠解決單個分類器易過擬合及其自身的局限性,效果更加準確。

圖1 隨機森林實現原理
隨機森林[3]由Breiman等人提出,由多棵CART樹組成,是典型的Bagging集成算法。算法模型最后的分類結果為每棵樹投票所得,即得票最多的類為最終分類結果。隨機森林的實現原理如圖1。
隨機森林的隨機性體現在樣本的隨機性和特征的隨機性:
(1)樣本隨機性:在構造每棵樹的輸入數據集時,從原始數據集中采取有放回的方式抽樣,最終得出與原始數據集數量相同的一個子數據集,該子數據集中的樣本可以存在重復。通過樣本隨機性實現了基分類器的多樣性。
(2)特征隨機性:在樣本隨機性基礎上生成的數據集中,隨機選取個特征的子集,d為全部特征的個數,接著選擇一個最優的特征進行劃分。通過特征隨機性,不僅能夠關注單棵樹的性能,而且減少了樹與樹之間的相關性,提高了模型的性能,減少了模型的方差,增加了算法對噪聲的魯棒性。
梯度提升樹是集成算法Boosting中最具有代表性的一種[4],是將弱學習器提升為強學習器的算法。它的每一次計算都是為了減少上一次的殘差(殘差是指真實值與當前預測值之間的差值),而為了減少這些殘差,在殘差減少的梯度方向上建立一個新的回歸樹。最終的模型為整個迭代過程生成的回歸樹的累加。GBDT的迭代過程為:
對第t輪第i個樣本計算殘差為:

對回歸樹的每個葉子節點計算最小的損失函數,得到最佳的葉子節點輸出值:

其中Rtj是第t棵樹對應葉子節點區域,j為樹的葉子節點個數,θ為初始常數,最終的GBDT模型為:

GBDT每一步都會在上一輪的基礎上更加擬合原數據,所以可以降低偏差。
SVM算法由Vapnik[5]提出,用于分類問題時,其核心思想是在分類準確率最高的同時,尋找一個能夠將訓練集正確劃分且最大化兩個類的間距的超平面,如圖2所示。SVM不僅可以用于線性可分的數據,對于線性不可分的情況,可以通過核函數將數據映射到高維的特征空間,此時高維特征空間的數據是線性可分的。
SVM算法流程如下:
輸出:分類超平面和決策函數
步驟1:構造帶約束的最優化問題:

約束條件是:

圖2 SVM原理圖

其中iξ為松弛因子,C>0為懲罰系數。

其約束為:


步驟3:求解超平面:

決策函數:

在支持向量機訓練過程中,因為對偶問題,目標函數與決策函數的只涉及樣本的內積計算,所以對于線性不可分的樣本,只需要使用核函數K(x,z)替代內積計算,線性不可分的決策函數為:

Stacking算法與Bagging、Boosting算法的區別是:Stacking算法采用一種特殊的結合策略,主要結合不同類型的基學習器,而后兩者結合的都是相同類型的基學習器。周志華[6]提出,不同類型模型之間較低的相關性可以提高模型的誤差校正能力,因此模型結果的差異性越高,最終Stacking集成模型的效果也會越好。李強[7]通過Stacking算法對員工離職預測分析,李珩[8]通過Stacking算法對中文組塊分析,結果顯示,在不同領域上,使用不同基分類器的Stacking模型融合算法的效果都要比單一基分類器效果好。Stacking算法主要分為2層,第一層的分類器為基分類器,第二層的分類器為元分類器,簡要步驟為:將多個基分類器的輸出結果作為新的特征,輸入到元分類器中用于新的訓練學習。
RGSL分別采用隨機森林、梯度提升樹和支持向量機作為基分類器,邏輯回歸作為元分類器。第一階段:樣本的80%作為訓練集Train,20%作為測試集Test。訓練集采用5折交叉驗證構建模型,分別為Train1、Train2、Train3、Train4和Train5,用隨機森林、梯度提升樹和支持向量機分別訓練5次,并每次對Test做預測,每個模型會分別得出5個驗證集的結果和5個測試集的結果。其中隨機森林的驗證結果為rfv1~rfv5,測試結果分別為rft1~rft5;梯度提升樹的驗證結果為gbtv1~gbtv5,測試結果分別為gbtt1~gbtt5;支持向量機的驗證結果為svmv1~svmv5,測試結果分別為svmt1~svmt5。縱向疊加驗證集結果,依次分別為RFD、GBTD和SVMD;平均取值測試集結果,分別為RFT、GBTT和SVMT。第二階段:將第一階段的RFD、GBTD和SVMD橫向合并作為新的訓練集,RFT、GBTT和SVMT橫向合并作為新的驗證集,并使用邏輯回歸算法訓練,得出最終的模型結果。RGSL Stacking的算法模型如圖3。

圖3 RGSL Stacking算法模型

圖4 數據處理流程
實驗源數據采用的是銀聯商務2019年9月~2019年12月的商戶收單流水以及靜態商戶信息,通過數據清洗、勾兌、特征選擇等操作,匯總出以商戶為維度的計125多萬的樣本,每個樣本包含155個動態特征和17個靜態特征。數據的部分特征如表1。

表1 數據部分特征
實驗數據在特征選擇時的最大時間切片跨度為30d,原始特征計算完畢后,進行特征工程,其中包括對連續型特征做95%分位數和5%分位數值截取以及最小最大值歸一化,對類別型特征做濃度編碼,得出可以直接輸入到模型的數據特征。實驗數據的處理流程如圖4。
由于銀聯商務的生產數據存儲在大數據集群中,大數據框架是Cloudera,數據文件存儲在HDFS上,結構化的表數據存儲在Hive,所以本實驗計算框架采用的是Spark,機器學習相關計算采用的是Spark的Spark MLilib。
本次實驗屬于分類任務,所以采用混淆矩陣對實驗結果進行評價分析。實驗關注的是賭博商戶,所以將賭博商戶定義為正樣本,其他商戶為負樣本,混淆矩陣如表2。
根據混淆矩陣,計算準確率P,召回率R和綜合指標F1值。計算公式如下:

表2 混淆矩陣

表3 4種算法的分類結果

將2.1中處理好的特征數據,在2.2的實驗平臺上用1.4提出的算法做模型訓練和評估,并采用1.4中的三個基分類器分別建模,比較四種模型的評價指標,如表3。
由表3可知,這四種算法模型的P和R都有較高的值,都在90%以上,說明數據特征較好,但是RGSL Stacking算法的結果都優于其他模型,這是因為RGSL Stacking算法使用了二階訓練的方式,在第二階段訓練時輸入的訓練集是RF、GBDT和SVM的結果,并沒有使用原始的數據集,最大程度地避免了過擬合的風險,使得實驗結果更加準確。
本文針對銀聯商務的賭博商戶監測任務提出了基于Stacking模型融合的算法,實驗結果表明,該算法在一定程度上可以防止過擬合,與單一的模型對比,在準確率和召回率上都有了顯著的提高。在金融風控領域,該效果的提高,可以及時監測出賭博商戶,降低金融風險和減少損失,有實際的應用價值,銀聯商務已經落地應用。