機器學習基礎 | 分類模型評估指標


在處理機器學習的分類問題中,我們需要評估分類結果的好壞以選擇或者優化模型,本文總結二分類任務中常用的評估指標。對於多分類任務的評估指標,可以參考這篇文章

先從我們最熟知的混淆矩陣(confusion matrix)說起。

source

鑒於混淆矩陣看着比較抽象,可以參考下圖

常用的評估指標可以分為3類:

  • 成對指標,包括正確率(精度)&錯誤率,Precision&Reall,TPR(Sentitivity)&TNR(Specificity)等;
  • 綜合指標,包括F-Score,MCC,BCR等;
  • 圖形指標,包括ROC以及延伸得到的Gini、AUC、Lift\Gain曲線、代價曲線等;

成對指標

錯誤率和正確率

錯誤率定義為分類錯誤的樣本數占樣本總數的比例

\[Err = \frac{FP+FN}{N_{sample}} \]

正確率(精度) 定義為分類正確的樣本數占總數的比例

\[Acc = 1-Err = \frac{TP+TN}{N_{sample}} \]

注意:\(N_{sample}\)表示樣本總數(即confusion matrix中TP, FP, TN, FN之和)。

Precision、Recall

Precision(准確率、查准率) ,即判斷為正例的樣本中有多大比例是真的正例。

\[P=\frac{TP}{TP+FP} \]

Recall(召回率、查全率) ,即正例樣本中有多大比例的正例被發現(判定為正例),該指標也稱為True Positive Rate(TPR)、Sensitivity.

\[R = \frac{TP}{TP+FN} \]

考慮到FP和FN的關系是I類錯誤和II類錯誤的關系,會此消彼長,故Precision和Recall也有這種關系。對比多個模型的表現時,可以用P-R圖(橫軸為Recall,縱軸為Precision).

截圖來自《機器學習》周志華,更多信息可以參考本書2.3節1.3

TPR(Sensitivity)、TNR(Specificity)

TPR(True Positive Rate) ,正例樣本中被正確判定為正例的樣本數比例,該指標也稱為Sensitivity(敏感度)

\[TPR = sensitivity = \frac{TP}{TP+FN} \]

TNR(True False Rate) ,指負例樣本中被正確判定為負例的樣本數比例,該指標也稱為Specificity(特異度)

\[TNR = specificity = \frac{TN}{TN+FP} \]

綜合指標

F-Score

假設我們要判斷人群中的好人(正例)和壞人(負例),如果我們的關注點是“不能冤枉好人”,那么就要盡可能把好人識別出來(判斷為好人的標准趨於寬松,壞人也可能被識別為好人),此時的Precision會趨於更小,Recall會趨於更大;當我們關注的是“不能放過壞人”(比如風控業務中,“壞”客戶造成的業務損失很大),此時判斷好人的標准更加嚴格,更多的“真”好人會被納入“嫌疑對象”(判定為負例),此時的Precision會趨於更大,但是Recall會降低;如果我們“盡可能既不能冤枉好人,又不能放過壞人”,那么就需要在Precision和Recall中取得平衡,此時可以看F1-Score上的表現(不過對於正負例樣本不均衡的情況下,F1-Score表現並不好)。

F1-Score 是Precision和Recall的調和平均值,即

\[\frac{1}{F_1}=\frac{1}{2}(\frac{1}{P}+\frac{1}{R}) \]

由此可推導得到

\[\begin{aligned} F_1 & = \frac{2 \cdot P \cdot R}{P+R} \\ & = \frac{2TP}{2TP+FN+FP} \end{aligned} \]

更一般地,某些場景下關注Precision和Recall的權重不同!

\[\frac{1}{F_{\beta}}=\frac{1}{1+\beta^2}(\frac{1}{P}+\frac{\beta^2}{R}) \]

\(\beta>1\)時,Recall的權重更大,\(\beta<1\)時Precision的權重更大。

Matthews Correlaton Coefficient

簡稱MCC(馬修斯相關系數,Brian W. Matthews, 1975),
更多參考

\[MCC = \frac{TP \times TN-FP \times FN}{\sqrt{(TP+FP)(TP+FN)(TN+FN)(TN+FP)}} \]

從公式中可以看出MCC和2*2列聯表的卡方檢驗很相近。MCC的值域為[-1,1].

MCC的好處是:

  • 正例和負例的不同划分對於最終結果沒有影響
    • ① TP = 0, FP = 0; TN = 5, FN = 95.
    • ② TP = 95, FP = 5; TN = 0, FN = 0.
    • 這兩種條件下(正例和負例的划分不一樣)得到的F1-Score差異非常大(①中為0,②中為0.97),從這里還可以看出F1-Score在正負例樣本比例差異不一致的情況下會高估模型的分類效果。
  • 綜合考慮了正負例樣本比例不一致的情況
    • TP = 90, FP = 4; TN = 1, FN = 5.
    • 這種條件下得到的分類正確率(Acc)為0.91,F1-Score為0.95,MCC得到的值為0.135. 例如風控業務中“壞”用戶占整體用戶的比例很小,如果看正確率或者F1-Score那就入坑了,此時MCC可能更合適。

Balanced Classification Rate

簡稱BCR,BCR為正例樣本和負例樣本中各自預測正確率的均值。

\[BCR=\frac{1}{2}(TPR+TNR) \]

與BCR對應的是BER(Balanced Error Rate),也稱之為Half Total Error Rate(HTER).

\[BER = 1-BCR \]

