鄭忠斌,胡瑞鑫,周寧靜,王朝棟
(1.工業互聯網創新中心(上海)有限公司,上海 201303;2.同濟大學,上海 200092)
近些年,隨著網絡通信技術的日新月異,人們能夠高效收集到各種各樣的信息,而各行各業也都已經完成了大量數據的積累。這些海量數據在極大改善和豐富人們生活的同時,不免讓人們重新思考如何更好地進行信息組織、查找與分析。隨著應用場景越來越復雜,人工方式已經不再能夠面對如此龐大的信息。基于這些變化,處理數據的機器學習(Machine Learning)方法的地位迅速提升。目前,網絡安全與金融經濟等眾多領域均非常關心機器學習相關的研究進展,其中網絡借貸由于便捷性逐漸受到了廣泛關注。但是,網絡借貸中存在大量欺詐申請,若借貸人無法及時歸還借貸金額,會造成借貸公司的經濟損失。關于欺詐和欺詐活動有很多定義。注冊欺詐審查員協會(Association of Certified Fraud Examiners)將“欺詐”定義為通過故意濫用或誤用雇傭組織的資源或資產來占用他人個人資產的行為。文獻[1]中提到欺詐的主要成因是通過非法手段獲取虛假的利益,將對經濟、法律乃至人類道德價值觀產生巨大影響。文獻[2]中提到涉及金錢和服務的幾乎所有技術系統都可能受到欺詐行為的影響,如信用卡、電信、醫療保險、汽車保險和在線拍賣系統等。
反欺詐本質上可以表示為一個二分類的異常檢測問題,其中正常數據為一類,欺詐和異常數據為另一類。反欺詐模型建立的目的是將欺詐數據從所有數據中區分開來。但是,與傳統的二分類問題相比,該領域所使用的數據有很大不同。反欺詐領域中,數據集中的異常數據樣例通常較少,而正常數據通常占據絕大部分,同時異常數據的某些或者全部特征通常與其他數據點差別較大。監督學習側重于對有標簽的數據進行訓練,而對無標簽樣本逐一進行標記往往不現實,需要耗費大量的人力物力。面對這種標簽數量缺失的情況,無監督學習應運而生。相比監督學習,無監督學習是一種無標簽數據進行挖掘的學習模式。換而言之,無監督學習是在不需要給數據打標簽的基礎上進行數據挖掘工作。無監督學習的特點是在僅對其提供無標簽的數據情況下,能夠自動從這些數據中找出其潛在的類別規則,在學習完畢并經測試后應用到新的數據上。無監督學習模型在學習時并不知道其分類結果是否正確,也就是說沒有標簽告訴模型何種學習是正確的。
顯然,如果只進行監督訓練,使用少量“昂貴的”有標記的樣本而拋棄大量“廉價的”無標記的樣本,是對數據資源的一種極大浪費。如果使用無監督學習,則數據集中的標簽不能被有效利用,同時訓練出的模型具有很大不確定性。針對這兩種情況,目前已有研究人員提出將少量的有標簽樣本與大量的無標簽樣本一起進行學習的策略,即弱監督學習算法。人們希望能夠使用弱監督學習的辦法,將有限的標簽信息和大量未標記數據中的信息有效利用起來,結合少量有標簽數據和大量未標記數據中的信息,達到相應的分類和預測效果。
在這個過程中,本文主要做出了以下貢獻:基于借貸數據集構成的關系圖,實現基于圖的半監督算法。利用在數據集上構建關系圖,并在關系圖上用Louvain 算法進行社區發現,能夠在大規模數據集上高效快速完成模型構建。其中,詳細展示了Louvain 算法的實現、如何對社區發現結果進行標簽傳播以及使用K-S 值衡量反欺詐模型的效果并調整參數。
本文旨在研究分析弱監督算法在互聯網金融反欺詐領域的應用,選取網絡借貸場景進行研究。結合理論和實證分析,在借貸數據集上構建申請信息的關系圖;結合借貸欺詐場景中非數值型數據集的特征,設計相應的弱監督反欺詐模型;在標簽數量不足的情況下,基于圖進行半監督反欺詐模型的構建,并評估相應算法在該數據集上的表現。實驗表明,該算法能夠在實際應用中有效識別出欺詐。
最初的欺詐檢測研究主要集中在統計模型,如邏輯回歸和神經網絡。1988 年,神經網絡就被用在金融預測領域[3]。1995 年,Sohl 和Venkatachalam首先使用反向傳播神經網絡預測財務報表欺詐。2001 年和2002 年,Bolton 和Hand 用統計學習方法對欺詐檢測進行了一些一般性分析。2006 年,Yang和Hwang 使用過程挖掘方法研究醫療保健欺詐。而在近期的相關研究中,Huang 使用邏輯回歸和支持向量機調查了一系列臺灣公司的財務報表欺詐行為。Soltani Halvaiee 和Akbari 利用人工免疫系統識別了一家匿名巴西銀行的信用卡欺詐行為。Sahin等人使用決策樹對欺詐用戶建模,認為在模型評估上準確率和TPR 并不適合這種問題,并以此改進了決策樹的損失函數[4]。Zareapoor 和Shamsolmoali利用集成學習分類器,對比樸素貝葉斯、支出向量機和K 近鄰算法進行信用卡用戶的反欺詐建模,發現集成學習的效果好于單一的算法[5]。West 和Bhattacharya 討論計算機智能和云計算在金融反欺詐系統上的運用[6]。Gulati 和Dubey 等使用神經網絡并引入用戶地理位置信息建立反欺詐系統,效果能夠提升80%[7]。
弱監督學習方法適用于在構建模型的過程中,使用的訓練數據只有一小部分數據有標簽,而大部分數據沒有標簽,且只用這一小部分有標簽的數據不足以訓練一個好的模型的情況[8]。弱監督學習是一個較為總括性的術語,涵蓋了試圖通過較弱的監督來構建預測模型的各種研究。其中,數據標簽可能存在數量不足、粗粒度較大以及不夠準確的情況。
在針對數據集標簽數量不足的半監督學習中,有兩個基本假設,即聚類假設(Cluster Assumption)和流形假設(Manifold Assumption)。這兩個假設都是關于數據分布的。前者假設數據具有內在的聚類(Cluster)結構,處在相同聚類中的數據有較大的可能擁有相同的標記[8]。根據該假設,決策邊界應該盡可能通過數據較為稀疏的地方,從而避免把稠密的聚類中的數據點分到決策邊界兩側。后者假設數據分布在一個流形上,處于一個很小的局部鄰域內的示例具有相似的性質。這一設定反映了決策函數的局部“平滑”性[9]。和聚類假設著眼整體特性不同,流形假設主要考慮的是模型的局部特性。這兩個假設都揭示了數據分布信息與其類別標記相互聯系[10]。利用未標注數據中的數據分布信息,可以更好地找到樣本點之間的關聯和預估樣本點的標簽,從而提高模型性能。
Louvain 算法是一種基于模塊度(Modularity)的社區發現算法,在效率和效果上都表現較好,并且能夠發現層次性的社區結構。算法優化的目標是最大化整個圖屬性結構(社區網絡)的模塊度。Louvain 算法得到的社區結構是分層的,每一輪計算完成后得到的新圖都是對一個大社區內若干細分社區發現的結果。這樣的分層結構得到的是每個網絡的自然屬性,使人們能夠深入了解某個社區的內部結構和形成機制。同時,Louvain 算法的性能較好,對圖的大小幾乎沒有上限要求,并且能在迭代幾輪后快速收斂,使得該算法有能力處理擁有百萬級別以上節點的大型網絡。
Louvain 算法主要包括兩個階段。第一階段,不斷遍歷網絡中的結點。假設每個節點為1 個社區,N個節點。初始化N個社區,嘗試將單個結點加入能夠使模塊度提升最大的社區中,直到所有結點不再變化。第二階段,處理第一階段結果,將一個個小社區歸并為一個超結點,重新構造網絡。算法不斷迭代這兩個步驟,直至所有子社區模塊度相加值不再變化。
模塊度Q由Newman 等人[11]提出,能用來評估算法結果的好壞。模塊度Q的公式定義為:

其中Ai,j代表節點連接節點i、j的邊的權值;ki表示與節點i相連的所有邊權值之和;ci為節點i所歸屬的社區;而δ(ci,cj)為一個關于節點歸屬社區的函數,函數中兩個變量相同時取值為1,反之為0。Q值的取值范圍為0-1,值越大,說明網絡劃分的社區結構準確度越高。
首先,假設網絡中每一個節點歸屬于一個社區。對其中任一節點i,計算將其并入相鄰社區后整個網絡Q值的變化ΔQ:

找到Q值變化最大的社區(若計算得到ΔQ為負,則不改變i的歸屬社區)。按照Q值增加的方向,將一個社團的節點不斷移至另一個社團,直至Q函數達到峰值。當Q值不再發生變化,即將一個節點轉移到網絡內的另一個相鄰社區不能帶來ΔQ的提升時,此時網絡內所有節點不再移動,得到的各個社區將作為新圖的節點。
當執行完Louvain 算法后,劃分出若干個社區,其中每個社區可以看作是數據中的一個群體。到目前為止,需要對得到的社區中的節點進行分類,即為每個社區打上標簽。
根據社區發現算法的原理,所得到的最佳劃分的每個子簇都代表一個社區,每個社區內部的標簽應該一致。根據每個子社區中有標簽節點的標簽對整個子社區進行標注。當存在標簽為0 的節點時,將子社區其他未標記數據標為0,如圖1 所示。

