鄭忠斌,胡瑞鑫,周寧靜,王朝棟
(1.工業(yè)互聯(lián)網(wǎng)創(chuàng)新中心(上海)有限公司,上海 201303;2.同濟大學(xué),上海 200092)
近些年,隨著網(wǎng)絡(luò)通信技術(shù)的日新月異,人們能夠高效收集到各種各樣的信息,而各行各業(yè)也都已經(jīng)完成了大量數(shù)據(jù)的積累。這些海量數(shù)據(jù)在極大改善和豐富人們生活的同時,不免讓人們重新思考如何更好地進行信息組織、查找與分析。隨著應(yīng)用場景越來越復(fù)雜,人工方式已經(jīng)不再能夠面對如此龐大的信息?;谶@些變化,處理數(shù)據(jù)的機器學(xué)習(xí)(Machine Learning)方法的地位迅速提升。目前,網(wǎng)絡(luò)安全與金融經(jīng)濟等眾多領(lǐng)域均非常關(guān)心機器學(xué)習(xí)相關(guān)的研究進展,其中網(wǎng)絡(luò)借貸由于便捷性逐漸受到了廣泛關(guān)注。但是,網(wǎng)絡(luò)借貸中存在大量欺詐申請,若借貸人無法及時歸還借貸金額,會造成借貸公司的經(jīng)濟損失。關(guān)于欺詐和欺詐活動有很多定義。注冊欺詐審查員協(xié)會(Association of Certified Fraud Examiners)將“欺詐”定義為通過故意濫用或誤用雇傭組織的資源或資產(chǎn)來占用他人個人資產(chǎn)的行為。文獻[1]中提到欺詐的主要成因是通過非法手段獲取虛假的利益,將對經(jīng)濟、法律乃至人類道德價值觀產(chǎn)生巨大影響。文獻[2]中提到涉及金錢和服務(wù)的幾乎所有技術(shù)系統(tǒng)都可能受到欺詐行為的影響,如信用卡、電信、醫(yī)療保險、汽車保險和在線拍賣系統(tǒng)等。
反欺詐本質(zhì)上可以表示為一個二分類的異常檢測問題,其中正常數(shù)據(jù)為一類,欺詐和異常數(shù)據(jù)為另一類。反欺詐模型建立的目的是將欺詐數(shù)據(jù)從所有數(shù)據(jù)中區(qū)分開來。但是,與傳統(tǒng)的二分類問題相比,該領(lǐng)域所使用的數(shù)據(jù)有很大不同。反欺詐領(lǐng)域中,數(shù)據(jù)集中的異常數(shù)據(jù)樣例通常較少,而正常數(shù)據(jù)通常占據(jù)絕大部分,同時異常數(shù)據(jù)的某些或者全部特征通常與其他數(shù)據(jù)點差別較大。監(jiān)督學(xué)習(xí)側(cè)重于對有標(biāo)簽的數(shù)據(jù)進行訓(xùn)練,而對無標(biāo)簽樣本逐一進行標(biāo)記往往不現(xiàn)實,需要耗費大量的人力物力。面對這種標(biāo)簽數(shù)量缺失的情況,無監(jiān)督學(xué)習(xí)應(yīng)運而生。相比監(jiān)督學(xué)習(xí),無監(jiān)督學(xué)習(xí)是一種無標(biāo)簽數(shù)據(jù)進行挖掘的學(xué)習(xí)模式。換而言之,無監(jiān)督學(xué)習(xí)是在不需要給數(shù)據(jù)打標(biāo)簽的基礎(chǔ)上進行數(shù)據(jù)挖掘工作。無監(jiān)督學(xué)習(xí)的特點是在僅對其提供無標(biāo)簽的數(shù)據(jù)情況下,能夠自動從這些數(shù)據(jù)中找出其潛在的類別規(guī)則,在學(xué)習(xí)完畢并經(jīng)測試后應(yīng)用到新的數(shù)據(jù)上。無監(jiān)督學(xué)習(xí)模型在學(xué)習(xí)時并不知道其分類結(jié)果是否正確,也就是說沒有標(biāo)簽告訴模型何種學(xué)習(xí)是正確的。
顯然,如果只進行監(jiān)督訓(xùn)練,使用少量“昂貴的”有標(biāo)記的樣本而拋棄大量“廉價的”無標(biāo)記的樣本,是對數(shù)據(jù)資源的一種極大浪費。如果使用無監(jiān)督學(xué)習(xí),則數(shù)據(jù)集中的標(biāo)簽不能被有效利用,同時訓(xùn)練出的模型具有很大不確定性。針對這兩種情況,目前已有研究人員提出將少量的有標(biāo)簽樣本與大量的無標(biāo)簽樣本一起進行學(xué)習(xí)的策略,即弱監(jiān)督學(xué)習(xí)算法。人們希望能夠使用弱監(jiān)督學(xué)習(xí)的辦法,將有限的標(biāo)簽信息和大量未標(biāo)記數(shù)據(jù)中的信息有效利用起來,結(jié)合少量有標(biāo)簽數(shù)據(jù)和大量未標(biāo)記數(shù)據(jù)中的信息,達到相應(yīng)的分類和預(yù)測效果。
在這個過程中,本文主要做出了以下貢獻:基于借貸數(shù)據(jù)集構(gòu)成的關(guān)系圖,實現(xiàn)基于圖的半監(jiān)督算法。利用在數(shù)據(jù)集上構(gòu)建關(guān)系圖,并在關(guān)系圖上用Louvain 算法進行社區(qū)發(fā)現(xiàn),能夠在大規(guī)模數(shù)據(jù)集上高效快速完成模型構(gòu)建。其中,詳細展示了Louvain 算法的實現(xiàn)、如何對社區(qū)發(fā)現(xiàn)結(jié)果進行標(biāo)簽傳播以及使用K-S 值衡量反欺詐模型的效果并調(diào)整參數(shù)。
本文旨在研究分析弱監(jiān)督算法在互聯(lián)網(wǎng)金融反欺詐領(lǐng)域的應(yīng)用,選取網(wǎng)絡(luò)借貸場景進行研究。結(jié)合理論和實證分析,在借貸數(shù)據(jù)集上構(gòu)建申請信息的關(guān)系圖;結(jié)合借貸欺詐場景中非數(shù)值型數(shù)據(jù)集的特征,設(shè)計相應(yīng)的弱監(jiān)督反欺詐模型;在標(biāo)簽數(shù)量不足的情況下,基于圖進行半監(jiān)督反欺詐模型的構(gòu)建,并評估相應(yīng)算法在該數(shù)據(jù)集上的表現(xiàn)。實驗表明,該算法能夠在實際應(yīng)用中有效識別出欺詐。
最初的欺詐檢測研究主要集中在統(tǒng)計模型,如邏輯回歸和神經(jīng)網(wǎng)絡(luò)。1988 年,神經(jīng)網(wǎng)絡(luò)就被用在金融預(yù)測領(lǐng)域[3]。1995 年,Sohl 和Venkatachalam首先使用反向傳播神經(jīng)網(wǎng)絡(luò)預(yù)測財務(wù)報表欺詐。2001 年和2002 年,Bolton 和Hand 用統(tǒng)計學(xué)習(xí)方法對欺詐檢測進行了一些一般性分析。2006 年,Yang和Hwang 使用過程挖掘方法研究醫(yī)療保健欺詐。而在近期的相關(guān)研究中,Huang 使用邏輯回歸和支持向量機調(diào)查了一系列臺灣公司的財務(wù)報表欺詐行為。Soltani Halvaiee 和Akbari 利用人工免疫系統(tǒng)識別了一家匿名巴西銀行的信用卡欺詐行為。Sahin等人使用決策樹對欺詐用戶建模,認為在模型評估上準(zhǔn)確率和TPR 并不適合這種問題,并以此改進了決策樹的損失函數(shù)[4]。Zareapoor 和Shamsolmoali利用集成學(xué)習(xí)分類器,對比樸素貝葉斯、支出向量機和K 近鄰算法進行信用卡用戶的反欺詐建模,發(fā)現(xiàn)集成學(xué)習(xí)的效果好于單一的算法[5]。West 和Bhattacharya 討論計算機智能和云計算在金融反欺詐系統(tǒng)上的運用[6]。Gulati 和Dubey 等使用神經(jīng)網(wǎng)絡(luò)并引入用戶地理位置信息建立反欺詐系統(tǒng),效果能夠提升80%[7]。
弱監(jiān)督學(xué)習(xí)方法適用于在構(gòu)建模型的過程中,使用的訓(xùn)練數(shù)據(jù)只有一小部分數(shù)據(jù)有標(biāo)簽,而大部分數(shù)據(jù)沒有標(biāo)簽,且只用這一小部分有標(biāo)簽的數(shù)據(jù)不足以訓(xùn)練一個好的模型的情況[8]。弱監(jiān)督學(xué)習(xí)是一個較為總括性的術(shù)語,涵蓋了試圖通過較弱的監(jiān)督來構(gòu)建預(yù)測模型的各種研究。其中,數(shù)據(jù)標(biāo)簽可能存在數(shù)量不足、粗粒度較大以及不夠準(zhǔn)確的情況。
在針對數(shù)據(jù)集標(biāo)簽數(shù)量不足的半監(jiān)督學(xué)習(xí)中,有兩個基本假設(shè),即聚類假設(shè)(Cluster Assumption)和流形假設(shè)(Manifold Assumption)。這兩個假設(shè)都是關(guān)于數(shù)據(jù)分布的。前者假設(shè)數(shù)據(jù)具有內(nèi)在的聚類(Cluster)結(jié)構(gòu),處在相同聚類中的數(shù)據(jù)有較大的可能擁有相同的標(biāo)記[8]。根據(jù)該假設(shè),決策邊界應(yīng)該盡可能通過數(shù)據(jù)較為稀疏的地方,從而避免把稠密的聚類中的數(shù)據(jù)點分到?jīng)Q策邊界兩側(cè)。后者假設(shè)數(shù)據(jù)分布在一個流形上,處于一個很小的局部鄰域內(nèi)的示例具有相似的性質(zhì)。這一設(shè)定反映了決策函數(shù)的局部“平滑”性[9]。和聚類假設(shè)著眼整體特性不同,流形假設(shè)主要考慮的是模型的局部特性。這兩個假設(shè)都揭示了數(shù)據(jù)分布信息與其類別標(biāo)記相互聯(lián)系[10]。利用未標(biāo)注數(shù)據(jù)中的數(shù)據(jù)分布信息,可以更好地找到樣本點之間的關(guān)聯(lián)和預(yù)估樣本點的標(biāo)簽,從而提高模型性能。
Louvain 算法是一種基于模塊度(Modularity)的社區(qū)發(fā)現(xiàn)算法,在效率和效果上都表現(xiàn)較好,并且能夠發(fā)現(xiàn)層次性的社區(qū)結(jié)構(gòu)。算法優(yōu)化的目標(biāo)是最大化整個圖屬性結(jié)構(gòu)(社區(qū)網(wǎng)絡(luò))的模塊度。Louvain 算法得到的社區(qū)結(jié)構(gòu)是分層的,每一輪計算完成后得到的新圖都是對一個大社區(qū)內(nèi)若干細分社區(qū)發(fā)現(xiàn)的結(jié)果。這樣的分層結(jié)構(gòu)得到的是每個網(wǎng)絡(luò)的自然屬性,使人們能夠深入了解某個社區(qū)的內(nèi)部結(jié)構(gòu)和形成機制。同時,Louvain 算法的性能較好,對圖的大小幾乎沒有上限要求,并且能在迭代幾輪后快速收斂,使得該算法有能力處理擁有百萬級別以上節(jié)點的大型網(wǎng)絡(luò)。
Louvain 算法主要包括兩個階段。第一階段,不斷遍歷網(wǎng)絡(luò)中的結(jié)點。假設(shè)每個節(jié)點為1 個社區(qū),N個節(jié)點。初始化N個社區(qū),嘗試將單個結(jié)點加入能夠使模塊度提升最大的社區(qū)中,直到所有結(jié)點不再變化。第二階段,處理第一階段結(jié)果,將一個個小社區(qū)歸并為一個超結(jié)點,重新構(gòu)造網(wǎng)絡(luò)。算法不斷迭代這兩個步驟,直至所有子社區(qū)模塊度相加值不再變化。
模塊度Q由Newman 等人[11]提出,能用來評估算法結(jié)果的好壞。模塊度Q的公式定義為:
其中Ai,j代表節(jié)點連接節(jié)點i、j的邊的權(quán)值;ki表示與節(jié)點i相連的所有邊權(quán)值之和;ci為節(jié)點i所歸屬的社區(qū);而δ(ci,cj)為一個關(guān)于節(jié)點歸屬社區(qū)的函數(shù),函數(shù)中兩個變量相同時取值為1,反之為0。Q值的取值范圍為0-1,值越大,說明網(wǎng)絡(luò)劃分的社區(qū)結(jié)構(gòu)準(zhǔn)確度越高。
首先,假設(shè)網(wǎng)絡(luò)中每一個節(jié)點歸屬于一個社區(qū)。對其中任一節(jié)點i,計算將其并入相鄰社區(qū)后整個網(wǎng)絡(luò)Q值的變化ΔQ:
找到Q值變化最大的社區(qū)(若計算得到ΔQ為負,則不改變i的歸屬社區(qū))。按照Q值增加的方向,將一個社團的節(jié)點不斷移至另一個社團,直至Q函數(shù)達到峰值。當(dāng)Q值不再發(fā)生變化,即將一個節(jié)點轉(zhuǎn)移到網(wǎng)絡(luò)內(nèi)的另一個相鄰社區(qū)不能帶來ΔQ的提升時,此時網(wǎng)絡(luò)內(nèi)所有節(jié)點不再移動,得到的各個社區(qū)將作為新圖的節(jié)點。
當(dāng)執(zhí)行完Louvain 算法后,劃分出若干個社區(qū),其中每個社區(qū)可以看作是數(shù)據(jù)中的一個群體。到目前為止,需要對得到的社區(qū)中的節(jié)點進行分類,即為每個社區(qū)打上標(biāo)簽。
根據(jù)社區(qū)發(fā)現(xiàn)算法的原理,所得到的最佳劃分的每個子簇都代表一個社區(qū),每個社區(qū)內(nèi)部的標(biāo)簽應(yīng)該一致。根據(jù)每個子社區(qū)中有標(biāo)簽節(jié)點的標(biāo)簽對整個子社區(qū)進行標(biāo)注。當(dāng)存在標(biāo)簽為0 的節(jié)點時,將子社區(qū)其他未標(biāo)記數(shù)據(jù)標(biāo)為0,如圖1 所示。
圖1 標(biāo)記過程示意1
當(dāng)存在標(biāo)簽為1 的節(jié)點時,可以將子社區(qū)其他未標(biāo)記數(shù)據(jù)標(biāo)為1,如圖2 所示。
圖2 標(biāo)記過程示意2
當(dāng)子社區(qū)中同時存在標(biāo)簽為0 和標(biāo)簽為1 的節(jié)點時,將子社區(qū)其他節(jié)點標(biāo)為數(shù)量多的那方的標(biāo)簽,如圖3 所示。
圖3 標(biāo)記過程示意3
本實驗中使用的數(shù)據(jù)集為某銀行的借貸數(shù)據(jù)集,數(shù)據(jù)集已經(jīng)過脫敏處理,不會泄露客戶個人信息。該數(shù)據(jù)集是一個非常典型的非數(shù)值型數(shù)據(jù)集,共有38 個特征。除了label 特征用來表示每條數(shù)據(jù)的標(biāo)簽外,其余特征皆是字符串類型的數(shù)據(jù)。數(shù)據(jù)集共有229 407 條數(shù)據(jù),其中包含了大量無標(biāo)簽數(shù)據(jù)。Label 為0,表示交易正常,共28 171 條數(shù)據(jù);label 為1,表示交易存在欺詐申請,共2 546 條數(shù)據(jù);label 為2 和空,表示交易無法判斷是否存在欺詐申請,共198 690 條數(shù)據(jù)。
KS值是一個常用來衡量風(fēng)控模型優(yōu)劣的指標(biāo)[12],在模型中能夠用于區(qū)分預(yù)測正負樣本分隔程度,因此非常適合用于評估反欺詐分類的效果。
計算KS值時涉及到的各項指標(biāo)、含義和計算方法,如表1 所示。
表1 模型評估相關(guān)指標(biāo)描述
KS值的計算公式為:
KS值越大,說明模型區(qū)分正例和反例的效果越好。
利用NetworkX 導(dǎo)出Neo4j 數(shù)據(jù)庫中的圖。在數(shù)據(jù)庫中為每種關(guān)系都建立邊,因而存在兩個節(jié)點之間有多條邊的情況。這里合并節(jié)點間的多條邊,將關(guān)系圖存儲成無權(quán)圖的格式。最終,所得無權(quán)圖共含有197 862 條邊。在關(guān)系圖上運行Louvain 算法,得到的最佳劃分的模塊度為0.904 8。
執(zhí)行完Louvain 算法后,得到了關(guān)于關(guān)系圖的一個劃分。對得到的社區(qū)中的節(jié)點進行分類,即為每個社區(qū)打上標(biāo)簽。標(biāo)注過程結(jié)束后,在訓(xùn)練集對應(yīng)的測試集上評估預(yù)測結(jié)果,得到的KS 值為0.446,混淆矩陣如表2 所示。
表2 Louvain 算法性能
通過調(diào)整標(biāo)簽標(biāo)記的方式來提高模型的性能。在標(biāo)簽標(biāo)記過程中,當(dāng)一個子社區(qū)中同時出現(xiàn)標(biāo)簽為1 的節(jié)點和標(biāo)簽為0 的節(jié)點時,根據(jù)雙方數(shù)量的多少來判斷剩下節(jié)點的標(biāo)簽?,F(xiàn)在改變這一判定標(biāo)準(zhǔn),定義欺詐占比Fr:
根據(jù)Fr可以制定更精細的標(biāo)注方法。首先,分別統(tǒng)計每個子社區(qū)中的欺詐占比Fr。其次,設(shè)定劃分基準(zhǔn)rate。當(dāng)Fr>rate 時,子社區(qū)標(biāo)簽為1,否則標(biāo)簽為0。可知,當(dāng)rate=0.5 時,根據(jù)1 和0的數(shù)量多少來判定標(biāo)簽,即式(3)中使用的方法得到的KS值為0.446。通過改變rate的值,可以得到KS關(guān)于rate變化的曲線。
根據(jù)圖4,當(dāng)rate設(shè)置在0.2 時,得到的KS值最高。因此,將模型的rate定為0.2,最終的KS能夠提升到0.46。
圖4 KS-rate 折線圖
本文基于現(xiàn)有的反欺詐和弱監(jiān)督算法研究,探索了如何在銀行借貸數(shù)據(jù)集上構(gòu)建反欺詐模型,使得現(xiàn)實場景中在有標(biāo)簽數(shù)據(jù)不足時的情況下也能及時識別欺詐,取得較好的反欺詐效果。在互聯(lián)網(wǎng)金融領(lǐng)域構(gòu)建一個反欺詐模型,需要從實際的應(yīng)用場景出發(fā),結(jié)合數(shù)據(jù)集的特點全面判斷合適的算法,不可直接生硬套用模型,同時需要從各種模型評估的角度選擇相應(yīng)的算法。未來將嘗試構(gòu)建性能更優(yōu)的弱監(jiān)督反欺詐檢測方法,并將多種弱監(jiān)督算法進行集成學(xué)習(xí),從而進一步提高反欺詐的檢測性能。