分類算法評價準則

1 分類算法評價準則

分類評價準則有Recall, Precision, ROC,AUC, Lift 曲線,KS曲線等。

1.1 基礎指標

爲了描繪的簡單,在此給出一個實例:
Table 3.1 樣例圖

index Score true label Predict label index Score true label Predict label
1 0.9 T T 11 0.4 T N
2 0.8 T T 12 0.39 N N
3 0.7 N T 13 0.38 T N
4 0.6 T T 14 0.37 N N
5 0.55 T T 15 0.36 N N
6 0.54 T T 16 0.35 N N
7 0.53 N T 17 0.34 T N
8 0.52 N T 18 0.33 N N
9 0.51 T T 19 0.3 T N
10 0.505 N T 20 0.1 N N

假設有一個樣本總數爲20的數據集,實際樣例中,正例和負例的比例爲1:1
爲了簡便說明,在這裏,以2分類爲例。

1.1.1 混淆矩陣

在2分類問題中,預測值跟實際值有4種組合情況:

預測
1 0
實際 1 TP FN(僞陰性) Sensitivity=TP/(TP+FN)
0 FP(僞陽性) TN Specificity=TN/(FP+TN)
合計 Precision=TP/(TP+FP) (Positive predictive value, PPV) NPV =TN/(FN+TN) (Negative predictive value, NPV)

說明:
TP: 實際爲正,預測也爲正
FN(僞陰性):預測爲負例,實際爲正例
FP(僞陽性):預測爲正例,實際爲反例
TN: 實際爲反例,預測爲反例

1.1.2 基本公式

  • True Positive Rate (TPR真正率): 正樣本中被預測對比例,也稱之爲敏感度(Sensitivity)
    TPR=TPTP+FNTPR =\frac{TP}{TP+FN}
  • False Negative Rate(FNR假負率):正樣本被預測錯的比例
    FNR=FNTN+FNFNR =\frac{FN}{TN+FN}
  • False Positive Rate(FPR假正率):負樣本被預測錯的比例
  • FPR=FPTN+FPFPR =\frac{FP}{TN+FP}
  • True Negative Rate(TNR真負率):負樣本被預測對的比例,也稱之爲特異度(Specificity)
    TNR=TNTN+FPTNR =\frac{TN}{TN+FP}
  • Positive predictive value(PPV)
    PPV=TPTP+FPPPV =\frac{TP}{TP+FP}
  • Negative predictive value (NPV)
    NPV=TNTN+FNNPV =\frac{TN}{TN+FN}
  • Accuracy(準確率):就是精度
    Accuracy=TP+TNTP+FP+TN+FNAccuracy =\frac{TP+TN}{TP+FP+TN+FN}
  • Average per-class accuracy(平均準確率):每個類別下的準確率的算術平均

averageaccuracy=TPTP+FN+TNTN+FP2average_accuracy =\frac{\frac{TP}{TP+FN}+\frac{TN}{TN+FP}}{2}

  • Balanced Error Rate (BER)
    BER=FNTP+FN+FPTN+FP2BER =\frac{\frac{FN}{TP+FN}+\frac{FP}{TN+FP}}{2}

1.1.3 Recall & TPR & Precision

(1) Recall Recall,召回率,也稱之爲查全率

Recall=TPTP+FN(Sensitivity)Recall = \frac{TP}{TP+FN}(也叫Sensitivity)
TPR=TPTP+FNTPR =\frac{TP}{TP+FN}
從形式上看,Recall和TPR的公式是一樣的。二者描繪的都是,預測爲正例並且實際爲正例的樣本數/實際爲正例的樣本數(所有的正例中,有多少實際爲正例的樣本被挑中)。從定義上看,只要預測到了儘可能多的正例,Recall就會越大,那麼所需要查找的正例也就越完全,也就是所謂的查全率。
觀察Table 3.1 樣例圖,其中:

TP=6 FN=4
FP=4 TN=6
$$Recall =\frac{TP}{TP+FN}=\frac{6}{6+4}$$

那麼僅觀察Recall這一個指標會不會有什麼問題呢?
通過公式,我們可以看出,Recall的分母是一個定值,只和原始數據的真實label有關,爲了使Recall越大,只需要使得分子越大,那麼把所有的負例預測成正例這事就解決了,從直觀上感覺,這事兒,好像不太對。例如:給癌症分類時,把所有未患癌症的健康人,診斷爲癌症,這會引起患者嚴重的心理和生理不適。
所以引進了準確率這個概念

(2) Precision

Precision精確率,也叫查準率,衡量的是,選中的正例中,真正正例的佔比。通俗的來講,就是預測爲正的樣例中,真正爲正的樣例佔得比例,公式爲:
Precision=TP(TP+FP) Precision = \frac {TP} { (TP + FP)}
依據Table 3.1 樣例圖,有
KaTeX parse error: Expected '}', got 'EOF' at end of input: …+FP\frac{6}{10}

(3) P-R曲線

P-R曲線,是以Recall 爲橫軸,Precision爲縱軸繪製的曲線。它直觀的顯示了學習器在樣本總體上的查全率和查準率。在進行比較時,若一個學習器的P-R圖,能被另一個P-R圖包住,則斷言,後者優於前者。

在這裏插入圖片描述

如圖,學習器A優於B,而A和B的性能難以度量,只能在具體的查全率或者查準率上進行度量,爲了綜合評價查全率和查準率的關係,人們設計出了平衡點(Break-Even Point, BEP), BEP即是y=x與P-R曲線相交的點(“查準率=查全率”的數值),但BEP還是過於簡單了一些,於是便有了F1度量。
(4) F1度量
F1是基於查全率和查準率的一個調和平均數: 1F1=1P+1R\frac{1}{F1}=\frac{1}{P}+\frac{1}{R}
F1=2PRP+RF1=\frac{2*P*R}{P+R}

在實際項目中,由於對查準率和查全率側重不同,如在地震預測中,本着寧可錯殺一千,也不可放過一個的原則,更加註重查全率,爲了能讓F1公示表達出對P和R的不同偏好,引進 值,定義如下:
Fb=(1+b2)PRb2P+RF_b=\frac{(1+b^2)*P*R}{b^2*P+R}

b=1b=1,退化爲標準的F1, 當b>1b>1 對查全率的影響更大, 對查準率影響更大

1.1.4 ROC 曲線

根據預測概率(得分)由大到小排序作爲閾值,可分割爲不多於樣本個數n個閾值。將這n個Recall和FPR把這些點連成線即爲ROC曲線。
TPR=TPTP+FN(Sensitivity)TPR =\frac{TP}{TP+FN} (也叫Sensitivity)
FPR=FPFP+F=TN(1Specificity)FPR =\frac{FP}{FP+F=TN} (也叫1-Specificity)

(1-Specificity)
其中 橫軸爲FPR, 縱軸爲TPR
在這裏插入圖片描述

觀察Table 3.1 樣例圖,對概率值依次進行descending排序。假設以score(index=1)=0.9爲閾值,大於0.9爲正樣本,小於0.9爲負樣本,按照概率值劃分,可得 FPR 和TPR,依次類推,當以score (index=2)=0.8時,也可計算FPR 和TPR,如此不斷的進行計算,可得如下表:
Table 2 TPR-FPR 表

index Score FPR TPR index Score FPR TPR
1 0.9 0 0.1 11 0.4 0.4 0.7
2 0.8 0 0.2 12 0.39 0.5 0.7
3 0.7 0.1 0.2 13 0.38 0.5 0.8
4 0.6 0.1 0.3 14 0.37 0.6 0.8
5 0.55 0.1 0.4 15 0.36 0.7 0.8
6 0.54 0.1 0.5 16 0.35 0.8 0.8
7 0.53 0.2 0.5 17 0.34 0.8 0.9
8 0.52 0.3 0.5 18 0.33 0.9 0.9
9 0.51 0.3 0.6 19 0.3 0.9 1
10 0.505 0.4 0.6 20 0.1 1 1

將表中數據繪製成圖,以FPR爲橫軸,以TPR爲縱軸,則:

在這裏插入圖片描述
ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線能夠保持不變。

(1) AUC

AUC(Area under Curve):ROC曲線下的面積,介於0.1和1之間。AUC作爲數值可以直觀的評價分類器的好壞,值越大越好。AUC = 1 ,完美分類,對應於ROC可以完全做到(1,1)的點。0.5<AUC<1,優於隨機猜測。

AUC的物理意義是任取一個正例和任取一個負例,正例排序在負例之前的概率(AUC值越大,當前分類算法越有可能將正樣本排在負樣本前面,從而能夠更好地分類)。AUC反應的是分類器對樣本的排序能力。
注意: AUC對樣本類別是否均衡並不敏感,這也是不均衡樣本通常用AUC評價分類器性能的一個原因。
參考鏈接
[1] https://blog.csdn.net/chocolate_chuqi/article/details/81162244
[2] https://www.cnblogs.com/dlml/p/4403482.html
[3] https://www.cnblogs.com/futurehau/p/6109772.html

1.1.5 KS曲線

KS(Kolmogorov-Smirnov, KS)值越大,表示模型能夠將正、負客戶區分開的程度越大。KS值的取值範圍是[0,1]
KS指標衡量的是好壞樣本累計分部之間的差值。好壞樣本累計差異越大,KS指標越大,那麼模型的風險區分能力越強。
在這裏插入圖片描述

KS是根據預測概率(由大到小排序)作爲閾值,橫軸爲0到1的閾值,縱軸分別繪製兩條曲線,一條是TPR,另一條是FPR,然後在兩條曲線分隔最開的地方,橫軸對應的就是最好的閾值(KS值)。如上圖對應最好的KS值是0.42。
KS的計算步驟如下:
i. 按照分類模型返回的概率降序排列 ,也可以直接是數據,根據某一閾值判斷爲1或0即可
ii. 把0-1之間等分N份,等分點爲閾值,計算TPR、FPR (可以將每一個都作爲閾值)
iii. 對TPR、FPR描點畫圖即可 (以10%*k(k=1,2,3,…,9)爲橫座標,分別以TPR和FPR的值爲縱座標,就可以畫出兩個曲線,這就是KS曲線。)
iv. KS值即爲Max(TPR-FPR)
參考鏈接
[1] https://blog.csdn.net/sinat_30316741/article/details/80018932
[2]https://blog.csdn.net/u013421629/article/details/78217498
[3] AUC的計算方法可參考周志華的西瓜書,或者鏈接:https://blog.csdn.net/u011331731/article/details/72834115

1.1.6 Lorenz 曲線

lorenz曲線的橫軸對應的是正例集百分比(score值降序排序,對應的樣本比例),也就是:將樣本的預測爲1的概率從大到小排序後,取前百分之幾。通常會簡化成十分位點,0%, 10%,20%, …, 90%, 100%。而曲線的縱軸其實就是相對應的TPR
TPR=TPTP+FNTPR=\frac{TP}{TP+FN}
在這裏插入圖片描述
TPR=TPTP+FN=1320=65%TPR=\frac{TP}{TP+FN}=\frac{13}{20}=65\%

形象地說,就是我們面對着一羣人(1000個),其中有20是壞人,我們的目標就是抓壞人。通過模型計算,我們把這堆人按照可能是壞人的概率從大到小地排序,假設取某個閾值,按照閾值劃分,大於閾值的爲壞人,小於閾值的爲好人,然後按照該閾值取出壞人數(100人),假設這100人中,實際只有13個壞人(因爲這100人的是壞人的概率比較高),也就是說我們只抓取10%的樣本,但是抓到了65%的目標。

從lift的角度也可以很好地理解這種提升效果,而lorenz則更形象地展示了這種投入產出比的含義。
倫茲曲線的本意是描述社會財富的不平均分配。百度的解釋:洛倫茲曲線(Lorenz curve),就是在一個總體(國家、地區)內,以最貧窮的人口計算起一直到最富有人口的人口百分比對應各個人口百分比的收入百分比的點組成的曲線(需要逆序排序。)
換一種更通俗的說法,這就是20/80原則——20%的人佔據了80%的財富。lorenze曲線體現了這一點,通常是很早(20%)就達到比較高的水平(80%),然後再緩慢上升。當然,爲了社會穩定,我們並不希望財富分佈在少數人手裏,但從精準營銷的角度看,我們希望在儘可能圈出少的人,而這些人反饋率還儘可能高。
注意:如果社會財富是平均分配的,那麼lorenz曲線將會是一條對角線。(這條對角線跟ROC裏面一樣,是我們的對照組。)與之類似地,當沒有模型的時候,壞人在人羣中是平均分佈的,這時的lorenz曲線也是一條對角線(也就是我們隨機抓50%的人,這裏面會抓到壞人的50%)。因此,lorenz曲線本質上是衡量了我們的模型對概率大小的排序的準確性——排序越準確,lorenz曲線就越遠離對角線並凸向左上角(模型的效果也越好)。

參考鏈接
[1] https://blog.csdn.net/mousever/article/details/46944547

1.1.7 Gain曲線(Cumulative Gains Curve)

累計增益圖全稱是Cumulative Gains Curve,簡稱Gains圖,它是描述整體精準率的指標。Gains公式爲:
Gains=TPTP+FNGains=\frac{TP}{TP+FN}
按照模型預測出的概率(score)從高到低排列,將每一個score區間的TP值計算出來,並與原始數據中所有正例的數據進行對比,得到其百分比,就是累計增益值。該曲線衡量的是模型按照score值劃分,圈出一定比例的數據,該模型預測正例的個數(實際也爲正例)佔總正例數的比例。
依據table 1中數據,可計算得:

index score true label gains index true label score gains
1 0.9 T 0.1=1/10 11 T 0.4 0.7
2 0.8 T 0.2=2/10 12 N 0.39 0.7
3 0.7 N 0.2=2/10 13 T 0.38 0.8
4 0.6 T 0.3=3/10 14 N 0.37 0.8
5 0.55 T 0.4=4/10 15 N 0.36 0.8
6 0.54 T 0.5=5/10 16 N 0.35 0.8
7 0.53 N 0.5 17 T 0.34 0.9
8 0.52 N 0.5 18 N 0.33 0.9
9 0.51 T 0.6 19 T 0.3 1
10 0.505 N 0.6 20 N 0.1 1

按照上表,繪製出的累計增益曲線爲:
在這裏插入圖片描述

(1) 何爲累計增益

該曲線名爲累計增益,那麼累計增益從何而來呢?我們知道,當score得分越低,圈出的正例佔總樣本數的比例越高,那麼隨着score得分的越來越低,後面的樣本其實就是疊加之前score比較高的TP值,此爲累積;
但還可從另一種角度解釋:
我們以直接營銷示例:
假設直接業務目標爲:預測目標樣本中每個客戶的響應概率
使用擬合模型,我們可以比較歷史營銷活動中觀察到的結果,即響應者和未響應者,以及針對該活動中聯繫的每個客戶的預測響應概率。(請注意,在實踐中,我們會將模型擬合到我們的數據子集中,並使用此模型來預測“保留”樣本中每個客戶的響應概率,以便更準確地評估模型的模型爲新客戶表演。)
我們首先按照預測的概率對客戶進行排序,從最高(最接近一)到最低(最接近零)的順序遞減。將客戶拆分爲同等大小的細分市場,我們創建包含相同數量客戶的組,例如,10個十分位組,每個組包含10%的客戶羣。因此,我們預測的最有可能響應的客戶是十分位數組1,其次是十分位數第二組,依此類推。檢查每個十進制組,我們可以生成十進制摘要,如表1所示,總結每個十分位數中客戶和響應者的數量和比例。
注意:在實際中,數據可能沒有這麼
歷史數據可能顯示整體,因此當隨機郵寄客戶羣時,大約5%的客戶響應(10,000個客戶中的506個)。因此,如果您郵寄1,000個客戶,您希望看到大約50個響應者。但是,如果我們看一下表1中每個十分位組的響應率,我們看到頂級組的響應率高於此,它們是我們最好的前景。

Decile Group 預測的概率範圍 客戶數量 累計客戶數量 客戶累計百分比 迴應-ERS 反應速度 響應者的累計數量 響應者的累積百分比 Lift
1 0.129-1.000 1000 1000 10.0% 143 14.3% 143 28.3% 2.83
2 0.105-0.129 1000 2000 20.0% 118 11.8% 261 51.6% 2.58
3 0.073-0.105 1000 3000 30.0% 96 9.6% 357 70.6% 2.35
4 0.040-0.073 1000 4000 40.0% 51 5.1% 408 80.6% 2.02
5 0.025-0.040 1000 5000 50.0% 32 3.2% 440 87.0% 1.74
6 0.018-0.025 1000 6000 60.0% 19 1.9% 459 90.7% 1.51
7 0.015-0.018 1000 7000 70.0% 17 1.7% 476 94.1% 1.34
8 0.012-0.015 1000 8000 80.0% 14 1.4% 490 96.8% 1.21
9 0.006-0.012 1000 9000 90.0% 11 1.1% 501 99.0% 1.10
10 0.000-0.006 1000 10000 100.0% 15 0.5% 506 100.0% 1.00

表 十進制摘要
我們發現在十等分組1中,響應率爲14.3%(1,000個客戶中有143個響應者),而總體響應率爲5.1%。我們還可以在瀑布圖中可視化十分位彙總的結果,如圖所示。這說明十分位組1, 2和3中的所有客戶使用預測模型具有更高的響應率。
在這裏插入圖片描述

累積收益圖表比較達到的響應者的累積百分比(縱軸)與聯繫的客戶的累積百分比(橫軸)。
表中的數據如何計算呢,以Decile Group1, Decile Group2爲例:
Decile Group 1
響應者的累積百分比28.3% =143/506
Lift2.83=143/1000(506/10000) Lift 2.83=\frac{143/1000}{(506/10000)}
Decile Group2
響應者的累積百分比51.6% =261/506
Lift2.58=261/2000(506/10000)Lift 2.58=\frac{261/2000}{(506/10000)}
在這裏插入圖片描述

上圖描述的是分別對應類別1和類別2的累計增益值,對角線是基線。您可以使用累積增益圖表通過選擇與所需增益相對應的百分比來幫助選擇分類截止值,然後將該百分比映射到適當的截止值。
參考鏈接:
[1] https://www.jianshu.com/p/4e6f37ea540d
[2]https://www.ibm.com/support/knowledgecenter/en/SSLVMB_23.0.0/spss/tutorials/mlp_bankloan_outputtype_02.html
[3]https://select-statistics.co.uk/blog/cumulative-gains-and-lift-curves-measuring-the-performance-of-a-marketing-campaign/

1.1.8 Lift 曲線

對應的中文名爲:提升度。Lift曲線對應的公式爲:
Lift=TPTP+FPTP+FNTP+FP+TN+FNLift=\frac{\frac{TP}{TP+FP}}{\frac{TP+FN}{TP+FP+TN+FN}}

