在處理機器學習的分類問題中,我們需要評估分類結果的好壞以選擇或者優化模型,本文總結二分類任務中常用的評估指標。對於多分類任務的評估指標,可以參考這篇文章
先從我們最熟知的混淆矩陣(confusion matrix)說起。
source
鑒於混淆矩陣看着比較抽象,可以參考下圖
常用的評估指標可以分為3類:
- 成對指標,包括正確率(精度)&錯誤率,Precision&Reall,TPR(Sentitivity)&TNR(Specificity)等;
- 綜合指標,包括F-Score,MCC,BCR等;
- 圖形指標,包括ROC以及延伸得到的Gini、AUC、Lift\Gain曲線、代價曲線等;
成對指標
錯誤率和正確率
錯誤率定義為分類錯誤的樣本數占樣本總數的比例
正確率(精度) 定義為分類正確的樣本數占總數的比例
注意:\(N_{sample}\)表示樣本總數(即confusion matrix中TP, FP, TN, FN之和)。
Precision、Recall
Precision(准確率、查准率) ,即判斷為正例的樣本中有多大比例是真的正例。
Recall(召回率、查全率) ,即正例樣本中有多大比例的正例被發現(判定為正例),該指標也稱為True Positive Rate(TPR)、Sensitivity.
考慮到FP和FN的關系是I類錯誤和II類錯誤的關系,會此消彼長,故Precision和Recall也有這種關系。對比多個模型的表現時,可以用P-R圖(橫軸為Recall,縱軸為Precision).
截圖來自《機器學習》周志華,更多信息可以參考本書2.3節1.3
TPR(Sensitivity)、TNR(Specificity)
TPR(True Positive Rate) ,正例樣本中被正確判定為正例的樣本數比例,該指標也稱為Sensitivity(敏感度)。
TNR(True False Rate) ,指負例樣本中被正確判定為負例的樣本數比例,該指標也稱為Specificity(特異度)。
綜合指標
F-Score
假設我們要判斷人群中的好人(正例)和壞人(負例),如果我們的關注點是“不能冤枉好人”,那么就要盡可能把好人識別出來(判斷為好人的標准趨於寬松,壞人也可能被識別為好人),此時的Precision會趨於更小,Recall會趨於更大;當我們關注的是“不能放過壞人”(比如風控業務中,“壞”客戶造成的業務損失很大),此時判斷好人的標准更加嚴格,更多的“真”好人會被納入“嫌疑對象”(判定為負例),此時的Precision會趨於更大,但是Recall會降低;如果我們“盡可能既不能冤枉好人,又不能放過壞人”,那么就需要在Precision和Recall中取得平衡,此時可以看F1-Score上的表現(不過對於正負例樣本不均衡的情況下,F1-Score表現並不好)。
F1-Score 是Precision和Recall的調和平均值,即
由此可推導得到
更一般地,某些場景下關注Precision和Recall的權重不同!
當\(\beta>1\)時,Recall的權重更大,\(\beta<1\)時Precision的權重更大。
Matthews Correlaton Coefficient
簡稱MCC(馬修斯相關系數,Brian W. Matthews, 1975),
更多參考
從公式中可以看出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對應的是BER(Balanced Error Rate),也稱之為Half Total Error Rate(HTER).
同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指數,如下圖所示:
如果模型A的ROC曲線完全包裹模型B的ROC曲線,則表明模型A是優於模型B的;兩個模型的ROC曲線發生交叉時,則可以通過ROC曲線下的面積(Area under the ROC curve,簡稱AUC)來進行比較,AUC取值范圍為[0,1].
更多關於ROC曲線的資料:
- ROC曲線的直觀展示
- https://derangedphysiology.com/main/cicm-primary-exam/required-reading/research-methods-and-statistics/Chapter 3.0.5/receiver-operating-characteristic-roc-curve
- https://en.wikipedia.org/wiki/Receiver_operating_characteristic3.
代價曲線(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(+)\),
- 縱軸是歸一化代價(Normalized Expected Cost)
繪制代價曲線時,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公式通過貝葉斯推導可以得到
公式中的\(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參考:
- https://en.wikipedia.org/wiki/Lift_(data_mining)- http://dni-institute.in/blogs/predictive-model-performance-statistics/
- http://www2.cs.uregina.ca/~dbd/cs831/notes/lift_chart/lift_chart.html
- Data Mining and Statistics for Decision Making , Stéphane Tufféry
更多參考指標可以參考如下cheat sheet
參考資料:
- 機器學習,周志華
- https://en.wikipedia.org/wiki/Confusion_matrix
- https://www.machinelearningplus.com/machine-learning/evaluation-metrics-classification-models-r/
- https://turi.com/learn/userguide/evaluation/classification.html
- https://stanford.edu/~shervine/teaching/cs-229/cheatsheet-machine-learning-tips-and-tricks
- https://www.datavedas.com/model-evaluation-classification-models/