《Graph Learning專欄》 : 高密子圖挖掘

本週我們介紹另一圖上的“聚類”算法—高密子圖挖掘(Dense Subgraph Mining),這類算法與社羣檢測不同的是處理的數據對象是異構圖(節點的類型不是單一的,同類型節點之間一般沒有邊),社羣檢測需要對整張圖的節點進行社區劃分,而高密子圖只關心最緊密的那個社區;相同的是二者都是同一種思考模式:定義一個衡量密集度的指標,啓發式地不斷優化這個值

lockstep行爲模式

在實際應用場景中,高密子圖一般用作團伙欺詐檢測。因爲這類算法找到的最緻密的社區一般預示着一種同步的、大量的關聯行爲模式,這種行爲模式稱之爲lockstep,而且往往比較契合現實場景中欺詐團伙的本質特點。比如水軍賬號團伙在進行惡意評分、虛假點贊時,都會產生這樣的行爲模式。

lockstep模式從圖上面看,是要找到聯繫緊密的二部圖結構,這種結構對應着鄰接矩陣上的某個Dense Block。在《EigenSpokes: Surprising Patterns and Scalable Community Chipping in Large Graphs 》一文中,作者探討了這種模式在譜空間上的可視化效應:

上圖就是對鄰接矩陣進行SVD分解,然後將u向量與v向量的前兩列分別可視化出來的結果。作者得到的一個基本結論就是這類模式會在譜空間上有明顯的聚類現象,譜空間上的每一簇都對應着鄰接矩陣上的某個Dense Block。利用這個現象,可以十分方便地觀察到圖裏面的高密子圖結構。

 

但是如何讓這個發現過程自動化,以及避免SVD分解的高時間複雜度呢?下面要講解的FRAUDAR算法,可以很好地實現這個目標。

 

FRAUDAR算法

FRAUDAR 算法自動化地挖掘出二部圖裏的高密子圖,同時對欺詐者的僞裝行爲(Camouflage )具有非常好的對抗性,線性時間複雜度也使得該算法在工業級的業務數據上具有很好的適用性,並獲得了 KDD2016的最佳論文獎。

 

下面來看看本文怎麼尋找高密子圖:

問題定義

考慮在用戶對商品進行評分的場景中,m個用戶構成

n件商品構成

用戶與商品之間構成二部圖

我們需要找到可疑的欺詐用戶。更多的符號約定如下:

度量指標

爲了度量我們找到的社區的可疑度,作者定義了一個十分簡單的度量指標:

 

表示社區S內的 第i個節點的可疑度,

表示社區內i節點與j節點構成邊的可疑度。

 

一般

可以通過先驗的,其他方面的信息來給出節點的可疑度,後文中將這個值都設爲0。

可用邊的權重代替,最特殊的情況是都取值爲1,這樣整個可疑度的度量指標就退化成了社區內邊的密度了。

 

爲了說明這個度量指標的合理性,作者證明了該度量指標具有以下4個性質:

1.node suspiciousness:節點的可疑度越高,社區的可疑度越高。

2.edge suspiciousness:邊的可疑度越高,社區的可疑度越高。

3.size:邊密度一樣,越大的社區可疑度越高。

4.concentration:節點和邊的可疑度之和一樣,越小的社區可疑度越高。

算法

同很多啓發式算法一樣,有了這個度量指標之後,就可以貪心地去優化這個值。具體來說,就是從整張圖開始,不斷重複地刪除某個節點,使剩下的圖的可疑度指標最大。這裏一個核心加速的地方在於:刪除某個節點i,僅僅只會影響到與i節點相連的節點結構發生變化。由於本文使用的度量指標最終爲社區邊的密度,所以每次只需要考慮刪除度最小的節點,然後更新與之相連節點的度即可,這個不斷更新最小度的過程可以通過優先樹這種數據結構快速實現。

 

下面我們給出算法步驟:

可以看到,算法不斷刪除節點使得剩下的節點構成的社區可疑度最大,然後記錄整個刪除過程中社區可疑度最大的那一輪,那麼該輪的剩餘節點構成的子圖就是最可疑的。

對抗僞裝

前面我們講了怎樣使用啓發式地算法快速尋找圖中的高密子圖,但是這裏面存在兩方面的問題:

  1. 真實用戶與流行商品之間會形成一個天然聯繫緊密的 Dense Block,算法怎麼區分這類社區與欺詐行爲形成的社區?
  2. 欺詐者可以通過與流行商品之間的互動來僞裝自己,比如隨機評論一些其他商品或者流行商品來僞裝自己的數據表現形式,如下圖:

對於上述兩個問題,如何解決呢?

 

這裏面很核心的一點是,不管怎麼僞裝,對於那些買評分的商品,欺詐用戶的評分權重佔比更高,而其他商品真實用戶的評分權重佔比更高。考慮清楚了這一點之後,我們可以對邊ij的可疑度Cij根據列節點的度(weight sum of column)進行降權操作。比如某件商品j的度越高,那麼就要將cij處理的越低,這是因爲度很高的商品並不是一定可疑的,比如流行商品,同時以這種方式對邊的可疑度進行重新分配,完全不會降低欺詐社區的可疑度。大家可以對照上面圖中兩種僞裝方式,考慮僞裝前與僞裝後社區可疑度的變化就明白這個道理了。

 

具體地,本文使用的降權函數爲

c爲一個常數,實驗中設置爲5。該算法在後文的一系列工業界數據集實驗上面都取得了最好成績。

Dense Subtensor

上面的FRAUDAR算法只是在二部圖中挖掘高密子圖,當數據具有更高維度時,比如一個轉發帖子的場景中,每條數據都對應着賬戶、IP、帖子ID、時間這4維信息,數據因此而構成了一個 4 階張量Tensor。我們的任務變成了在這個高維 Tensor 中尋找 Dense Subtensor。雖然數據的維度變高了,但是解決問題的思路同 FRAUDAR 算法還是一致的,比如 M-Zoom、D-Cube 這兩類 Dense Subtensor Mining 算法,都是先定義一個度量指標,然後啓發式迭代優化,有興趣的可以自己去看看相關論文。

 

一般來說,在高維數據中,如果還能找到密集區域,那麼會大大增加區域的可疑度。因爲這需要更多的維度信息進行交叉印證,正常用戶羣體最多在 2 維空間上聚集,我們可以看下面兩個圖的對比:

歡迎關注我們的微信公衆號:極驗(geetest_jy)添加技術助理:geetest1024入羣交流!

參考文獻:

EigenSpokes

http://people.cs.vt.edu/badityap/papers/eigenspokes-pakdd10.pdf

FRAUDAR

https://www.cs.cmu.edu/~neilshah/research/papers/FRAUDAR.KDD.16.pdf

M-Zoom

https://www.cs.cmu.edu/~kijungs/papers/mzoomPKDD2016.pdf

D-Cube

http://www.cs.cmu.edu/~kijungs/papers/dcubeWSDM2017.pdf

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