極端情況:當 FN=0,TN=0FN=0, TN=0時,即所有負例預測爲正例, Lift=1
TP=0FP=0TP=0,FP=0時,即所有正例預測爲負例,Lift=0
FPFN=TPTNFP*FN=TP*TN時,Lift=1
從公式中,我們可看出,分子對應Precision,分母對應,原始數據中正樣本佔總樣本的比例。Lift衡量的是,與不利用模型相比,模型的預測能力“變好”了多少,Lift(提升指數)越大,模型的運行效果越好。不利用模型時,我們只能利用“正例的比例是(TP+FN)/(TP+FP+FN+TN)”這個樣本信息來估計正例的比例(baseline model),而利用模型之後,我們不需要從整個樣本中來挑選正例,只需要從我們預測爲正例的那個樣本的子集TP+FP中挑選正例,這時預測的準確率爲TP/(TP+FP)。
爲了更好的解釋Lift曲線,我們利用Table 3.1 樣例圖數據計算分子分母,如:

index score true label (TP+FN)(TP+FP+TN+FN)\frac{(TP+FN)}{(TP+FP+TN+FN)} precision LIFT index true label (TP+FN)(TP+FP+TN+FN)\frac{(TP+FN)}{(TP+FP+TN+FN)} score precision LIFT
1 0.9 T 0.5 1 2 11 T 0.5 0.4 0.636363636 1.2727
2 0.8 T 0.5 1 2 12 N 0.5 0.39 0.583333333 1.1667
3 0.7 N 0.5 0.66667 1.333333 13 T 0.5 0.38 0.615384615 1.2308
4 0.6 T 0.5 0.75 1.5 14 N 0.5 0.37 0.571428571 1.1429
5 0.55 T 0.5 0.8 1.6 15 N 0.5 0.36 0.533333333 1.0667
6 0.54 T 0.5 0.83333 1.666667 16 N 0.5 0.35 0.4375 0.875
7 0.53 N 0.5 0.71429 1.428571 17 T 0.5 0.34 0.529411765 1.0588
8 0.52 N 0.5 0.625 1.25 18 N 0.5 0.33 0.5 1
9 0.51 T 0.5 0.66667 1.333333 19 T 0.5 0.3 0.526315789 1.0526
10 0.51 N 0.5 0.6 1.2 20 N 0.5 0.1 0.5 1

依據上述數據繪製Lift圖,有:
在這裏插入圖片描述

該圖縱軸軸對應的是Lift值,橫軸對應的是正例集百分比(score值降序排序,對應的樣本比例)。隨着閾值(score)的減小,更多的客戶就會被歸爲正例,也就是預測成正例的比例變大。當閾值設得夠大,只有一小部分觀測值會歸爲正例。

(1) Lift業務解讀

當不採用模型的時候,原始數據的正例佔總數據的比例爲0.5,當採用模型,並且按照score=0.54劃分時,precision=0.83333,此時的Lift值爲1.666667,客戶的響應率提升至原先的1.67倍,提高了投入產出比。也就是說,我們只需圈出原始數據的30%,就能得到83.333%的準確率。當採用模型後,再也不用從整個數據集中挑選正例,只需要從圈出的數據中去挑選正例就行。

該圖爲catboost跑出來的Lift 圖。

參考鏈接
[1] https://www.jianshu.com/p/6ffa3df3ec86
[2] https://blog.csdn.net/shy19890510/article/details/79501582

1.2 指標綜合對比

指標綜合對比
1)從繪圖上看,Lorenz曲線只繪製了TPR一個指標,而KS曲線繪製TPR和FPR兩個指標的同時,還給出了KS值,所以二者選其一就好(KS曲線會更豐富,視具體業務情況而定)。
2) 以上介紹中,除了P-R曲線,ROC曲線,其他曲線,KS曲線,Lift曲線,Lorenz曲線Gains曲線,KS曲線的橫軸都一值,都是按照score排序後,樣本的佔比;
3)Gains曲線,KS曲線(TPR),Lorenz曲線的縱軸都是TPR;
Lift曲線,Gains曲線,ROC曲線,KS曲線等指標的對比圖如下:
在這裏插入圖片描述

參考鏈接
[1] https://blog.csdn.net/Orange_Spotty_Cat/article/details/82425113

Writed by Eshter YUU
Email: [email protected]
Date: 2018/12/27

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