複雜網絡在信用風險中的實踐

1. 傳統方法

在信貸領域主要有兩種風險:

欺詐風險: 借款人的目的就是騙貸。

信用風險: 又稱違約風險,是借款人因各種原因,不願或無力履行合同條件而構成違約,致使平臺遭受損失。


​ 針對信用風險,需要對借款人的財務狀況、還款意願、履約能力等各方面因素綜合量化評估,並根據風險等級制定不同的差異化定價(不同額度利率)和策略。

節點屬性

白話一點的解釋就是:

業務: 需要訓練一個模型,去預測借款人違約概率,並根據違約概率高低表示信用好壞,信用好的給予更高的額度和更低的貸款利率,針對信用較差的制定更嚴格的審覈,更高的利率。

模型: 傳統是使用評分卡,可解釋性比較好。但現在越來越多會使用機器學習(如XGBoost),快速出結果且效果更好。

特徵: 上圖針對各個維度設計,並保證可解釋性。

樣本: 歷史上是否違約的人羣作爲訓練樣本(都是錢啊)。

2. 複雜網絡

如何將借款人所處的系統抽象成複雜網絡?下面介紹基礎層次和業務層次的抽象,最終得到什麼樣的複雜網絡,以及爲什麼要這樣做。

2.1 基礎層次抽象

從原始數據中提取節點及關係抽象成複雜網絡:

節點:用戶、商戶、公司、設備、LBS、IP/WIFI

關係:社交、消費、就職、使用、位置、上網
在這裏插入圖片描述

2.2 業務層次抽象

物以類聚,人以羣分,一個人周圍鄰居的信用資質可以反應其自身信用資質。

基於上述業務假設對網絡進一步抽象:

節點:用戶

關係:社交、同位置、同設備、同公司、同商戶、同WIFI…

在這裏插入圖片描述

我們爲每個節點附上信用資質,最終可以得到一個複雜網絡。

在這裏插入圖片描述

爲什麼要這麼做?

  1. 基礎層次的抽象可以供多個不同的業務使用。

  2. 基於業務經驗對數據進一步精煉 garbage in garbage out。

  3. 適用同類型節點的算法較多,計算複雜度低。

  4. 壓縮圖,減少降低噪聲以及緩解數據稀疏性。

目標

我們可以從複雜網絡中抽取什麼信息呢?

在這裏插入圖片描述

鄰居屬性: 鄰居信用資質。

異構關係: 不同關係的鄰居的信息。

拓撲結構: 周圍鄰居的拓撲結構信息

實體交互: 節點資質和鄰居資質是如何交互的?

2.3 挖掘

如何提取以上的信息?

在這裏插入圖片描述

上面的模型都可以是解決方案,但是也存在着一定的侷限:

  1. 首先GNN是黑箱,解釋性不夠,對於和錢直接相關的業務,對解釋性的要求非常高。

  2. 穩定性:金融模型上線會運行很久,對穩定性要求較高。

  3. 性價比,雖然對圖經過了壓縮,但是也有億級別規模,落地成本比較大,包括訓練架構、算法優化等等。

如何解決這些侷限性呢?

拆解上面算法,提取關鍵模塊,用數理統計方法解題:

  1. 聚合直接相連鄰居特徵:參考單層卷積的aggregator操作,其實也就是對鄰居特徵不帶參數求mean、max、加權平均;
  2. 獲得k跳鄰居特徵及拓撲:可以嘗試多層遞歸卷積 / 社區發現;
  3. 與鄰居特徵做交互:拼接、比較、平均;
  4. 如何融合異構關係:每種關係網絡都通過上述方法衍生特徵,不同業務通過模型來學習權重。

2.4 工程落地

某場景:借款人提交完認證資料後,觸發信用評估並返回額度和利率,對時效性要求較高。

離線+實時 實現t跳鄰居特徵計算

離線:T+1計算好所有節點(t-1跳)特徵,存儲在HBASE上。

實時:借款人提交完資料後,實時查找其一跳鄰居(如mysql),調用HBASE查找每一個鄰居特徵,並聚合和交互生成特徵。(一跳計算實時可以滿足,如果誰說二跳計算實時也可以支持那就牛逼了)。

複雜網絡在風控中更多是“找黑的”,比如反欺詐規則關聯 N 個黑名單,N 箇中介,以及團伙挖掘等。

本文是從“找白的”角度下介紹複雜網絡在信用資質上的應用,方法具有普適性,在找黑的上驗證效果也不錯:)。

如果精力/資源有限,建議優先選擇某類關係和某些節點特徵進行實驗:

關係選擇: 優選覆蓋度較高、噪聲低、符合業務直覺的關係,如社交、支付,像LBS雖然覆蓋度高,但是噪聲也是比較大,在使用時需要謹慎。

節點特徵選擇:優先選擇已被驗證效果不錯的特徵,如收入、信用額度等。

另外值得注意的是,比較容易數據穿越,有多個時間需要考慮,如”申請時間“、“建立關係時間”、“特徵時間”等。

2.5 具體實踐

2.5.1 聚合一跳鄰居特徵

一跳鄰居即直接相連的鄰居,我們需要設計一個聚合函數,在考慮關係權重的基礎上,如何表示一跳鄰居特徵分佈。

如下圖所示,假設是關係爲親密度、節點特徵爲收入,如何聚合借款人不同親密度的鄰居收入特徵?
我們可以設計這樣的聚合函數來加工信息(不考慮未知):