圖1 標記過程示意1
當存在標簽為1 的節點時,可以將子社區其他未標記數據標為1,如圖2 所示。

圖2 標記過程示意2
當子社區中同時存在標簽為0 和標簽為1 的節點時,將子社區其他節點標為數量多的那方的標簽,如圖3 所示。

圖3 標記過程示意3
本實驗中使用的數據集為某銀行的借貸數據集,數據集已經過脫敏處理,不會泄露客戶個人信息。該數據集是一個非常典型的非數值型數據集,共有38 個特征。除了label 特征用來表示每條數據的標簽外,其余特征皆是字符串類型的數據。數據集共有229 407 條數據,其中包含了大量無標簽數據。Label 為0,表示交易正常,共28 171 條數據;label 為1,表示交易存在欺詐申請,共2 546 條數據;label 為2 和空,表示交易無法判斷是否存在欺詐申請,共198 690 條數據。
KS值是一個常用來衡量風控模型優劣的指標[12],在模型中能夠用于區分預測正負樣本分隔程度,因此非常適合用于評估反欺詐分類的效果。
計算KS值時涉及到的各項指標、含義和計算方法,如表1 所示。

表1 模型評估相關指標描述
KS值的計算公式為:

KS值越大,說明模型區分正例和反例的效果越好。
利用NetworkX 導出Neo4j 數據庫中的圖。在數據庫中為每種關系都建立邊,因而存在兩個節點之間有多條邊的情況。這里合并節點間的多條邊,將關系圖存儲成無權圖的格式。最終,所得無權圖共含有197 862 條邊。在關系圖上運行Louvain 算法,得到的最佳劃分的模塊度為0.904 8。
執行完Louvain 算法后,得到了關于關系圖的一個劃分。對得到的社區中的節點進行分類,即為每個社區打上標簽。標注過程結束后,在訓練集對應的測試集上評估預測結果,得到的KS 值為0.446,混淆矩陣如表2 所示。

表2 Louvain 算法性能
通過調整標簽標記的方式來提高模型的性能。在標簽標記過程中,當一個子社區中同時出現標簽為1 的節點和標簽為0 的節點時,根據雙方數量的多少來判斷剩下節點的標簽?,F在改變這一判定標準,定義欺詐占比Fr:

根據Fr可以制定更精細的標注方法。首先,分別統計每個子社區中的欺詐占比Fr。其次,設定劃分基準rate。當Fr>rate 時,子社區標簽為1,否則標簽為0。可知,當rate=0.5 時,根據1 和0的數量多少來判定標簽,即式(3)中使用的方法得到的KS值為0.446。通過改變rate的值,可以得到KS關于rate變化的曲線。
根據圖4,當rate設置在0.2 時,得到的KS值最高。因此,將模型的rate定為0.2,最終的KS能夠提升到0.46。

圖4 KS-rate 折線圖
本文基于現有的反欺詐和弱監督算法研究,探索了如何在銀行借貸數據集上構建反欺詐模型,使得現實場景中在有標簽數據不足時的情況下也能及時識別欺詐,取得較好的反欺詐效果。在互聯網金融領域構建一個反欺詐模型,需要從實際的應用場景出發,結合數據集的特點全面判斷合適的算法,不可直接生硬套用模型,同時需要從各種模型評估的角度選擇相應的算法。未來將嘗試構建性能更優的弱監督反欺詐檢測方法,并將多種弱監督算法進行集成學習,從而進一步提高反欺詐的檢測性能。