基於圖的異常檢測(三):GraphRAD


基於圖的異常檢測(三):GraphRAD

基於圖的異常檢測(三):GraphRAD

論文: 《GraphRAD: A Graph-based Risky Account Detection System》
作者:Jun Ma(Amazon),Danqing Zhang(Berkeley)
來源:MLG ' 18

本文介紹Amazon基於圖的欺詐交易賬戶檢測系統,相比LOCKINFER 和 OddBall,本文是面向實際業務設計的檢測系統,並使用了標簽數據。

早期做過十分類似的項目,在可視化關聯分析的基礎上,為案件調查人員提供智能風險團伙分析服務。所以個人還是比較認可的,在整個系統設計及社區發現模塊比較有借鑒價值。

 

1.背景

應用場景:黑產通過竊取支付信息在Amazon的在線零售商戶購買商品獲利。

假設:在“欺詐社區”中欺詐賬戶間連接緊密,而與社區外的賬戶連接稀疏。

檢測系統目標:給予賬戶之間關系圖和一批黑種子,系統檢測出有潛在風險的社區及賬戶供專家調查。並滿足以下特性:

  • 檢測需要做到准實時,以及時止損。
  • 返回的可疑社區不能太大和重疊,減少專家工作量。
  • 每個賬戶需要有風險評分,專家根據評分決定優先級。
  • 目標是對已有規則引擎的補充,額外發現未識別的欺詐賬戶。

2.系統框架

大概思路是:通過最近交易事件提取一批黑種子賬戶,構建賬戶之間關系網絡,然后識別和過濾社區,然后為社區中節點打分,然后返回結果。

流程介紹:

  1. Transaction Record:交易事件數據查詢接口模塊,交易事件字段包括交易時間、賬戶id、收貨地址、決策引擎結果(Trusted、Fraud、Risky),提供一段時間查詢交易事件的接口。
  2. Graph Generator:構建賬戶之間關系圖“big-graph”模塊,通過某些共享屬性(如收貨地址等)建立連邊。
  3. Seeding:篩選黑種子模塊,決策引擎中標記為Fraud 以及 部分Risky的賬戶(根據啟發式規則)。
  4. Community Detection:局部社區發現模塊,以黑種子賬戶為輸入,識別出圍繞種子的一個個局部社區。算法是Personal PageRank變種ACL,線性復雜度。
  5. Screen + Merge:過濾及合並:根據風險大小過濾一些局部社區,然后合並成這些局部社區成“big-comm”(局部社區之間會部分重疊,合並減少冗余)。
  6. Community Extractor:最終社區抽取,基於上面ACL算法得到的基於PPR向量,通過層次聚類得到最終的社區
  7. Feature Extractor:提取“big-comm”中節點特征,基於交易數據,特征使用決策引擎規則
  8. Scoring:基於圖的懲罰項,訓練半監督模型,為每個節點評分

最后給專家提供社區結構和節點評分以供調查使用。

3.核心模塊

3.1 構建網絡(Graph Generator)

數據來源:最近的交易事件

例如 有兩個交易事件:

  • 交易事件1:賬戶A,收貨地址為:杭州市西湖區蔣村花園23幢
  • 交易事件2:賬戶B,收貨地址為:杭州市西湖區蔣村花園23幢

因為賬戶A和賬戶B共享同一個收貨地址,故他們會有一條邊,以此來建立賬戶與賬戶之間關系網絡。

實踐中如共享同一個設備、同一個IP都可以作為連邊條件。

3.2 社區發現及過濾

該模塊是本文的比較有意思的地方,不是對網絡進行全局的划分,而是先以欺詐賬戶為種子節點,找到每一個種子節點所在的局部社區,然后對這一個個局部社區進行過濾和合並成一個大社區,最后對這大社區進行划分,得到一個個不重疊的社區。

這樣做的優勢是:

  1. 計算復雜度非常低,局部社區發現計算復雜度僅跟輸出的結果線性相關。
  2. 個人認為還有個優勢是降噪和考慮用戶需求,通過加入黑種子、社區過濾等人為干預方式,降低數據噪聲,控制社區規模和冗余,方便專家進行案件審查。

下圖比較是直觀的一個全局和局部社區發現的對比:

 

3.2.1 局部社區發現(Community Detection)

以黑種子節點為輸入,使用基於Personal Pagerank局部社區算法ACL,該算法比較經典, 復雜度僅取決於輸出結果。

算法使用電阻率(conductance)作為評價指標(模塊度是全局的):

后面會補上對ACL的解讀。

3.2.2 過濾和合並(Screen + Merge)

因為局部社區發現返回的結果是一個個圍繞着黑種子的局部社區,必然會有冗余

另外局部社區規模非常小,可能是不存在是個體風險,而不是群體風險。

故需要對局部社區進行過濾,本文是先過濾掉規模較小的局部社區,然后對每個局部社區建一個風險評分模型,再過濾掉風險較低局部社區(y怎么定義用什么特征沒仔細說)。

(個人覺得過濾環節不用做太多的操作,簡單原則。另外對社區評分模型不好做的,考驗泛化能力,還不如用規則)

過濾完后再對這一個個局部社區進行合並,組成一個“大社區“(其實就是將所有節點和邊都放在一起)。

3.2.3 社區提取(Community Extractor)

因為局部社區發現用的是基於personal pagerank 的方法,可以得到每個節點的一個pagerank 向量,表示節點與其他節點的相似度。將該一個個向量轉換成矩陣,並用層次聚類的方法得到最終的社區。 社區數量k的設置控制社區規模,方便專家分析。

3.3 節點評分(Scoring)

在“大社區”上為每個節點打上一個分數,方便專家分析時確定優先級及過濾低評分的節點。

本文對比了Node2vec、GCN和在基於圖懲罰項的模型給節點評分,發現基於圖懲罰項的模型效果是最好的(也許是樣本量有限?按理說應該是GCN好)。

基於圖懲罰項的模型即在有監督損失如交叉熵中加入圖的懲罰項(相鄰節點的預測結果是相近的),這樣在訓練時不僅考慮了有標簽節點,也考慮了無標簽的相鄰節點,故稱為半監督學習。

特征是用了決策引擎中的規則,標簽y定義即是否欺詐。

3.4 例子

“大社區“

最終返回的一個個社區

4. 效果評估

該檢測系統目標是 發現更多規則引擎沒有發現的欺詐賬戶,而不是去跟規則引擎去PK,故評價標准是“missed bad” ——檢測到的未發現的欺詐賬戶占比 (通過專家標注,用比例的原因是對於准確率的考量)

首先與隨機抽樣對比,系統每一個模塊的missed bad情況,證明好的系統每一個模塊檢測比例應該是遞增的:

  1. 隨機抽樣:0.017%
  2. 經過局部社區發現和過濾合並得到的大社區上:0.054%
  3. 經過社區提取后:1.51%
  4. 根據節點評分排序和過濾: 2.77%

上述模塊中的missed bad 沒有考慮,被決策引擎判為正常的欺詐賬戶,故真實結果應該會更高。

另外對比簡單規則——欺詐節點直接相連的鄰居認為是欺詐的對比,GraphRAD檢測還是有比較大的增益的。

 

 

基於圖的異常檢測(一):OddBall

基於圖的異常檢測(二):LOCKINFER

基於圖的異常檢測(三):GraphRAD


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM