風控特徵的關係網絡特徵工程入門實踐

  • 2020 年 2 月 17 日
  • 筆記

風控業務背景

常規RFM時間切片統計特徵側重於縱向維度量化用戶風險,而關係網絡特徵則從橫向維度來評估。縱向是指同一用戶在不同時間段上的行為異常風險;橫向是指在同一個時間段里聚集的不同用戶放在一起評估風險。因此,關係網絡特徵可作為常規RFM特徵的一個有力補充,為風控模型帶來可預見的增量效果。

芝麻信用分中的人脈關係維度可以給我們帶來很多啟發,其又細分為人脈圈穩定性、社交影響力指數和信用環境指數三個子指標。其中信用環境指數是本文主要參考學習的方向。

圖1 – 芝麻信用評分維度之人脈關係

本文不圍繞各種複雜的社區發現算法展開,只從業務角度分享下構建關係特徵的一些實踐經驗。關係網絡中最重要的兩部分無非就是——邊(edge)和節點(node)。圍繞這兩點,我們可以考慮幾個問題:如何分析可用數據?如何根據已有數據源來構建關係網絡?如何構建關係特徵?如何評估關係特徵的性能?如何落實上線方案?

目錄 Part 1. 如何分析可用數據? Part 2. 如何構建邊關係? Part 3. 如何使用節點特徵? Part 4. 如何使用存量數據和增量數據? Part 5. 如何實時上線? Part 6. 如何驗證關係特徵的效果? Part 7. 如何去優化關係特徵? 致謝 版權聲明

Part 1. 如何分析可用數據?

  1. 考慮數據源的穩定性。

在風控中, 穩定性壓倒一切。數據源是構建特徵的前提,如果數據源採集上就不穩定,必然導致特徵波動。那麼為了調研數據源採集情況,我們該諮詢哪些人員,以及關注哪些問題呢?以下是筆者的一些實踐建議:

  • 信貸產品設計人員 :了解產品頁面跳轉流程,包括:在哪個頁面將會要求用戶導入資料?需要用戶授權同意哪些數據採集協議?新用戶相對於老用戶會少哪些數據?
  • 外部數據對接開發人員 :外部數據是其他數據公司所提供的,從而可能存在一些不確定性。例如,由於輸出變量不穩定而被使用方下線,或者由於協議到期而被提供商下線。需要明確:外部數據在哪個環節(額度、定價、支用)調用?覆蓋哪些產品和客群?外部數據接口調用的穩定性?
  • 風控策略人員 :了解風控流程和未來業務調整計劃。風控流程圖幫助你理解在整個風控鏈路上數據採集和風控策略之間的映射關係;業務調整計劃幫助你排除一些未來不可用數據。例如,為提高用戶轉化率或合規性要求,未來計劃把某些用戶數據 由必導項改為自選項 ,那麼可預見這塊數據未來的採集率將會逐漸下降。如果對這塊數據依賴性高,就會導致模型不穩定。此時,我們就不得不放棄實時數據的使用,或者考慮分箱等方式來平滑影響,或者考慮如何利用存量歷史數據。

? 建議 :可分產品線、時間粒度(天/月)等維度統計數據的缺失率,以此分析數據的穩定性。

2. 考慮數據源的厚薄度

由於各個數據源在不同時間點開始採集,因此數據的厚薄程度存在差異。在構建時間切片特徵時也需注意這一點—— 明確觀察期窗口是否有效。例如,數據採集時間是從2018-01-01開始的,如果要統計最近30天內的RFM特徵,那麼有效的觀察期窗口就是30天,有效的觀察點(樣本)就只能從2018-02-01開始,2018年1月份的樣本由於觀察期不滿30天就無法統計到有效的特徵。在樣本特徵回溯中,筆者經常看到某些同學犯這個錯誤。

因此,如果某塊數據在最近才開始採集,那也不得不捨棄。

3. 考慮模型的應用場景。

特徵是為模型服務的。因此,在構建關係特徵前,我們需要明確模型的應用場景,為模型「量身定製」。如果計劃用在風險定價(A卡模型)環節,那麼某些在A卡之後的環節才能獲取的數據就無法使用。很多建模經驗不足的同學,不管三七二十一,直接把所有可能使用的數據拿來測算,根本沒考慮過線上如何使用的問題。最後,要麼離線測算結果就不佳,要麼最後根本無法上線使用。

? 建議 :羅列一份數據源質量分析清單,筆者在整理中的結果表示例:

圖2 – 數據源質量分析清單

Part 2. 如何構建邊關係?

我們可以從 關係強弱(邊權重)覆蓋率(邊數量)兩個維度來衡量數據源對定義邊的重要性。由於各家公司對數據源獲取情況各異,在此就只對目前市場上的數據源分析關係強弱。

  1. 運營商數據 :關係⭐️⭐️⭐️⭐️⭐️。可根據最近N天內通話記錄次數等指標來衡量兩個人之間的親密程度。
  2. 設備數據 :關係⭐️⭐️⭐️⭐️。可根據最近N天內是否共同使用過一台設備、是否共同使用過同一個Wi-Fi等指標衡量。
  3. 通訊錄數據 :關係⭐️⭐️⭐️⭐️⭐️。通訊錄中所存號碼的備註信息可判斷親密度。
  4. 緊急聯繫人數據 :關係⭐️⭐️⭐️⭐️⭐️。通常情況下,用戶所填的緊急聯繫人會是自己的家人、同事、親友等。
  5. 電商地址數據 :關係⭐️⭐️⭐️。根據地址相似度比對來判斷用戶之間存在的關係。由於地址數據需要提前規整,處理難度大。
  6. 運營老客拉新數據 :關係⭐️⭐️⭐️。產品運營活動中常會推出各種老客拉新活動以實現用戶增長。鏈接傳播渠道一般是微信。因此被拉的新客與老客之間通常是微信朋友關係。
  7. 銀行卡轉賬記錄數據 :關係⭐️⭐️⭐️。通常情況下,覆蓋率較低。
  8. LBS地址位置數據 :關係⭐️。由於設備經緯度數據採集誤差和位置時效性強的問題,這塊數據對於衡量用戶關係較弱。
  9. 其他數據

在羅列出所有可用於構建邊關係的數據後,我們又會面臨一個問題:每個數據源就可以提取出多個邊關係,那麼就可以構造多個子網絡,我們該如何處理這些邊?

可以有以下2種做法:

  • 特徵層融合 :對每個子網絡獨立構建圖特徵,在特徵層中融合。該方案在實踐中的優點在於方便直觀,可並行;缺點在於工作量大,如果有a個數據源,每個數據源可提取b種關係的邊,又有c個節點特徵,此時就會衍生出 a ✖ b ✖ c個特徵。在建模中,也不可能對這所有的特徵入模,需要開展大量的特徵篩選工作。
  • 網絡層融合 :該方案在實踐中的優點在於將各類強邊弱邊融合在一起(w1 * e1 + w2 * e2 + w3 * e3 + …),使邊的內在含義更為豐富,邊的覆蓋率得到提升;缺點在於無法很好對融合權重賦值,前期可考慮專家經驗拍定,後期優化可以考慮結合具體的target來訓練估計。

圖3 – 特徵層融合 VS 網絡層融合

Part 3. 如何使用節點特徵?

一般情況下,節點特指用戶(當然也可以是手機號、設備等)。我們可以通過RFM模型批量生產出大量時間切片特徵,或者根據業務理解構造出強業務特徵。

而關係網絡的一個價值在於:利用節點所在群體(可以是一度、二度,或者社區發現算法挖掘出的簇)中的鄰居節點特徵,通過關係網絡傳播到某個節點上。

如果節點特徵表對鄰居節點的覆蓋率低(通常情況下,鄰居節點數 >> 特徵表中節點數),那麼網絡傳播過程將會大打折扣。試想,一個下單用戶好不容易找出100個一度鄰居,然而只有3個鄰居節點特徵變量有值,其餘鄰居節點特徵都為null,那麼通過傳播(對鄰居節點求mean、max、min、sum聚合操作)後,該下單用戶僅僅利用了3個鄰居的信息。

?因此, 節點特徵表中的用戶量決定了特徵傳播的上限。

接下來,我們就會考慮如何去擴充節點特徵表中的用戶量?最直接的做法——我們把歷史全量用戶的特徵都拿過來用不就行了?但需要注意的是,用戶特徵具有時效性。 所謂 時效性,是指用戶特徵是否能有效反映用戶最近的風險。 因此,貪多反而會引起特徵質量下降,兩者需要做權衡。

如果該特徵的穩定性比較好(反映用戶穩定屬性的特徵,如性格、信用等),那麼就可以儘可能使用歷史存量數據。也就是說,設定節點特徵表的有效期為1年(或更長),在有效期內的歷史全量節點特徵,我們都可以拿來傳播。例如信用卡額度,通常認為一個用戶在1年內的額度不會發生太大變化。

反之,對於時效性強的特徵,我們寧可犧牲覆蓋率,也要縮短有效期,目的是為了保證特徵的時效性。例如同盾這類的多頭借貸數據,隨着接入和退出機構的動態變化,半年前的同盾數據可能已經無法反映用戶當前的借貸風險,若直接使用反而會引入噪聲。

對於某個節點(用戶)特徵表在不同時間點存在多條記錄的,可以考慮以下策略:

  1. 取最近一條,保證特徵的時效性最強。
  2. 參考遺忘曲線,對不同時間點的特徵進行加權融合。

圖4 – 特徵有效期和取用策略

Part 4. 如何使用存量數據和增量數據?

  1. 增量數據:一般指實時數據,可直接計算一度關係的邊權重。例如,如果用戶申貸下單時必須導運營商數據,那麼就可以根據實時導入的通話記錄來構建圖關係網絡。這是最新的數據,自然更能反映用戶此時的風險。
  2. 存量數據:在一些場景下,我們不得不依賴於使用存量數據。
  • 場景1: 前期業務流程中要求用戶強制導運營商數據,後期變成用戶可選提額項。
  • 場景2: 某塊數據之前都是在定價環節才調用,而此次建模希望用在額度環節(在定價之前)。

此時,我們該如何使用呢?考慮到對於某些新用戶,雖然其自己沒有導入運營商這類的關係數據,但是可能其身邊的人在歷史申貸時就已經導入過資料。那麼,在歷史關係網絡中,該新用戶就被囊括在其中。因此,存量數據也有其使用價值。

同樣的道理,我們需要考慮關係網絡也具有時效性。某些歷史關係網絡比較穩定,比如家人關係,那麼就可以使用較久版本的,否則就只能用最近的,甚至不使用。

圖 5 – 關係網絡有效期

Part 5. 如何實時上線?

據筆者所知,目前線上計算二度關係的技術門檻仍然很高,因此我們在實時計算時考慮一度關係(應該也能達到80%的baseline效果,剩下的20%可能就需要靠高階關係了),二度關係甚至更為複雜的社區發現算法則放在離線計算。因此,在實時構建一度關係和離線提供一度和多度關係的相互補充下,將會得到相對於只用實時一度關係更好的效果。

節點特徵表則可通過離線提前計算,並將有效期範圍的不同觀察點的節點特徵匯總成一張表,導入到線上數據庫。

對於實時訂單,可實時構建出關係網絡,取出一度聯繫人和相應的邊權重。並從節點特徵表中取出鄰居用戶的特徵,進而傳播擴散,生成實時圖特徵。

Part 6. 如何驗證關係特徵的效果?

在風控建模中,評估特徵性能最為關注穩定性和區分度。穩定性可用PSI(群體穩定性)來計算,而區分度可用IV(信息量)來衡量。再次強調穩定性在風控中的重要性。

因此,可按照以下步驟來快速評估:

  1. 考慮先回溯足夠多的樣本,通常是要求幾個月以能評估穩定性
  2. 先評估特徵的區分度。對於IV很高的特徵,再次確認取數邏輯中是否用到未來信息。
  3. 篩選出區分度較強的特徵,進一步評估穩定性。

Part 7. 如何去優化關係特徵?

  1. 引入邊權重,而不僅僅是有關聯的一度用戶。
  2. 離線增加更多關係較強但覆蓋率較低的邊,以起到補充更多一度聯繫人的作用。
  3. 節點特徵增加更多維度。本質還是在於特徵傳播,因此加有效的節點特徵是最重要的。
  4. 利用樣本和target變量對關係網絡融合權重參數估計,以期達到更合理的網絡融合。