風控引擎(Radar)

項目介紹

一款基於java語言,使用Springboot + Mongodb + Groovy 等框架搭建的輕量級實時風控引擎,適用於反欺詐應用場景,極簡的配置,真正做到了開箱即用。


通過學習本項目能快速瞭解風險的定義,進而量化風險 ,最後達到集中管理風險的目的。
A real-time risk analysis engine,which can update risk rule in real-time and make it effective immediately.
It applies to the anti-fraud application perfectly. The project code called Radar, like the code, monitor the transaction at the back.

項目特點

  • 實時風控,特殊場景可以做到100ms內響應
  • 可視化規則編輯器,豐富的運算符、計算規則靈活
  • 支持中文,易用性更強
  • 自定義規則引擎,更加靈活,支持複雜多變的場景
  • 插件化的設計,快速接入其它數據能力平臺
  • NoSQL,易擴展,高性能
  • 配置簡單,開箱即用!
風控引擎(Radar)

背景

伴隨著移動互聯網的高速發展,羊毛黨快速崛起,從一平臺到另一個平臺,所過之處一地雞毛,這還不是最可怕的, 隨之而來的黑產令大部分互聯網應用為之膽寒,通常新上線的APP的福利比較大,風控系統不完善,BUG 被發現的頻率也比較高, 黑產利用BUG短時間給平臺帶來了巨大的損失,某多多的(100元測試優惠券,一夜損失上百萬W)就是一例。 針對這一現象, 擁有一款實時的風控引擎是所有帶有金融性質的APP 的當務之急, Radar 應景而生,Radar本來是筆者前公司的一個內部項目,公司現在不復存在,考慮到項目本身的價值, 現在使用Springboot進行改造,並刪除了很多本地化功能,只保留風控引擎核心,更具通用型,二次開發成本低。

項目初衷

我們知道企業做大後,會有很多產品線,而幾乎每一個產品都需要做風險控制,通常我們都是把風險控制的邏輯寫在相應的業務功能代碼裡, 大量重複的風控邏輯代碼耦合在我們的業務邏輯裡面,隨著時間的累積,代碼會變得異常複雜,會給後期的維護造成巨大的人力成本和風險。

所以風險的集中化管理勢在必行,只有通過一個統一的管理平臺,使用規則引擎,採用可視化配置的形式, 平臺化管理不同產品的風控策略才是一種更好的方式, 而這正是Radar的初衷。

項目架構

前後端分離架構

後端技術框架: SpringBoot + Mybatis + tkMapper + Mysql + MongoDB + Redis + Groovy + Swagger

前端技術框架: React(SPA)

架構圖

風控引擎(Radar)

技術選型

  • Springboot:筆者是java 出生, 選擇 Springboot 理所當然,方便自己, 也方便其他Java使用者進行擴展。
  • Mybatis + tkMapper: 持久層框架, tkMapper 提供mapper 通用模板功能,減少重複代碼的生成。
  • Mysql : 本項目中關係數據庫,主要用於存放 風險模型的元信息。
  • MongoDB: 用於存放事件JSON, 提供基本統計學計算(例如:max, min, sum, avg, ), 複雜的統計學概念(sd,variance, etc...)在內存中計算。
  • Redis: 提供緩存支持,Engine 利用發佈訂閱特性監聽管理端相關配置的更新
  • Groovy: 規則引擎,風控規則最後都生成 groovy 腳本, 實時編輯,動態生成,即時生效。
  • Swagger: Rest API 管理

名詞解釋

Model: 模型

用戶行為事件, 例如:註冊,登錄,購買,提現。。。

模型三要素

也就是事件行為三要素,風控系統的核心定義:事件流水ID(例如:交易流水號),實體ID(例如:userId),事件發生時間(例如:交易時間), 簡單來說就是誰什麼時候做了什麼事。(who, when, what)

PreItem: 預處理

像經緯度,IP,手機號碼段等事件屬性,可能無法直接計算,通過預處理插件 轉換成 其他格式, 例如:經緯度,ip 可以通過對應插件變成位置和地址,手機號碼可以通過插件獲取其它系統的用戶畫像信息等。

Abstraction: 特徵

特徵工程,例如用戶小時交易次數,IP 一天交易金額,設備一小時交易次數。。。

Adaptation: 機器學習模型適配器

使用訓練好的機器學習模型,進行檢測

風控引擎(Radar)

Activation: 激活點

概念類似於機器學習裡面的 (Activation Function), 一個模型可以定義多個 activation(相當於不同維度的檢測報告),每個activation都可以獨立配置規則,單獨打分。 例如,用戶註冊行為, 可以定義:異常註冊, 垃圾註冊, 可以輸出多個activation。

Rule: 規則

在計算 abstraction 和 activation 之前,需要先檢查數據是否正常,檢查就是按照rule 配置進行檢測。

Plugin:插件

為了通用性,項目自身並不提供敏感數據能力,但是通過擴展插件來獲得其它系統或者中間數據功能, 目前項目自帶手機號碼段和IP地址轉換兩款插件,理論上可以通過擴展插件集成任何其它數據的能力, 例如:如果商戶自身帶有內部用戶畫像,可以自定義一個插件用過用戶ID來獲取用戶畫像數據。

引擎處理流程

風控引擎(Radar)

數據ER關係圖

風控引擎(Radar)

Demo數據

以ting提現為例:

風控引擎(Radar)

數據樣例:

響應樣例:


私信回覆"Radar"獲取鏈接地址,喜歡的點個關注,一起學習探討新技術。


分享到:


相關文章: