用戶評分系統設計與實現(風控方向)

用戶評分設計與實現(風控方向)

維度 == 標籤,泛指描述惡意行爲的一類合集,不必糾結文中用詞,看官就當做一回事, 就是你理解的那回事就行。

  • 不區分維度
    不管你是IP維度、設備維度、xxx維度,只要能描述惡意傾向就算
  • 不面向維度
    不面向某一維度打分,只面向用戶
  • 不絕對公平
    不同維度之間的權重可能失衡,由基準分控制,或者說由“業務專家”配置;但保證在相同業務場景下相同標籤,惡意次數、最近分佈與得分正相關
  • 不同業務場景可以不同側重點
    每個業務場景可以各自一套基準分值邏輯,所有業務共用一套得分增值邏輯

總原則

每天基於前一天的分值,增量更新
得分越高,用戶越黑

縱向分

下文,將所有具備惡意傾向的描述,統稱爲“標籤”,比如代理IP登錄是一個維度,也可以說是一個標籤,工程師喜歡說維度,運營喜歡說標籤.看官隨你自己

  • 基準分
    每個標籤命中一次就在原先基礎上直接加的分數

    基準分,用來度量不同標籤的危害程度,舉例打架10分,罵人5分,事情危害程度不同

  • 浮動分(頻次分)
    每個標籤當天命中N次(次數,次數,不是人數,人數相關,下文單獨會說),乘以浮動係數後加的分數

    浮動分,用來度量某個惡意行爲重複程度,偷盜1次,和偷盜100次,量刑不同

  • 級聯分(組合分)
    每個標籤與其他標籤同時滿足後,額外加的分,此分不再追加浮動係數

    級聯分,用來描述特定組合下,危害加劇程度,額外加分的場景。往往適用於幾個弱標籤,組合出一個強標籤。

    就像同時具備"夜晚活動"、“攜帶撬鎖工具”、"走路躲躲藏藏"等特徵,大概率是啥?三個單獨看,未必多可惡吧。貓夜晚活動,開鎖匠攜帶撬鎖工具,便衣police還走路躲躲藏藏呢?

  • 衰減分(隨時間減分,慢性洗白)
    每個標籤在考察週期(默認一個月),命中情況的分佈,命中密集分佈在近期,則不洗白或者低速洗白;不命中密集分佈在近期,則洗白或者高速洗白

    爲何要洗白,不用說了吧?總不能犯了一次錯,擼了次羊毛,一輩子都不給改過自新啊?萬一他是大R,後面刷個幾十上百萬呢

    舉例:假設考察週期是7天,1表示命中某標籤,0表示沒有命中
    對於
    A序列 1,1,1,1,0,0,0 和
    B序列 0,0,0,0,1,1,1
    顯然A序列需要洗白,做減分操作;B序列需要加分或者不加不減,總之不能洗白

橫向分

上述是 4個 基礎分值,計算邏輯,所有標籤通用,可以歸爲一類:縱向比較,始終是一個標籤下的結果或情況在比較。下面介紹一些,橫向比較, 哪個標籤更好使?

  • 效果分(名字不重要,也可以叫評價分,反饋分,重點看下文解釋)

    • 舉例:安裝設備修改器 -- 一般用戶不會安裝這,安裝這玩意的,大概率不是好人,是一個黑標籤

      假設uid abcdefghijk安裝了設備修改器,那麼設備號(uid): abcdefghijk就是這個黑標籤下的一個值

      那如果 abcdefghijk 設備上一共登錄了100個用戶,其中90個都已經被標黑了,是不是說這個標籤打在這個設備上很準啊,或者說這個設備在這類標籤中很準啊


    • 再舉例:雲商IP -- 一般用戶的出口IP不會是雲商IP,理由不解釋,本文重在解釋用戶評分系統設計,不過多描述基礎網絡基礎知識

      假設IP 1.2.3.6 是雲商IP,那麼就說 1.2.3.6是這個黑標籤下一個值

      如果這個IP 1.2.3.6一共登錄了10000個用戶,其中8000個已經被標黑了,是不是說明這個IP識別的很準啊


    • 可以看出,效果分是爲了標籤之間橫向對比,把識別效果好的突出來,讓更準的標籤多幹活。就像團隊裏,讓優秀的人,多機會表現,是一個意思。

      那麼問題來鳥,如何衡量誰更優秀?

      • 方案A,誰的準確率高,誰更優秀
        設備 abcdefghijk 準確率90%,勝出
      • 方案B,誰準確的基數大,誰優秀
        IP 1.2.3.6 準確基數8000 遠大於上面的90, 勝出
      • 方案C,方案AB結合

        在某個閾值線以下,比較基數;超過閾值線以後,比較準確率

        設備abcdefghijk 和 IP 1.2.3.6, 誰更優秀,你說了算,甚至,你可以設計成一樣優秀


    • 彙總
      目標:讓標籤具備橫向比較能力,讓優秀的標籤值發揮更大的作用
      實現方式:根據其標識總數,有效標識數去計算,規則看官你定

實現

畫完餅了,該講如何實現了?代碼是沒有滴,看懂了,肯定是闊以開工編碼滴

  • 數據層面(一)

    爲了計算每個標籤的4個縱向分(基礎、浮動、級聯、衰減),需要爲每個用戶存儲一個二維表格,每行是一個標籤最近30天(週期看官可以自己定)的命中情況

    標籤名 30天前 29天前 ... 昨天
    tag1 323(次) 1(次) .... 0(次)
    tag2 3(次) 0(次) .... 9(次)

    每個用戶一張表嘛?當然不是,數據結構,碼農自己可隨意換,能描述上述信息即可。

    比如我有50個標籤,1億用戶,完全可以用戶尾號分表,十張表,每張1千萬用戶,每個用戶50行記錄,那麼每張表數據量5千萬,還好還好。

    對於某個標籤

    • 基準分怎麼算?看昨天是否命中咯
    • 浮動分怎麼算? 看昨天命中多少次咯
    • 級聯分怎麼算? 看昨天命中的標籤彙總,是否滿足指定組合咯
    • 衰減分怎麼算?獲取最近30天的命中次數,非0分佈越靠近越是正分,非0分佈越遠越是負分。具體權重,看官隨便拍個值,你家碼農絕壁搞的定。搞不定?盤他
  • 數據層面(二)

    爲了計算每個標籤的效果分,需要統計每個標籤值,每天的命中用戶的打標結果。如果無人工打標,可以直接粗暴一點點,被任意標籤連續命中7天就算黑用戶。

    標籤項 標籤值 日期 準確 誤判
    代理IP 1.2.3.6 昨天 323(人) 1(人)
    代理IP 1.2.3.6 前天 39(人) 0(人)
    代理IP 1.2.3.6 .... .... ....
    雲商IP 6.3.2.1 昨天 23(人) 0(人)
    雲商IP 6.3.2.1 前天 31(人) 0(人)
    雲商IP 6.3.2.1 .... .... ....
    其他標籤 其他值 .... .... ....

    明白了摸?有了怎麼一張效果統計表,你是不是想怎麼算都行?選出你爽的標籤值或者標籤項都可以!!!

    效果好的標籤值,比如1.2.3.6,可以增加其效果分,讓命中它的人得分高

    效果好的標籤項,比如雲商IP,可以反過來提高這個標籤的基準分,這個很重要哦,形成反哺了哦

    再進一步,不停的反哺,你最終將得到一份十分貼近業務的基準分配置,這就是知識沉澱。你可以拿它換2個肉夾饃了

  • 業務(場景)層面

    上文說了,可以得到一份貼合業務的基準分配置。那麼不同的業務,是不是有所差異,是不是應該有不同一套基準分配置? 這個實現就不說了,找你家碼農搞,讓做個可配的。做不了,就盤他

擴展

  • 效果分計算可以考慮漏報
  • 阻斷機制:假設某個標籤數據被污染,需要有阻斷機制,立即該標籤的得分強制置零;甚至可以更暴力,全局阻斷,所有標籤得分爲0
  • 衰減力度:衰減實現,未舉例,隨意實現,但是衰減力度需要根據實際效果,適當調整,不要壞了十天,一天就洗白白了,也不能一百天也洗不白。拿不準,就找運營拍板。不要問板是誰?爲何要拍他?
  • 如何造那麼多標籤,供這套評分系統使用?  移步下文: https://blog.csdn.net/secretx/article/details/86629558
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章