王 威
(中國刑事警察學院 遼寧 沈陽 110000)
隨著信用卡在20世紀80年代從美國進入我國金融市場,我國信用卡發卡數量穩步上升[1]。在大數據時代,信用卡的普及和使用給群眾帶來了極大的生活便利,與此同時,各種詐騙活動也絡繹不絕地出現,嚴重影響到了群眾的經濟生活。信用卡詐騙犯罪保持高發態勢,并且由于新經濟生態的發展,其在作案手段、流程、影響上有所升級,給公私財產造成了巨大損失。隨著經偵“信息化建設,數據化實戰”戰略的穩步實施,犯罪預測已經成為當前公安經偵部門開展精準打擊和有效治理的重要工具。通過數據分析研判、行為風險預警、犯罪形勢預測對經濟犯罪提前預警預判,掌握打擊和治理經濟犯罪的主動權。在經濟犯罪發生之前,“靠前一步,主動作為”,及時預防和控制經濟犯罪風險,盡可能減少和避免人民群眾的財產損失,有力提高經濟犯罪的偵破能力。因此,在現有公安數據資源的基礎上,提出分析效率高、應用性能好的經濟犯罪風險識別方法,對偵查工作具有重要的現實意義。
XGBoost算法作為機器學習算法中的佼佼者,自提出以來,已經在疾病預測、風險預測、異常檢測以及其他領域方面都取得了非常優異的效果[2]。但是針對信用卡詐騙領域進行預測,由于數據集的不平衡性以及數據量的巨大,單一的XGBoost算法效果并不能令人滿意。解決這一問題,一般是從數據和算法兩個方面入手。其一是利用各種采樣方法處理數據,解決數據集本身分布不均的現象;其二是對傳統分類算法進行改進[3]。
基于此,針對信用卡詐騙領域數據集的不平衡性和龐大的數據量,本文提出一種利用損失函數(focal loss)改進XGBoost損失函數的信用卡詐騙預測模型,并使用評估指標來證明其具有良好的預測性能。利用損失函數來改進XGBoost中的損失函數,并用改進的分類算法訓練新的數據集得到最終的預測模型。將本文模型和處理不平衡數據的分類模型做對比,結果表明本文提出的改進模型在信用卡詐騙預測中具有較好的分類效果。
XGBoost算法是一種基于Boosting策略的集成學習算法。一般采用決策樹作為其弱學習器,再通過特定的方法將多棵決策樹進行整合,形成強學習器。其特點在于迭代,每迭代一次就生成一棵新的樹。其采用梯度下降的思想,以之前生成的所有決策樹為基礎,向著最小化給定目標函數的方向進一步,并且能夠自動利用CPU的多線程進行并行[4]。在處理不平衡數據方面,XGBoost算法具有相當優秀的性能。其主要公式如下:
模型定義為:

fk表示第K棵決策樹,模型的目標函數定義為:

上式中,n為樣本數,t為第t次迭代。第一項代表模型的損失函數,第二項代表抑制模型復雜性的正則項。
式(2)的第一項的二階泰勒展開式為:

損失函數的一階統計量為gi,二階統計量為hi。具體計算如下:

式(2)的第二項可以展開簡化為:

在第T次迭代中,由于t-1的樹第一個結構已經確定,所以其復雜度之和可以用一個常數表示,將Ω(ft)定義為:

其中T為葉子節點數,為葉子節點向量權重的范例,第一項作為葉片數量的懲罰函數,第二項作為葉片節點權重的懲罰函數。
將式(3)和式(7)代入式(2),得到式(8):

由二次方程的最優解公式可知,wj的最優解為

此時得到的最優目標函數值為

式(10)可以作為當前模型函數的評價分數,值越小表示模型表現越好。因此,當節點進行分割時,該分割的收益可由該公式得到:

