如何系統性評估反作弊模型效果?

作者:蔡逸

你的模型效果好不好?如何才能更好?

刷單識別效果如何?有多少漏殺?有多少誤殺?

隨著機器學習中大量學習模型的引入和擴展,致使我們刷單識別效果日漸精準,由原來IP、設備等硬性規則的判斷標準,逐漸延伸到通過海量數據分析和機器學習來精準識別用戶異常行為的演算法判斷;

大多電商公司都會引入人工核查訂單的方式來輔助判斷模型效果,但隨著「精刷」「粉絲代刷」等隱蔽作弊行為的日益增多,人工在校驗訂單時也難免舉棋不定,無法判斷是否為刷單;

也許你會將黑白名單、客訴反饋訂單來作為判斷模型效果的重要信息,但你是否想過黑名單大多為「過黑用戶」,其作弊手法過於粗暴,無法完全代表電商平台的刷單特徵;

最可悲的是,模型判定的置信度為多少時,你將其判定為刷單最合適?95%?80%?or 75%?

於是.......你有點崩潰.....

於是....接下來.....該我出場了

我將通過引入真正率、假正率、ROC曲線、K-S曲線等風控模型評價指標來致力於解決如下兩個問題:

問題1:反作弊模型誤抓和漏殺情況如何量化?

問題2:置信度大於多少時確定為作弊,可以讓模型效益最大化?

1. 真正率和假正率

對於模型效果的評估,簡單來看是一個二分類問題,模型輸出會出現四種情況:

我們最關心的結果是正確預測的概率和誤判率,常見的指標有:

(1)True Positive Rate,簡稱為TPR,真正率,計算公式為TPR=TP/(TP+FN)——所有真實的「1」中,有多少被模型成功選出,即所有的刷單中,我們的策略能抓到多少;

(2)False Positive Rate,簡稱為FPR,假正率,計算公式為FPR=FP/(FP+TN)——所有真實的「0」中,有多少被模型誤判為1了,即所有的非刷單中,我們的策略誤抓了多少;

(3)Precision=TP/(TP+FP),或2TP/((TP+FN)+(TP+FP)),稱為「精確率」。

2. 黑白樣本選取

有了真正率和假正率作為衡量標準之後,最重要的問題就是黑白樣本的選取了,但是我怎麼知道這家電商公司里哪些訂單是作弊訂單,哪些訂單是非作弊訂單呢?

1)白樣本篩選方法:

  • 如果這家公司有自營店鋪,那就太完美了,在自營店鋪有過一定復購的用戶幾乎不太可能為作弊用戶;並且此類用戶購買方式與平台正常用戶極為相似;
  • 如果沒有自營店鋪,可以利用用戶等級、用戶註冊時長等方式來獲取白名單數據,但是.....這部分用戶在平台中的代表性略差,可能會導致模型校驗效果不佳;
  • 還有一個至為重要的法寶:就是客訴用戶,刷單用戶是極少客訴的,哪些整天維權的正義使者、為了小便宜找客服探討人生的用戶都是作為白樣本的重要來源。

2)黑樣本篩選方法:

  • 將人工校驗後確定為作弊的用戶列入黑樣本即可,原因很簡單,人工識別水平再怎麼差,也不至於將好用戶誤判為壞用戶,一般情況下人工是無法識別作弊訂單,所以講壞用戶誤判為好用戶的概率較高,而將好用戶誤判為壞用戶的概率卻較低;
  • 被硬規則命中的用戶可以列入黑樣本,比如被某條物流信息命中的訂單(該物流信息精確率在99%以上)的用戶一定是壞用戶。

假設P值表示系統判定該訂單做作弊訂單的置信度,0<=P<=1,假設P=80%,我們認為該筆訂單是刷單訂單的概率為80%,則可以根據黑白樣本篩選的數據列出如下表格:

進而我們計算出:

真正率(TPR)= TP(TP+FN)=a%(所有的刷單中,我們的策略能抓到a%)

假正率(FPR)= FP/(FP+TN)=b%(所有的非刷單中,我們的策略誤抓了b%)

精確率(Precision)=TP/(TP+FP)=c%(系統確認作弊的訂單中,c%為真實作弊)

3. ROC曲線和K-S曲線

其實最讓我們頭疼的是我們到底應該將置信度調整為多少,才能讓模型效用最大化,假如取值為60%,害怕誤殺過高,取值95%又怕漏殺過高,於是你......再一次陷入沉思

從TPR和FPR來看,最理想的模型,當然是TPR盡量高而FPR盡量低,然而任何模型在提高正確預測概率的同時,也會難以避免地增加誤判率。那麼如何調整TPR和FPR才能讓模型效益最大化呢?在此引入ROC曲線和 K-S曲線。

首先,做一下理論學習。。。

ROC曲線:對於一個二分類模型,輸出的最初結果是連續的;假設已經確定一個閥值,那麼最初結果大於閥值時,則輸出最終結果為1,小於閥值則輸出為0。假如閥值取值為0.6,那麼FPR和TPR就可以計算出此時的取值,標誌為一個點,記為(FPR1,TPR1);如果閥值取值為0.5,同理就可以計算出另一個點,記為(FPR2,TPR2)。設定不同的閥值,就可以計算不同的點(FPR,TPR),我們以FPR為橫坐標,TPR為縱坐標,把不同的點連成曲線,就得到了ROC曲線。

理論上ROC就是這麼畫出來的,那麼問題來了,閥值如何確定?

以Logistic模型為例,模型輸出的結果其實是概率,然後我們通過設定閥值,把概率轉化為最終的輸出結果0和1。首先出現在我們腦中的直觀想法,就是把(0,1)區間進行等分,比如,等分為十個區間(其實分成多少份都可以,大家可以自由發揮),那麼就可以分別以0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9為閾值,首先計算出根據閥值判定出的0和1有多少,以及判定為1真實為1和判斷為1真實為0的有多少;然後計算出不同的(FPR,TPR)值;最後把點之間進行連線,畫出的曲線即是ROC曲線。

K-S曲線:常用的模型評價還有K-S曲線,它和ROC曲線的畫法異曲同工。以Logistic模型為例,首先把Logistic模型輸出的概率從大到小排序,然後取10%的值(也就是概率值)作為閥值,同理把10%*k(k=1,2,3,…,9)處的值作為閥值,計算出不同的FPR和TPR值,以10%*k(k=1,2,3,…,9)為橫坐標,分別以TPR和FPR的值為縱坐標,就可以畫出兩個曲線,這就是K-S曲線。

從K-S曲線就能衍生出KS值,KS=max(TPR-FPR),即是兩條曲線之間的最大間隔距離。當(TPR-FPR)最大時,也就是ΔTPR-ΔFPR=0,這和ROC曲線上找最優閥值的條件ΔTPR=ΔFPR是一樣的。從這點也可以看出,ROC曲線、K-S曲線、KS值的本質是相同的。

K-S曲線能直觀地找出模型中差異最大的一個分段,比如評分模型就比較適合用KS值進行評估;但同時,KS值只能反映出哪個分段是區分度最大的,不能反映出所有分段的效果。所以,在實際應用中,模型評價一般需要將ROC曲線、K-S曲線、KS值、AUC指標結合起來使用。

接下來,我們用SPSS來製作ROC曲線並計算AUC值和K-S值

將以上黑白樣本數據導入SPSS,系統判定置信度為自變數,人工判定結果(作弊為1,非作弊為0)為因變數,繪製ROC曲線,得出如下結果:

藍色線即為ROC曲線

縱坐標為敏感度(即真正率):就是把實際為真值的判斷為真值的概率;

橫坐標為誤判率(即假正率):就是把實際為假值的判斷為真值的概率,其值等於1-特異度;

特異度:就是把實際為假值的判斷為假值的概率。

曲線下方的面積AUC(Area under the curve):包括面積值、顯著性分析和置信區間可以反映預測的效果。

預測效果的判定常以AUC值來判定

ROC曲線評價:ROC曲線下的面積值在1.0和0.5之間。在AUC>0.5的情況下, AUC越接近於1,說明診斷效果越好。AUC在0.5~0.7時有較低準確性,AUC在0.7~0.9時有 一定準確性,AUC在0.9以上時有較高準確性。AUC=0.5時,說明診斷方法完全不起作用, 無診斷價值。AUC<0.5不符合真實情況,在實際中極少出現。

在選取最佳置信度時我們要參考下圖:

按約登指數確定最佳臨界點,約登指數=(靈敏度+特異度)-1,約登指數越大,則模型效果越好,通常,我們也會利用K-S值來判斷模型效果,KS=max(TPR-FPR)時,模型效果最佳,從以上數據可以看出,當置信度為0.835時,模型效果最好。

註:轉載需經過本人同意

推薦閱讀:

國標《保理術語》評析(連載終):額度、風險資產及其他
如何看待中國版 CDS 和 CLN?
與傳統的投資顧問相比,智能投顧具有哪些優勢?

TAG:互联网 | 反作弊 | 风险管理 |