同MCC一樣,正負例的標簽選擇對BCR的計算沒有影響,而且一定程度上也能克服正負例樣本不均衡導致的評估指標虛高。

圖形指標

ROC、AUC

在分類模型中對樣本歸屬類別的判斷通常不是直接得到0或者1,而是一個連續的值區間(比如Logistic回歸得到的預測值落在概率區間[0,1]),然后通過划定閾值來判斷正例或者負例(比如概率\(p=0.5\)判定為正例)。

如果要看分類模型在不同決策閾值下的表現如何,則可以借助ROC曲線(Receiver Operating Characteristic Curve,受試者操作特征曲線)

ROC曲線中:

  • 橫軸(x軸)是False Positive Rate(FPR),就是負例樣本中被錯誤判定為正例的樣本比例,\(FPR=1-TNR=\frac{FP}{TN+FP}=\frac{FP}{N}\)
  • 縱軸(y軸)是True Positive Rate(TPR,等價於Sensitivity),即正例樣本中被正確判定為正例的樣本數比例,\(TPR=\frac{TP}{TP+FN}=\frac{TP}{P}\).

注:上面公式中的N、P是指負例樣本和正例樣本各自的樣本數量

將樣本按預測為正例的概率從高到低進行排序后,依次計算每個概率值作為判定閾值對應的TPR和FPR,再將排序后的每個數據點的TPR和FDR值描點到坐標系中,就得到ROC曲線。如下圖示,我們可以看到,將決策閾值往正例方向移動時,對應的TPR和FDR都會下降(FDR和TPR是正相關的關系,所以作ROC曲線圖將樣本按TPR從小到大排序時,FDR也是從小到大的順序)。

注:ROC曲線圖中左下角到右上角的虛線表示“隨機操作”下的值(作為參考線)

ROC中決策閾值變化的動態展示如下:

source

ROC曲線中曲線相對於隨機線的最高點,表示正例和負例分布的分離程度(一般來說分離程度越大,ROC曲線的“小山包”隆起越明顯),“小山包”的面積(ROC曲線和隨機線圍住的面積)就是Gini指數,如下圖所示:

source

如果模型A的ROC曲線完全包裹模型B的ROC曲線,則表明模型A是優於模型B的;兩個模型的ROC曲線發生交叉時,則可以通過ROC曲線下的面積(Area under the ROC curve,簡稱AUC)來進行比較,AUC取值范圍為[0,1].

更多關於ROC曲線的資料:

代價曲線(Cost Curve)


來源:Cost curves: An improved method for visualizing classifier performance

前面提到的指標都有一個前提,那就是正例或者負例預測錯誤的代價是一樣的(FP,FN)。定義實際為正例預測為負例的損失為\(C(-|+)\),實際為負例預測為正例的損失為\(C(+|-)\).

代價曲線(Cost Curve)中:

  • 橫軸是正例概率代價(Probability Cost(+),簡記為\(PC(+)\),其值域為[0,1]),與之對應的是是負例概率代價\(PC(-)=1-PC(+)\),設\(p(+)\)為樣本為正例的概率,樣本為負例的概率為\(p(-)=1-p(+)\),

\[PC(+) = \frac{p(+)*C(-|+)}{p(+)*C(-|+)+p(-)*C(+|-)} \]

  • 縱軸是歸一化代價(Normalized Expected Cost)

\[\begin{aligned} C_{norm} & = \frac{FNR*p(+)*C(-|+)+FPR*p(-)*C(+|-)}{p(+)*C(-|+)+p(-)*C(+|-)} \\ & = FNR*PC(+)+FPR*PC(-)\\ & = PC(+)*(FNR-FPR)+FPR \end{aligned} \]

繪制代價曲線時,ROC曲線上每個點的坐標(TPR,FPR)映射到代價曲線上就是一條左起於(0,FPR)到右側(1,1-TPR)的線段,所有線段繪制好后包裹而成的“小山丘”的面積就是期望的總體代價。

來源:《機器學習》周志華
更多參考:Cost curves: An improved method for visualizing classifier performance, Chris Drummond & Robert C. Holte, 20063.

Gain/Lift Chart

提升圖(Lift Chart,也稱為Lift Curve)和收益圖(Gain Chart)是從ROC曲線衍生出來的。

截圖來自Data Mining and Statistics for Decision Making , Stéphane Tufféry

Lift公式通過貝葉斯推導可以得到

\[\begin{aligned} Lift & = \frac{P(A \bigcap B)}{P(A)*P(B)}\\ & = \frac{P(A|B)*P(B)}{P(A)*P(B)}=\frac{P(A|B)}{P(A)}\\ & = \frac{P(B|A)*P(A)}{P(A)*P(B)}=\frac{P(B|A)}{P(B)}\\ \end{aligned} \]

公式中的\(P(B)\)可以看做上圖中的橫軸,也就是每個划分下對應的樣本數量占比\(P(p>p_\theta)\)(\(p\)是樣本為正例的概率,\(p_\theta\)是正例概率划分點),\(P(A|B)\)就是每個分組中正例的比例\(P(+|p>p_\theta)\).

作Lift曲線時,將樣本按預測為正例的概率\(P(+)\)從大到小排序后,按照\(P(+)\)等距划分為N段(取百分位數,一般划分10段),將每1小段當做一個小組,然后計算每個分組中正例的比例,類似如下的表格

來源

注:表格數據得到的提升圖和收益圖

更多關於Lift\Gain Curve參考:

更多參考指標可以參考如下cheat sheet

source

參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM