揭祕Stripe欺詐檢測系統背後的機器學習演算法 - quastor

banq發表於2022-01-20

Stripe 是世界上最大的支付處理商之一。

該公司的主要產品是 Stripe Payments API,開發人員可以使用它輕鬆地將支付功能嵌入到他們的應用程式中。

由於 Stripe 的規模,它們是支付欺詐和網路犯罪的一大目標。

Andrew Tausz 是 Stripe 風險情報團隊的一員,他寫了一篇很棒的部落格文章,介紹了 Stripe 如何使用相似性聚類來捕獲欺詐圈。

 

Stripe 的商家欺詐行為

Stripe 面臨的最常見的欺詐型別之一是商家欺詐,詐騙者將建立一個網站來宣傳欺詐性產品或服務(並使用 Stripe 處理付款):例如,如果詐騙者建立了一個以極低折扣價銷售電子產品的網站。顧客付錢給他後,他把錢裝在口袋裡,不給顧客承諾的商品。客戶肯定會對他們的信用卡發出退款請求,最終將由 Stripe 償還。

然後,Stripe 將嘗試從騙子的賬戶中扣款,但如果騙子轉出所有錢,那麼 Stripe 將不得不承擔損失。

欺詐者被 Stripe 抓住後,他的帳戶將被禁用。但是,他很可能會嘗試通過建立一個新的 Stripe 帳戶來繼續騙局。

Stripe 可以減少欺詐的一種方法是通過相似性聚類來捕獲這些重複的欺詐者。

 

使用相似性聚類減少商家欺詐

當詐騙者建立一個新的 Stripe 帳戶(在他以前的帳戶被抓後)時,他可能會重複使用他以前的帳戶中的一些資訊和屬性。

某些資訊很容易偽造,例如您的姓名或出生日期。但是,其他屬性更難:例如,獲得一個新的銀行賬戶需要付出很大的努力。

因此,Stripe 發現通過共享屬性將賬戶連結在一起對於捕捉明顯的欺詐企圖非常有效。

 

從基於啟發式模型切換到 ML 模型

為了將帳戶連結在一起,Stripe 依賴於相似度分數。

他們獲取兩個帳戶,然後根據帳戶具有的共享屬性的數量為它們分配相似度分數。

一些共享屬性的權重比其他屬性重。共享出生日期的兩個 Stripe 賬戶的相似度分數應該低於共享銀行賬戶的兩個賬戶。

以前,Stripe 依賴於基於啟發式的系統,其中權重是手動構建的(基於猜測和檢查)。

Stripe 決定通過訓練機器學習模型來處理這項任務來進行轉換。

現在,隨著時間的推移,他們可以隨著時間的推移自動重新訓練模型,因為他們可以獲得更多資料並提高準確性,適應新的欺詐趨勢,並學習特定對抗群體的特徵。

 

構建 ML 模型

為了構建模型,Stripe 採用了監督學習方法。

Stripe 構建模型的方法是相似度學習,其目標是學習一個相似度函式,該函式可以衡量兩個物件的相似程度。相似性學習廣泛用於排名、推薦系統、面部/語音驗證和欺詐檢測。

根據風險承保團隊之前的工作,他們已經擁有龐大的欺詐圈和欺詐賬戶叢集資料集。

Stripe 將其清理到一個由賬戶對組成的資料集中,每對賬戶都有一個標籤,表明兩個賬戶是否屬於同一個叢集。

現在他們有了資料集,Stripe 必須生成模型可以用來比較這對賬戶的特徵,建立一個 Stripe 帳戶需要大量資料,因此 Stripe 擁有可以利用的大量功能集。

選擇的功能示例包括帳戶的電子郵件域、用於兩個帳戶的信用卡號重疊、文字相似性度量等。

 

使用梯度提升決策樹

由於特徵範圍廣泛,Stripe 決定使用梯度增強決策樹 (GBDT)來表示它們的相似性模型。

Stripe 發現 GBDT 在易於訓練、具有強大的預測能力以及儘管資料存在差異但仍保持穩健之間取得了適當的平衡。

GBDT 也易於微調並具有易於理解的特性。

Stripe 使用的 GBDT 的實現是XGBoost

Stripe 之所以選擇 XGBoost 模型,是因為它們具有出色的效能,還因為 Stripe 已經擁有完善的基礎設施來訓練和支援它們。

Stripe 有一個名為 Railyard 的內部 API,它以可擴充套件和可維護的方式處理訓練 ML 模型。

您可以在此處閱讀有關 Railyard 及其架構的更多資訊。

 

預測使用

之後,Stripe 開始使用他們的模型來預測欺詐活動。

由於此模型在成對的 Stripe 帳戶上執行,因此不可能向其提供所有帳戶對並計算所有帳戶對的相似度分數(組合太多)。

相反,Stripe 使用一些啟發式方法來識別可疑帳戶並將候選者集修剪到合理的數量。

然後,他們使用他們的 ML 模型來生成賬戶之間的相似度分數。

之後,他們計算結果圖上的連線元件,以獲得可以分析、處理或手動檢查的高保真帳戶叢集的最終輸出。

如果一個叢集包含大量已知的欺詐賬戶,那麼風險分析師可能想要進一步調查該叢集中的剩餘賬戶。

您可以在此處閱讀完整文章的更多詳細資訊。

 

相關文章