1 混淆矩陣衍生指標
上面提到的ACC、PPV、TPR、FPR等指標,都是對某一給定分類結果的評估,而絕大多數模型都能產生好多份分類結果(通過調整閾值),所以它們的評估是單一的、片面的,並不能全面地評估模型的效果。因此,需要引入新的評估指標,來綜合全面地評估模型,它們就是如下所述,由混淆矩陣衍生的一系列評估指標。
1.1 ROC
ROC(Receiver Operating Characteristic)曲線,又稱受試者工作特征曲線,常用於二分類模型性能的度量,其最大優點是「無視樣本不平衡」,即對正負樣例占比不敏感。
ROC曲線由兩個指標構建而成: TPR(真正例率)與 FPR(假正例率),其中,縱坐標為TPR,橫坐標為FPR,下面就是一個標准的ROC曲線圖。

與P-R曲線的繪制類似,ROC曲線也是通過遍歷所有閾值來繪制整條曲線的,即ROC曲線上的每一個點,都對應着特定預測閾值下的一對FPR和TPR。以邏輯回歸為例,分類器最后會在測試集中輸出預測概率P(預測y=1的概率),與測試集中原有真實的y一起,這樣就構成了兩列數據(如下圖)。其中,Cls表示真實的分類,P代表1、N代表0;Score表示對應樣本為1的預測概率。

ROC曲線的繪制
- 從上面兩列數據出發,對預測概率Score進行降序排列
- 以排序后的預測概率Score為閾值(>=閾值就預測為P),則從上到下每個閾值都對應一列預測的y,根據真實的y和預測的y就能得到一個混淆矩陣,進而能計算出相應的TPR與FPR。所以,每一個閾值,都對應一列預測的y,對應一個混淆矩陣,對應一對TPR與FPR
- 以TPR為縱軸、FPR為橫軸,把不同閾值對應的(FPR,TPR)在坐標軸中畫出來並連接成曲線,這條曲線就是ROC曲線
經過如上過程就能繪制出ROC曲線。並且,如果我們不斷的遍歷所有閾值,預測的正樣本和負樣本會不斷變化,ROC曲線會越來越平滑。

找最優閾值
在上面的ROC曲線中,黃色斜線叫基線,對應的是隨機預測,閾值為0.5。因為二分類器最后輸出的,是一個0到1之間的概率數字,我們想要根據這個概率判斷用戶好壞的話,就必須定義一個閾值:>=閾值預測為1,反之預測為0。而在眾多閾值中,肯定存在一個最優閾值,使得模型性能最佳。與上面計算TPR思路一樣,我們從兩列數據出發,每一個閾值對應一列預測的y,對應一個混淆矩陣,就能計算出對應的ACC。
首先進行一個簡單的推導:
縮寫 | 含義 |
---|---|
P | 正例的個數 |
N | 負例的個數 |
A | 所有觀察的個數,A=P+N |
pos | 正例占總數的占比,pos=P/A |
neg | 負例占總數的占比,neg=N/A |
則有:
在閾值確定后,正例和負例的比值就確定了,即斜率就確定了,改變ACC大小就能得到一系列斜率相同的平行直線,區別在於截距的大小不同。而ISO精度線和ROC曲線相切時,直線的截距取得最大,因為截距大小和ACC成正比,所以此時ACC取得最大,此時對應的預測概率就是最優閾值。引入反斜線TPR=1−FPR,與直線TPR=a∗FPR+b聯立求解可得:TPR=ACC,即最大值ACC是ISO精度線與ROC曲線相切時,ISO精度線與反斜線交點對應的TPR。

綜上,ROC曲線找最優閾值的邏輯是:ISO精度線與ROC曲線相切時,ACC取得最大;ACC取得最大時,對應的就是最優閾值。所以如下圖,前面計算ROC曲線時用的數據集,在第14個樣例處ISO精度線與ROC曲線相切,取得的ACC最大值為17/20,最優閾值為0.72。

用ROC曲線評估模型
模型性能更佳,就意味着真實為1且預測為1的越多越好,真實為0且預測為1的越少越好,即TPR越大越好,且FPR越小越好。反應在圖像上就是TPR越靠上、FPR越靠左。所以,用ROC曲線評估分類模型性能遵循下面准則:
- 單個模型評估:曲線越靠近左上,模型分類性能更好,如圖1
- 多個模型評估:要分兩種情況討論
- 情況1:在ROC曲線上,模型1完全包裹模型2,則模型1性能更好,如圖2
- 情況2:在ROC曲線上,模型1不完全包裹模型2,則無法判斷,需要借助AUC面積評估,如圖3

1.2 AUC
如上所述,ROC曲線是一個定性的評估指標,並且很多時候並不能清晰的說明哪個分類器的效果更好,這時就需要引入一個可以量化的評估指標——AUC面積。ACU面積(Area Under Curve),又稱ROC曲線下的面積,它描述的是分類器C隨機抽取的一個正例的預測概率大於一個負例的預測概率的概率。簡單地說,就是做隨機抽樣時,P(P) ≥ P(N)中 ≥ 成立的概率。

如上圖紫色部分,ACU面積是指ROC曲線與下方坐標軸圍成圖形的面積,因為ROC曲線一般在斜線的上方,所以ACU面積的取值為[0.5,1],數值越大表示模型分類效果越好。同時,ACU面積和ROC曲線一樣,不受正負樣例分布的影響。其常用評估界值如下:
- 0.5 - 0.7:效果較低
- 0.7 - 0.85:效果一般
- 0.85 - 0.95:效果很好
- 0.95 - 1:效果非常好,但很可能過擬合,一般不太可能
1.3 K-S
K-S曲線的繪制
K-S曲線(Kolmogorov-Smirnov),繪圖思路與ROC曲線類似,也是從真實y和預測概率(P(Y=1))兩列數據出發,遍歷每個閾值,計算出TPR、FPR、RPP等指標,最后完成繪圖。不同的是,K-S曲線的繪圖方法並不唯一,在橫軸及縱軸的指標選取及使用上,可以有多種方式:
- 橫軸:閾值 或 RPP,其中RPP=(TP+FP)/(P+N) ,表示預測為正例的比例,其實就是排序后的序號
- 縱軸:TPR與FPR作為縱軸
所以,K-S曲線實質上是由兩條曲線構成,組合過程如下:

因為TPR與FPR是一對相互矛盾的指標,不可能同時取得最大或最小,所以中間一定存在一個臨界值,使得TPR盡可能大的同時FPR盡可能的小,即兩者差異最大。這個差異值反映在K-S曲線上就是兩條曲線的間隔,眾多差異值中最大的就叫做K-S值,K-S = MAX(TPR-FPR),它描述了模型對正負樣例的區分能力,即模型對風險的區分能力。所以,對分類模型而言K-S值越大越好,KS值范圍在[0,1],常見的評判標准如下:
- < 0.2:差
- 0.2-0.4:一般
- 0.41-0.5:不錯
- 0.51-0.6:很好
- 0.61-0.75:非常好
- > 0.75:過高,模型很可能異常
需要特別說明的是,K-S曲線的畫法並不唯一:有的資料橫軸用閾值代替RPP,有的資料縱軸是用FPR-TPR,但都不影響最后結果,因為我們重點關注的是「TPR與FPR間的最大差異」 。
K-S值的計算
以評分卡為例,K-S的計算步驟如下:
-
計算每個評分區間的好壞賬戶數
-
計算每個評分區間的累計好賬戶數占總好賬戶數比率、累計壞賬戶數占總壞賬戶數比率
-
計算每個評分區間累計壞賬戶占比 與 累計好賬戶占比差的絕對值,然后對這些絕對值取最大值即得此評分卡的K-S值。

由上表可知,在風險評分 572 至 594 分的區間內好與壞累積分布之間的距離最大,評分為594分以下的所有賬戶中,累計壞賬戶占總壞賬戶比例為70.75%,累計好賬戶占總好賬戶的比例為25.13%。K-S指標為45.62%。

找最優閾值
由於K-S曲線能找出模型中差異最大的一個分段,因此可用於找最優閾值(cut_off),方法也很簡單:取得K-S值時橫軸對應的閾值就是最優閾值,若橫軸是RPP,則最優閾值就是此RPP對應的閾值。
最后,可能大家會疑惑,已經有了AUC面積,為什么還要引入K-S指標呢?這就要明確兩者的區別:
- AUC面積:在樣本不均衡的情況下也能准確評估模型的好壞,看的是總體的分類效果
- K-S值:是通過找好壞客戶累計分布的最大差異,評估模型對好壞客戶的區分能力,看的是某個特定的分段
所以,一般情況下用AUC面積即可;如果業務更關注負樣本,就會涉及到正負樣例的區分度,用K-S值更好。但K-S值不能反映出所有分段的區分效果,評估時K-S值需要結合AUC面積、在哪個分段取得K-S值,三者結合才能更全面地評估模型。因為同樣的K-S值,有的模型在高分段區分效果好,有的模型在低分段區分效果好,就會給模型應用帶來差異,但通常而言,銀行更關注的是壞客戶(低分段客戶)。
1.4 GINI
首先區分 基尼系數 與 基尼不純度 兩個概念,因為很多資料都把兩者弄混了,而之后介紹的GINI是指基尼系數。
- 基尼系數:Gini Coefficient,最早用來衡量收入分配差異,后來也用作分類模型性能評估
- 基尼不純度:Gini Impurity,也被稱為基尼指數(Gini Index),用來構造決策樹中的CART分類樹
社會學中的GINI系數
20世紀初意大利經濟學家基尼(Gini),根據洛倫茲曲線(即累計頻數分布曲線)找出了判斷分配平等程度的指標,它就是GINI系數,詳見下圖。