簡單平均:
5k+20k+30k3=18.3k \frac{5k+20k+30k}{3}=18.3k
假設不同親密度的朋友對借款人信用風險的影響是相同的(假設收入一樣)。

加權平均:
0.1×5k+0.2×20k+0.2×30k0.1+0.2+0.3=21k \frac{0.1\times 5k+0.2\times 20k+0.2\times 30k}{0.1+0.2+0.3}=21k
假設親密好友收入高低對借款人信用風險影響較大。

最大值:
max{5k,20k,30k}=30k \max\{5k,20k,30k\}=30k
假設親密好友收入高低對借款人信用風險影響較大。

在這裏插入圖片描述

哪個聚合函數效果比較好?不同聚合函數的業務假設是不同的,建議都使用。特徵工程即把可能有用的特徵都加工出來,再通過 y 做特徵選擇。

特徵取值“未知”,怎麼處理?因爲未知其實也可能包含信息,建議聚合計算分考慮未知和不考慮未知進行計算。

鄰居特徵是離散的,怎麼聚合?轉換成one-hot編碼,計算在屬於某個類別鄰居比例。

2.5.2 聚合多跳鄰居特徵

問題:鄰居數量隨着“跳數”增加而指數增長,直接獲得借款人多跳鄰居比較困難。假設平均節點度爲100,那麼每個借款人一跳鄰居數量爲100,二跳鄰居1002,三跳鄰居1003。

下面介紹“多跳遞歸傳播”和”社區發現“這兩種方法

2.5.2.1 多跳遞歸傳播

以計算二跳鄰居特徵爲例,該方法大概的思路是:將當前節點的二跳鄰居特徵傳播到一跳鄰居上,然後將一跳鄰居新特徵再傳播到當前節點。

細節:

  1. 因爲每次傳播只會涉及直接相連的鄰居,故計算複雜度大爲降低。

  2. 原文前向傳播計算是帶參數W的,這裏簡化爲將所有參數相等(因爲是特徵工程,不是學習,故會損失一些信息)

  3. 對鄰居節點進行固定數量抽樣,而不是取全部(避免數據傾斜),採樣方法使用計算複雜度爲O(1)的Alias Method。

  4. 遞歸實現,每輪對所有節點聚合其鄰居(隱)特徵及交互,並更新節點特徵,作爲下一輪輸入。

  5. 第一輪得到所有節點一跳鄰居特徵,第二輪得到二跳鄰居特徵,以此類推。

在這裏插入圖片描述

2.5.2.2 社區發現

大致思路:通過社區發現算法將graph分成一個個社區,然後計算每個節點所屬社區的特徵,如社區中黑名單比例、社區中平均收入。

這種方法相當於對多跳鄰居根據拓撲結構進行了分類(社區),故額外提取了網絡中拓撲結構信息。

工業界graph規模比較大,一般會用Louvain,速度快,效果也不錯,下面是spark版本實現:

https://link.zhihu.com/?target=https%3A//github.com/Sotera/spark-distributed-louvain-modularity

2.5.3 實體間特徵交互

聚合鄰居特徵h1後,如何與自身特徵h2做交互?

拼接:直接將h1拼接作爲其一個新的特徵

比較:h1-h2 或者 h1/h2 。例如求鄰居平均收入與借款人自身收入差距較大,是否有異常?

平均:(h1+h2)/2。

最大值:max(h1,h2),金融是重召回的,若特徵表示風險程度,這樣即取最大風險。

2.5.4 處理不同異構關係

將異構關係拆成多個單一關係,每個關係都經過上述方法生成特徵,供下游不同場景使用。

這樣做的好處是:不同關係權重在不同場景是不同的,應該是通過這些場景的y去學習。

形式化描述:

D|D|種類型關係,則可以拆解爲D|D|個graph: {g{d}=(V,E(d),dD)}\{g^{\{d\}}=(V,E^{(d)},d\in |D|)\}

將上面提取graph特徵方法記爲 ff

對每個g{d}g^{\{d\}},都可以通過方法ff 提取特徵X{d}=f(g{d})X^{\{d\}}=f(g^{\{d\}})

將不同的X{d}X^{\{d\}}作爲下游任務的輸入特徵,根據任務目標來賦予權重。

借鑑螞蟻處理異構網絡的思路:

https://zhuanlan.zhihu.com/p/59666737

3. 附錄

3.1 不同社區發現算法比較

在實際小規模graph上對比了主流的社區發現算法,Louvain在劃分社區質量和劃分穩定性上均表現不錯的,且能分佈式實現。

3.1.1 社區發現算法

  • Walktrap:基於隨機遊走的社區發現算法 《Computing communities in large networks using random walks》

  • Leading Eigenvector:基於特徵矩陣求模塊度,自底而上定層次聚類《Finding community structure in networks using the eigenvectors of matrices》

  • Fast-Greedy:自底而上的層次聚類《Finding community structure in very large networks》

  • Louvain:基於模塊度最大化的算法《Fast unfolding of communities in large networks》

  • LPA:基於標籤傳播多社區發現算法 《Near linear time algorithm to detect community structures in large-scale networks.》

3.1.2 實驗graph

下面是脫敏後的實驗網絡的規模:

在這裏插入圖片描述

3.1.3 劃分質量:模塊度指標

在這裏插入圖片描述

3.1.4 劃分數量合理性

在這裏插入圖片描述

3.1.5 可視化

這是louvain劃分的某個graph的可視化效果(繪製工具:gephi)

在這裏插入圖片描述

感謝
參考原文:https://zhuanlan.zhihu.com/p/90813791

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章