GL、GR、HL、HR表示左右子節點樣本集的一級統計和與左右子節點樣本集的二級統計和。
通過上述公式,將XGBoost算法的過程總結如下:
步驟1:創建一個新的CART樹。
步驟2:根據式(4)和式(5)計算每個樣本的梯度統計量,開始迭代。
步驟3:根據貪心算法和梯度統計得到一棵新的樹。
(1):根據式(11)得到新樹的最優分割點。
(2):根據式(9)得到新書頁子節點的權重值。
步驟4:將新樹添加到模型中。
步驟5:迭代執行步驟1-步驟4,直到得到最終的模型。
2 基于改進損失函數的非平衡性XGBoost模型
在普通的 XGBoost模型中,梯度和海森矩陣的搜索是基于二進制交叉熵(lbce)的使用進行的,

在此使用加權的二元交叉熵損失函數(lwbce)和損失函數(lf)來代替二元交叉熵,從而解決數據不平衡的問題。

其中a是一個用來調整數據權重的不平衡參數,而γ是管理曲線形狀的參數,其值越低,損失越高,反之亦然,是處理不平衡分類的重要部分[5]。
基于加權二元交叉熵的概念,這里提出了改進的損失函數(lMF)不平衡參數φ。該參數是由W-CEL函數的不平衡參數得到的。

參數φ在式(15)中略有變化:

其中P代表正數類中的數據,N表示負數類中的數據,βi為二進制類的參數。
為保證實驗的嚴謹性,需要重點設置此次實驗參數,具體如表1所示。

表1 實驗參數
本文研究所用數據來源于Kaggle比賽中,Worldline和ULB的機器學習小組在進行大數據挖掘和欺詐檢測的研究合作期間,提供的歐洲某信用卡公司在2013年9月的2天內的信用卡交易數據。該數據總共有284 807個樣本,包含30個特征。但在全部284 807筆交易中只有492起詐騙行為,僅占全部交易的0.172%。數據相當不平衡,是典型的不平衡二分類樣本。由于信用卡數據需要進行保密,故經過PCA特征提取后,全部特征中28個特征為V1,V2,V3…V28。而剩下的兩個特征,TIME表示的是每筆交易與第一筆交易所相差的描述,單位為秒;另一個特征AMOUNT則為信用卡交易的金額。目標標簽CLASS表示欺詐交易的是否,1表示是,0表示否[6]。
類不平衡數據中,正數類與負數類樣本不成比例,由于數據的不規則分布,算法會偏向大多數的樣本,可能導致分類的假陰性率高,算法對數據的處理效果不佳。從訓練模型的角度來看,如果一類樣本量過少,那么其提供的信息也會過少,模型無法學會如何區分少數類,如同極端情況:在1 000個訓練樣本中,999個為正,只有1個為負,那么在過程的某一次迭代結束時,模型將所有樣本劃分為正數類,盡管負數類被誤分類,但是準確率仍有99.9%,損害可以忽略不計。因此,需要對數據進行預處理。
數據預處理是通過數據清洗和數據轉換將不完整和不一致的真實數據轉化為可處理的數據。對于任何的機器學習算法,數據質量都相當重要,因為這影響著分類器的性能。將不相關和冗余的特征進行剔除,可以提高模型的效率,減少模型的訓練時間。在此采用min-max標準化方法進行歸一,公式如下:

其中d`為歸一化特征數據值,d為原始特征數據值,min(d)為所有數據的最小值,max(d)為所有數據的最大值。
在“數量”功能被規范化后,下一步是找到最相關的功能來使用。因此,為了找到每個特征的唯一性,使用相關系數來找到現有特征中最好的特征。

其中,F1是特征1,F2是特征2,F1F2是特征1和特征2的平均值。
采用accuracy(準確率)、precision(精確率)、recall(召回值)、和MCC(馬修斯相關系數)四個與不平衡分類相關的數據指標來評估模型的性能[7]。由于該數據集的數據偏向多數類,因此準確率的值會較高。在類不平衡模型中,只關注準確率可能會導致分類的極度不平衡。而精確度和召回率則因為提供了一致性,對評估提供了可靠的參考性。MCC因為包括了真陽性(TP)、假陰性(FN)、真陰性(TN)和假陽性(FP),非常適合用來評價不平衡的數據集。用0表示正數類即按時還款,1表示負數類即詐騙行為。其中TP(true positive)表示真實值為0,預測值也為0的樣本數,FN(negative)表示真實值為0,預測值為1的樣本數,FP(positive)表示真實值為1,預測值為0的樣本數,TN(true negative)表示真實值為1,預測值也為1的樣本數[8]。
下面定義用于度量分類器性能的度量標準:
準確率(accuracy):在所有樣本中模型預測正確的比例。

精確率(precision):表示在模型預測為正數類的所有結果中,模型預測正確的比例。

召回率(recall):表示在實際為正數類的所有結果中,模型預測正確的比例。

馬修斯相關系數(MCC):本質上是一個描述實際分類與預測分類之間的相關系數,它的取值范圍為[-1,1],取值為1時表示對受試對象的完美預測,取值為0時表示預測的結果還不如隨機預測的結果,-1是指預測分類和實際分類完全不一致。

本實驗通過三個不同的場景來進行,第一個場景使用原始數據,即正實例與負實例數量相差極多,極端失衡的情況。在第二個場景中,將原始數據最小化,這樣正常交易類將有10 000個數據,但詐騙類的數據沒有改變,即輕度失衡的情況。最后一個場景將正常交易類數據量提升至125 000個,其余不變。第一步執行“數量”特征的最小-最大標準化。第二步使用系數相關法進行特征選擇。此外,實驗將分為兩部分,即不使用超參數進行傳統機器學習的實驗和使用超參數γ求值的實驗。這兩項實驗都分為70%的訓練集和30%的測試集。在表2中列出了場景1中幾種傳統的機器學習方法:邏輯回歸(logistic regression)、支持向量機(support vector machine)、K近鄰分布(k-nearest neighbour)和樸素貝葉斯(Na?ve Bayes)。可以看出,由于數據分布是極度不平衡的,召回率和MCC值與準確度值相比有很大差異,而準確率都接近100%。

表2 場景1中傳統機器學習算法的評估
表3是場景1中普通XGBoost、基于加權二元交叉熵損失函數的不平衡XGBoost、基于損失函數的不平衡XGBoost與FXGBoost的比較。在該表中,我們在XGBoost的t參數中不使用超參數進行調整,而是使用Scikit learn中的GridSearchCV方法來調整參數值γ和α。結果顯示,FXGBoost模型的精確率高達0.97,與基于損失函數的不平衡XGBoost一致,是所有模型中最高的。并且FXGBoost的召回率為0.56,MCC值為0.72,都是所有模型中最高的。但是對于不平衡數據集來說,該模型表現仍不夠優秀。為驗證本文提出的模型在數據層面和算法層面的改進效果,我們將來自正常交易類數據的數量最小化,由284 315例減少為10 000例,稱之為輕度失衡場景。同時創建了另一個場景將正常交易數據量減少為125 000個,稱之為中度失衡場景。

表3 場景1中各XGBoost算法的評估
表4列出了場景2中傳統機器學習方法的評估結果。盡管這些模型顯示的結果看起來很好,但是由于精確率、召回率和MCC的值相差很大,所以結果是無效的。表5列出了場景2中各方法的評估結果。結果顯示,FXGBoost模型是其中最有效的,其精確度、召回率和MCC值相對接近,并且準確率與其他評估分數之間沒有太大差距。基于損失函數的不平衡XGBoost方法雖然在精確度和召回率方面仍然存在差異,但在處理不平衡數據方面相對較好。表6是場景3中所有方法的評估結果,在場景3中,從MCC評分結果來看,FXGBoost是最好的方法。基于場景1和場景2中給出的實驗,該方法比傳統的機器學習以及不平衡XGBoost在處理不平衡數據集上的效果都要好。

表4 場景2中傳統機器學習算法的評估

表5 場景2中各XGBoost算法的評估

表6 場景3中各算法的評估
本文提出了一種基于改進的損失函數的XGBoost模型(FXGBoost)來解決不平衡數據集問題。該方法是受到加權二元交叉熵的啟發,根據參數的不平衡性,基于WCEL不平衡參數進行了改進,并采用加權評分公式對其進行評分。在實驗中,我們使用ULB機器學習組數據對信用卡詐騙問題進行分類。實驗結果表明,該方法比現有其他機器學習方法在處理不平衡數據集上更加有效。