圖形 | 含義 |
---|---|
橫軸 | 人口百分比累計(按收入從低到高進行人口累計) |
縱軸 | 收入百分比累計(指部分人口的收入占社會總收入比例) |
綠色斜線 | 收入分配絕對平等線 |
紅色曲線 | 實際收入分配曲線(洛倫茲曲線,Lorenz Curve) |
基尼系數 | GINI = A / A+B,表示不平等程度,也稱洛倫茲系數 |
由上圖可知,若A=0,則GINI=0,表示收入和分配完全平等;若B=0,則GINI=1,表示收入和分配絕對不平等,因此GINI系數的取值是在[0,1]。
機器學習中的GINI系數
把上面的分析思路遷移到金融風控領域,就可以用GINI系數評估分類模型對好壞客戶的區分能力,尤其是在評分卡模型的評估中(A卡:申請評分卡;B卡:行為評分卡)。與K-S曲線的繪制類似,GINI曲線圖的畫法也不唯一,但也不會影響計算和最后結果,總的來說分為兩種情況:
-
樣本中壞樣本極少時:FP和FN很少,可以忽略不計,則RPP≈FPR,反映在圖像上,就是圖1變換到圖3,此時洛倫茲曲線與ROC曲線近似重合,GINI系數的計算可以用GINI=2AUC - 1 或 GINI = A / A+B,推導如下。若把圖3中的橫軸坐標對調就得到圖4,因此圖3與圖4都是正確的GINI系數曲線圖。
RPP:Rate of positive predictions,所有預測中預測為正例的比例,反映在數據中就是序號,因為在構造洛倫茲曲線時,是先對樣本安裝風險評分升序過的 因為,FP和FN很少,可以忽略不計,則: RPP = (TP+FP)/(TP+FP+TN+FN) = FP/(FP+TN) = FPR GINI = A/(A + B) = (AUC - C)/(A + B) = (AUC -0.5)/0.5 = 2*AUC - 1 綜上,GINI = 2AUC - 1
-
當壞樣本較多,或好壞樣本接近1:1時:用GINI系數的定義計算GINI: GINI = A / A+B。此時圖1與圖2都是正確的GINI系數曲線圖(圖2是由圖1坐標軸對調而得)

GINI系數的計算
先基於評分對客戶進行升序排列,然后以累計壞賬戶占比作為橫軸,累計好賬戶占比作為縱軸,就能得到如下GINI曲線圖,實質就是上面的圖4。

然后,就可以對GINI系數進行計算,步驟如下:
-
計算每個評分區間的好壞賬戶數
-
計算每個評分區間的累計好賬戶數占總好賬戶數比率和累計壞賬戶數占總壞賬戶數比率
-
按照累計好賬戶占比和累計壞賬戶占比得出上圖所示曲線ADC
-
計算出圖中陰影部分面積,陰影面積占直角三角形ABC面積的百分比,即為GINI系數
具體計算如下表:

需要特別指出的是,GINI系數定義中的公式:GINI = A / A+B,雖然是一個極為簡明的數學表達式,但它並不具有實際的可操作性,因此在計算GINI系數時都是采用近似估算的思路,這就衍生出好幾種方法來計算GINI系數。如下面的公式,其中cp表示累計,X、Y分別表示好客戶、壞客戶,所以上圖中數據GINI = 1-SUM(I*F)=59.07%

GINI系數的評估標准
根據一般經驗,GINI系數評判標准如下:
- 申請評分卡
- < 30% : 差
- 30%-40% : 一般
- 41%-50% : 好
- 51%-60% : 非常好
- > 60% : 越高越有過擬的可能
- 行為評分卡
- Gini可能會超過80%
- Gini<60%,可能模型有問題
雖然Gini指標與K-S一樣也是金融評分模型界通用的核心指標,但是它的使用也是有一些需要注意的地方:
-
評估評分卡的區分能力時,如果壞客戶的定義不是那么嚴格,Gini系數對應代表的區分能力可能被誇大效果
-
Gini對目標變量類別的定義比較敏感,比如賬戶的好壞
所以要想Gini指標精確有效,那么目標變量Y的定義在評分卡開發初期是十分重要和嚴謹的步驟。
1.5 小結
最后,對上述介紹的混淆矩陣衍生評估指標,做一個簡單的總結: