王 威
(中國刑事警察學(xué)院 遼寧 沈陽 110000)
隨著信用卡在20世紀(jì)80年代從美國進(jìn)入我國金融市場,我國信用卡發(fā)卡數(shù)量穩(wěn)步上升[1]。在大數(shù)據(jù)時代,信用卡的普及和使用給群眾帶來了極大的生活便利,與此同時,各種詐騙活動也絡(luò)繹不絕地出現(xiàn),嚴(yán)重影響到了群眾的經(jīng)濟(jì)生活。信用卡詐騙犯罪保持高發(fā)態(tài)勢,并且由于新經(jīng)濟(jì)生態(tài)的發(fā)展,其在作案手段、流程、影響上有所升級,給公私財產(chǎn)造成了巨大損失。隨著經(jīng)偵“信息化建設(shè),數(shù)據(jù)化實戰(zhàn)”戰(zhàn)略的穩(wěn)步實施,犯罪預(yù)測已經(jīng)成為當(dāng)前公安經(jīng)偵部門開展精準(zhǔn)打擊和有效治理的重要工具。通過數(shù)據(jù)分析研判、行為風(fēng)險預(yù)警、犯罪形勢預(yù)測對經(jīng)濟(jì)犯罪提前預(yù)警預(yù)判,掌握打擊和治理經(jīng)濟(jì)犯罪的主動權(quán)。在經(jīng)濟(jì)犯罪發(fā)生之前,“靠前一步,主動作為”,及時預(yù)防和控制經(jīng)濟(jì)犯罪風(fēng)險,盡可能減少和避免人民群眾的財產(chǎn)損失,有力提高經(jīng)濟(jì)犯罪的偵破能力。因此,在現(xiàn)有公安數(shù)據(jù)資源的基礎(chǔ)上,提出分析效率高、應(yīng)用性能好的經(jīng)濟(jì)犯罪風(fēng)險識別方法,對偵查工作具有重要的現(xiàn)實意義。
XGBoost算法作為機器學(xué)習(xí)算法中的佼佼者,自提出以來,已經(jīng)在疾病預(yù)測、風(fēng)險預(yù)測、異常檢測以及其他領(lǐng)域方面都取得了非常優(yōu)異的效果[2]。但是針對信用卡詐騙領(lǐng)域進(jìn)行預(yù)測,由于數(shù)據(jù)集的不平衡性以及數(shù)據(jù)量的巨大,單一的XGBoost算法效果并不能令人滿意。解決這一問題,一般是從數(shù)據(jù)和算法兩個方面入手。其一是利用各種采樣方法處理數(shù)據(jù),解決數(shù)據(jù)集本身分布不均的現(xiàn)象;其二是對傳統(tǒng)分類算法進(jìn)行改進(jìn)[3]。
基于此,針對信用卡詐騙領(lǐng)域數(shù)據(jù)集的不平衡性和龐大的數(shù)據(jù)量,本文提出一種利用損失函數(shù)(focal loss)改進(jìn)XGBoost損失函數(shù)的信用卡詐騙預(yù)測模型,并使用評估指標(biāo)來證明其具有良好的預(yù)測性能。利用損失函數(shù)來改進(jìn)XGBoost中的損失函數(shù),并用改進(jìn)的分類算法訓(xùn)練新的數(shù)據(jù)集得到最終的預(yù)測模型。將本文模型和處理不平衡數(shù)據(jù)的分類模型做對比,結(jié)果表明本文提出的改進(jìn)模型在信用卡詐騙預(yù)測中具有較好的分類效果。
XGBoost算法是一種基于Boosting策略的集成學(xué)習(xí)算法。一般采用決策樹作為其弱學(xué)習(xí)器,再通過特定的方法將多棵決策樹進(jìn)行整合,形成強學(xué)習(xí)器。其特點在于迭代,每迭代一次就生成一棵新的樹。其采用梯度下降的思想,以之前生成的所有決策樹為基礎(chǔ),向著最小化給定目標(biāo)函數(shù)的方向進(jìn)一步,并且能夠自動利用CPU的多線程進(jìn)行并行[4]。在處理不平衡數(shù)據(jù)方面,XGBoost算法具有相當(dāng)優(yōu)秀的性能。其主要公式如下:
模型定義為:
fk表示第K棵決策樹,模型的目標(biāo)函數(shù)定義為:
上式中,n為樣本數(shù),t為第t次迭代。第一項代表模型的損失函數(shù),第二項代表抑制模型復(fù)雜性的正則項。
式(2)的第一項的二階泰勒展開式為:
損失函數(shù)的一階統(tǒng)計量為gi,二階統(tǒng)計量為hi。具體計算如下:
式(2)的第二項可以展開簡化為:
在第T次迭代中,由于t-1的樹第一個結(jié)構(gòu)已經(jīng)確定,所以其復(fù)雜度之和可以用一個常數(shù)表示,將Ω(ft)定義為:
其中T為葉子節(jié)點數(shù),為葉子節(jié)點向量權(quán)重的范例,第一項作為葉片數(shù)量的懲罰函數(shù),第二項作為葉片節(jié)點權(quán)重的懲罰函數(shù)。
將式(3)和式(7)代入式(2),得到式(8):
由二次方程的最優(yōu)解公式可知,wj的最優(yōu)解為
此時得到的最優(yōu)目標(biāo)函數(shù)值為
式(10)可以作為當(dāng)前模型函數(shù)的評價分?jǐn)?shù),值越小表示模型表現(xiàn)越好。因此,當(dāng)節(jié)點進(jìn)行分割時,該分割的收益可由該公式得到:
GL、GR、HL、HR表示左右子節(jié)點樣本集的一級統(tǒng)計和與左右子節(jié)點樣本集的二級統(tǒng)計和。
通過上述公式,將XGBoost算法的過程總結(jié)如下:
步驟1:創(chuàng)建一個新的CART樹。
步驟2:根據(jù)式(4)和式(5)計算每個樣本的梯度統(tǒng)計量,開始迭代。
步驟3:根據(jù)貪心算法和梯度統(tǒng)計得到一棵新的樹。
(1):根據(jù)式(11)得到新樹的最優(yōu)分割點。
(2):根據(jù)式(9)得到新書頁子節(jié)點的權(quán)重值。
步驟4:將新樹添加到模型中。
步驟5:迭代執(zhí)行步驟1-步驟4,直到得到最終的模型。
2 基于改進(jìn)損失函數(shù)的非平衡性XGBoost模型
在普通的 XGBoost模型中,梯度和海森矩陣的搜索是基于二進(jìn)制交叉熵(lbce)的使用進(jìn)行的,
在此使用加權(quán)的二元交叉熵?fù)p失函數(shù)(lwbce)和損失函數(shù)(lf)來代替二元交叉熵,從而解決數(shù)據(jù)不平衡的問題。
其中a是一個用來調(diào)整數(shù)據(jù)權(quán)重的不平衡參數(shù),而γ是管理曲線形狀的參數(shù),其值越低,損失越高,反之亦然,是處理不平衡分類的重要部分[5]。
基于加權(quán)二元交叉熵的概念,這里提出了改進(jìn)的損失函數(shù)(lMF)不平衡參數(shù)φ。該參數(shù)是由W-CEL函數(shù)的不平衡參數(shù)得到的。
參數(shù)φ在式(15)中略有變化:
其中P代表正數(shù)類中的數(shù)據(jù),N表示負(fù)數(shù)類中的數(shù)據(jù),βi為二進(jìn)制類的參數(shù)。
為保證實驗的嚴(yán)謹(jǐn)性,需要重點設(shè)置此次實驗參數(shù),具體如表1所示。
表1 實驗參數(shù)
本文研究所用數(shù)據(jù)來源于Kaggle比賽中,Worldline和ULB的機器學(xué)習(xí)小組在進(jìn)行大數(shù)據(jù)挖掘和欺詐檢測的研究合作期間,提供的歐洲某信用卡公司在2013年9月的2天內(nèi)的信用卡交易數(shù)據(jù)。該數(shù)據(jù)總共有284 807個樣本,包含30個特征。但在全部284 807筆交易中只有492起詐騙行為,僅占全部交易的0.172%。數(shù)據(jù)相當(dāng)不平衡,是典型的不平衡二分類樣本。由于信用卡數(shù)據(jù)需要進(jìn)行保密,故經(jīng)過PCA特征提取后,全部特征中28個特征為V1,V2,V3…V28。而剩下的兩個特征,TIME表示的是每筆交易與第一筆交易所相差的描述,單位為秒;另一個特征AMOUNT則為信用卡交易的金額。目標(biāo)標(biāo)簽CLASS表示欺詐交易的是否,1表示是,0表示否[6]。
類不平衡數(shù)據(jù)中,正數(shù)類與負(fù)數(shù)類樣本不成比例,由于數(shù)據(jù)的不規(guī)則分布,算法會偏向大多數(shù)的樣本,可能導(dǎo)致分類的假陰性率高,算法對數(shù)據(jù)的處理效果不佳。從訓(xùn)練模型的角度來看,如果一類樣本量過少,那么其提供的信息也會過少,模型無法學(xué)會如何區(qū)分少數(shù)類,如同極端情況:在1 000個訓(xùn)練樣本中,999個為正,只有1個為負(fù),那么在過程的某一次迭代結(jié)束時,模型將所有樣本劃分為正數(shù)類,盡管負(fù)數(shù)類被誤分類,但是準(zhǔn)確率仍有99.9%,損害可以忽略不計。因此,需要對數(shù)據(jù)進(jìn)行預(yù)處理。
數(shù)據(jù)預(yù)處理是通過數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換將不完整和不一致的真實數(shù)據(jù)轉(zhuǎn)化為可處理的數(shù)據(jù)。對于任何的機器學(xué)習(xí)算法,數(shù)據(jù)質(zhì)量都相當(dāng)重要,因為這影響著分類器的性能。將不相關(guān)和冗余的特征進(jìn)行剔除,可以提高模型的效率,減少模型的訓(xùn)練時間。在此采用min-max標(biāo)準(zhǔn)化方法進(jìn)行歸一,公式如下:
其中d`為歸一化特征數(shù)據(jù)值,d為原始特征數(shù)據(jù)值,min(d)為所有數(shù)據(jù)的最小值,max(d)為所有數(shù)據(jù)的最大值。
在“數(shù)量”功能被規(guī)范化后,下一步是找到最相關(guān)的功能來使用。因此,為了找到每個特征的唯一性,使用相關(guān)系數(shù)來找到現(xiàn)有特征中最好的特征。
其中,F(xiàn)1是特征1,F(xiàn)2是特征2,F(xiàn)1F2是特征1和特征2的平均值。
采用accuracy(準(zhǔn)確率)、precision(精確率)、recall(召回值)、和MCC(馬修斯相關(guān)系數(shù))四個與不平衡分類相關(guān)的數(shù)據(jù)指標(biāo)來評估模型的性能[7]。由于該數(shù)據(jù)集的數(shù)據(jù)偏向多數(shù)類,因此準(zhǔn)確率的值會較高。在類不平衡模型中,只關(guān)注準(zhǔn)確率可能會導(dǎo)致分類的極度不平衡。而精確度和召回率則因為提供了一致性,對評估提供了可靠的參考性。MCC因為包括了真陽性(TP)、假陰性(FN)、真陰性(TN)和假陽性(FP),非常適合用來評價不平衡的數(shù)據(jù)集。用0表示正數(shù)類即按時還款,1表示負(fù)數(shù)類即詐騙行為。其中TP(true positive)表示真實值為0,預(yù)測值也為0的樣本數(shù),F(xiàn)N(negative)表示真實值為0,預(yù)測值為1的樣本數(shù),F(xiàn)P(positive)表示真實值為1,預(yù)測值為0的樣本數(shù),TN(true negative)表示真實值為1,預(yù)測值也為1的樣本數(shù)[8]。
下面定義用于度量分類器性能的度量標(biāo)準(zhǔn):
準(zhǔn)確率(accuracy):在所有樣本中模型預(yù)測正確的比例。
精確率(precision):表示在模型預(yù)測為正數(shù)類的所有結(jié)果中,模型預(yù)測正確的比例。
召回率(recall):表示在實際為正數(shù)類的所有結(jié)果中,模型預(yù)測正確的比例。
馬修斯相關(guān)系數(shù)(MCC):本質(zhì)上是一個描述實際分類與預(yù)測分類之間的相關(guān)系數(shù),它的取值范圍為[-1,1],取值為1時表示對受試對象的完美預(yù)測,取值為0時表示預(yù)測的結(jié)果還不如隨機預(yù)測的結(jié)果,-1是指預(yù)測分類和實際分類完全不一致。
本實驗通過三個不同的場景來進(jìn)行,第一個場景使用原始數(shù)據(jù),即正實例與負(fù)實例數(shù)量相差極多,極端失衡的情況。在第二個場景中,將原始數(shù)據(jù)最小化,這樣正常交易類將有10 000個數(shù)據(jù),但詐騙類的數(shù)據(jù)沒有改變,即輕度失衡的情況。最后一個場景將正常交易類數(shù)據(jù)量提升至125 000個,其余不變。第一步執(zhí)行“數(shù)量”特征的最小-最大標(biāo)準(zhǔn)化。第二步使用系數(shù)相關(guān)法進(jìn)行特征選擇。此外,實驗將分為兩部分,即不使用超參數(shù)進(jìn)行傳統(tǒng)機器學(xué)習(xí)的實驗和使用超參數(shù)γ求值的實驗。這兩項實驗都分為70%的訓(xùn)練集和30%的測試集。在表2中列出了場景1中幾種傳統(tǒng)的機器學(xué)習(xí)方法:邏輯回歸(logistic regression)、支持向量機(support vector machine)、K近鄰分布(k-nearest neighbour)和樸素貝葉斯(Na?ve Bayes)??梢钥闯觯捎跀?shù)據(jù)分布是極度不平衡的,召回率和MCC值與準(zhǔn)確度值相比有很大差異,而準(zhǔn)確率都接近100%。
表2 場景1中傳統(tǒng)機器學(xué)習(xí)算法的評估
表3是場景1中普通XGBoost、基于加權(quán)二元交叉熵?fù)p失函數(shù)的不平衡XGBoost、基于損失函數(shù)的不平衡XGBoost與FXGBoost的比較。在該表中,我們在XGBoost的t參數(shù)中不使用超參數(shù)進(jìn)行調(diào)整,而是使用Scikit learn中的GridSearchCV方法來調(diào)整參數(shù)值γ和α。結(jié)果顯示,F(xiàn)XGBoost模型的精確率高達(dá)0.97,與基于損失函數(shù)的不平衡XGBoost一致,是所有模型中最高的。并且FXGBoost的召回率為0.56,MCC值為0.72,都是所有模型中最高的。但是對于不平衡數(shù)據(jù)集來說,該模型表現(xiàn)仍不夠優(yōu)秀。為驗證本文提出的模型在數(shù)據(jù)層面和算法層面的改進(jìn)效果,我們將來自正常交易類數(shù)據(jù)的數(shù)量最小化,由284 315例減少為10 000例,稱之為輕度失衡場景。同時創(chuàng)建了另一個場景將正常交易數(shù)據(jù)量減少為125 000個,稱之為中度失衡場景。
表3 場景1中各XGBoost算法的評估
表4列出了場景2中傳統(tǒng)機器學(xué)習(xí)方法的評估結(jié)果。盡管這些模型顯示的結(jié)果看起來很好,但是由于精確率、召回率和MCC的值相差很大,所以結(jié)果是無效的。表5列出了場景2中各方法的評估結(jié)果。結(jié)果顯示,F(xiàn)XGBoost模型是其中最有效的,其精確度、召回率和MCC值相對接近,并且準(zhǔn)確率與其他評估分?jǐn)?shù)之間沒有太大差距?;趽p失函數(shù)的不平衡XGBoost方法雖然在精確度和召回率方面仍然存在差異,但在處理不平衡數(shù)據(jù)方面相對較好。表6是場景3中所有方法的評估結(jié)果,在場景3中,從MCC評分結(jié)果來看,F(xiàn)XGBoost是最好的方法?;趫鼍?和場景2中給出的實驗,該方法比傳統(tǒng)的機器學(xué)習(xí)以及不平衡XGBoost在處理不平衡數(shù)據(jù)集上的效果都要好。
表4 場景2中傳統(tǒng)機器學(xué)習(xí)算法的評估
表5 場景2中各XGBoost算法的評估
表6 場景3中各算法的評估
本文提出了一種基于改進(jìn)的損失函數(shù)的XGBoost模型(FXGBoost)來解決不平衡數(shù)據(jù)集問題。該方法是受到加權(quán)二元交叉熵的啟發(fā),根據(jù)參數(shù)的不平衡性,基于WCEL不平衡參數(shù)進(jìn)行了改進(jìn),并采用加權(quán)評分公式對其進(jìn)行評分。在實驗中,我們使用ULB機器學(xué)習(xí)組數(shù)據(jù)對信用卡詐騙問題進(jìn)行分類。實驗結(jié)果表明,該方法比現(xiàn)有其他機器學(xué)習(xí)方法在處理不平衡數(shù)據(jù)集上更加有效。