基於大數據聚類社羣的做弊用戶發現方法

前面的文章中咱們講道,像趣頭條類的APP對於收徒和閱讀行爲給予用戶現金獎勵的方式勢必會受到大量羊毛黨黑產的注意,其實單個用戶能薅到的錢是沒有多少的,爲了達到利益最大化,黑產確定會利用各類手段構建大量帳號來薅APP運營企業的羊毛,由於收徒的獎勵遠高於閱讀,因此賺取收徒獎勵就成了最嚴重的薅羊毛手段。前文提到爲了更好的識別出這些異經常使用戶,咱們利用用戶的師徒關係構建連通圖,把同一個連通圖上的用戶視爲一個社羣,利用Spark Grahpx實現了一個簡單高效的社羣發現功能。具體內容能夠查看上一篇文章《基於Spark Grahpx+Neo4j 實現用戶社羣發現》,但生成社羣不是目的,咱們的目標是可以對社羣用戶進行分析,根據規則和算法的方法找出社羣內的異經常使用戶及異常社羣,從而達到風控的目的。算法

規則的方法主要是,咱們在設備,IP,用戶基礎信息,用戶行爲信息等維度組合構建用戶的風控畫像,而後開發規則引擎,制定閾值,過濾出超過閾值的異經常使用戶。但只經過規則的方法每每是不夠的,大量的用戶單從個體上看看不出多少異常,但若是上升一個層次,從社羣的總體角度去分析,就會發現用戶的不少類似之處。數組

就像咱們以前文章說的壞人每每是扎堆的,物以類聚,人以羣分,並且黑產想達到必定規模,確定會藉助做弊設備,腳本,機器等手段,機器的行爲通常都有一些類似性,咱們就能夠利用這些類似性對用戶進行聚類分析,因此除了規則的方法外,咱們還能夠用機器學習的方法將具備類似行爲的用戶進行聚類,而後求出類簇的TOP N類似特徵,查看是否可疑,好比設備是否類似,行爲是否類似,基本信息,帳號等是否類似,經過機器學習的方法,咱們能找出不少規則無法斷定的異經常使用戶。app

聚類就是把類似的用戶聚在一塊兒,通常的方法就是計算兩個用戶特徵向量的類似度,這就遇到了第一個問題,對於大量用戶來講,兩兩用戶計算類似度計算量是很是可怕的,好比50萬用戶兩兩計算類似度,總共要計算50w * 50w =2500億次,這計算量就太大了,若是用戶量再大點根本沒法計算。對於這種狀況,人們通常會利用局部敏感哈希等優化算法將數據進行降維,而後經過哈希把類似的用戶儘量的放到同一個桶裏,最後再對同一個桶裏的數據進行兩兩計算,這樣計算量就小不少了。機器學習

下圖是局部敏感哈希算法的一個示意圖,普通的哈希算法是儘可能將數據打散到不一樣的桶裏,達到減小碰撞的目的,但局部敏感哈希旨在將類似的用戶放到相同的桶裏。Spark的Mllib庫裏也提供了LSH局部敏感哈希算法的實現,有興趣的朋友能夠自行查看。學習

不過咱們在用Spark LSH跑數據的過程當中,遇到了每次都是最後幾個task特別緩慢的狀況,可能跟數據傾斜或CPU計算能力不足有關,屢次調試都沒有太好的效果,又限於資源有限,只能另想別的方法,突然想到咱們以前已經按師徒關係生成的社羣,自己就是一種把類似用戶放到同一個桶裏的操做,並且咱們根據師徒關係構建連通圖獲得的社羣應該是已經很好的把有多是一個團伙的人聚到了一塊兒,這樣的話,只需對每一個社羣進行類似度計算就能夠了。優化

計算類似度的方法有多種,像歐氏距離,漢明距離,餘弦類似度,Jaccard 係數等都是經常使用的度量方法,但鑑於咱們提取的用戶特徵既有數值型,又有字符型,並且用戶特徵維度同樣,咱們想經過定義用戶有多少個共同特徵就判爲類似的邏輯,因此咱們選擇了一個比較簡單的f,即對比兩用戶特徵數組相同特徵數,知足閾值即爲類似。調試

不一樣社羣用戶數上圖是咱們根據師徒關係生成的不一樣社羣及社羣人數,下圖爲咱們基於這些社羣,分別計算出的社羣內類似用戶及用戶的類似特徵。cdn

從上圖能夠看出這些類似用戶,有些社羣所有是同一個手機型號,而且開機時間相同,手機一直處於充電狀態,師徒高度集中等等,這些都是比較可疑的用戶,須要風控人員重點分析。blog

至此,咱們經過社羣類似度計算實現了一個簡單的風控聚類模型,基於這個模型找出了一些類似用戶,並且咱們能夠增長更多的用戶特徵,調節模型閾值來達到更好的風控效果。後面咱們還計劃給每一個特徵定義權重,這樣就能夠對社羣進行打分,進而能夠更直觀的判斷社羣的優劣與否。資源

定義特徵權重以下

打分規則目前類似社羣風控分數打分規則爲:

  1. 特徵佔比大於等於50%的特徵爲該類似社羣的類似特徵;
  2. 類似社羣風控分數 = 類似特徵佔比乘以特徵權重的累加和
  3. 若是存在權重大於等於10的類似特徵,類似社羣風控分數要再加上用戶數mod 100,即每100用戶加1分

好比下面爲類似社羣的用戶數和類似特徵佔比

778 //類似社羣用戶數

97% of 'app_ver' is '3.9.1', //權重爲2

72% of 'masterid' is '599aa668c0d9db00014239e7', //權重爲5

53% of 'battery_consumption' is '100' //權重爲10

//計算類似社羣風控分數以下Score = 0.972 + 0.725 + 0.5310 + (778 mod 100) 1 = 17.84

查詢結果表以下

相關文章
相關標籤/搜索