一文弄懂ROC、AOU和F1 Score評價指標


ROC 曲線和 AUC 常被用來評價一個 二值分類器 的優劣。

混淆矩陣

在這裏插入圖片描述
其中,TP(真正,True Positive)表示真正結果爲正例,預測結果也是正例;FP(假正,False Positive)表示真實結果爲負例,預測結果卻是正例;TN(真負,True Negative)表示真實結果爲正例,預測結果卻是負例;FN(假負,False Negative)表示真實結果爲負例,預測結果也是負例。顯然,TP+FP+FN+TN=樣本總數。
在這裏插入圖片描述
在這裏插入圖片描述
精確率和準確率是比較容易混淆的兩個評估指標,兩者是有區別的。精確率是一個二分類指標,而準確率能應用於多分類,其計算公式爲:
在這裏插入圖片描述

ROC

機器學習模型中,很多模型輸出是預測概率。而使用精確率、召回率這類指標進行模型評估時,還需要對預測概率設分類閾值,比如預測概率大於閾值爲正例,反之爲負例。這使得模型多了一個超參數,並且這個超參數會影響模型的泛化能力。
在這裏插入圖片描述

  • 精準率:藍色曲線
  • 召回率:黃色曲線
  • X:閾值
  • Y:精準率和召回率各自的值

當我們調整閾值時,就會造成不同的精準率和召回率,閾值越高,精準率越高,召回率越低。閾值越低則相反。

接收者操作特徵(Receiver Operating Characteristic,ROC)曲線不需要設定這樣的閾值。ROC曲線縱座標是真正率,橫座標是假正率,其對應的計算公式爲:
在這裏插入圖片描述
先看圖中的四個點和對角線:

  • (0,1) :即 FPR=0, TPR=1,這意味着 FN(false negative)=0,並且FP(false positive)=0。這意味着分類器很完美,因爲它將所有的樣本都正確分類。
  • (1,0) :即 FPR=1,TPR=0,這個分類器是最糟糕的,因爲它成功避開了所有的正確答案。
  • (0,0) :即 FPR=TPR=0,即 FP(false positive)=TP(true positive)=0,此時分類器將所有的樣本都預測爲負樣本(negative)。
  • (1,1) :分類器將所有的樣本都預測爲正樣本。
  • 對角線上的點 :表示分類器將一半的樣本猜測爲正樣本,另外一半的樣本猜測爲負樣本。

因此,ROC 曲線越接近左上角,分類器的性能越好。
在這裏插入圖片描述
 如上,是三條ROC曲線,在0.23處取一條直線。那麼,在同樣的FPR=0.23的情況下,紅色分類器得到更高的TPR。也就表明,ROC越往上,分類器效果越好。

sklearn中roc計算代碼示例:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html

AOU

AUC值爲ROC曲線所覆蓋的區域面積,顯然,AUC越大,分類器分類效果越好。AUC是一個數值,當僅僅看 ROC 曲線分辨不出哪個分類器的效果更好時,用這個數值來判斷。
在這裏插入圖片描述
AUC值爲ROC曲線所覆蓋的區域面積,顯然,AUC越大,分類器分類效果越好。

  • AUC = 1,是完美分類器,採用這個預測模型時,不管設定什麼閾值都能得出完美預測。絕大多數預測的場合,不存在完美分類器。
  • 0.5 < AUC < 1,優於隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值。
  • AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。
  • AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。

The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.
從上面定義可知,意思是隨機挑選一個正樣本和一個負樣本,當前分類算法得到的 Score 將這個正樣本排在負樣本前面的概率就是 AUC 值。AUC 值是一個概率值,AUC 值越大,分類算法越好。

sklearn中aou計算代碼示例:
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html

PRC

PRC (precision recall curve) 一般指 PRC 曲線,PRC 曲線的縱座標爲 precision,橫座標爲 recall。它的生成方式與 ROC 曲線類似,也是取不同的閾值(threshold)來生成不同的座標點,最後連接起來生成。
在這裏插入圖片描述
來看下一個特殊的點(1, 1),即 recall=1,precision=1,這意味着 FN=0,FP=0,此時分類器模型的效果非常完美。由此可以知道,越靠近右上角,說明模型效果越好。
由於 recall 與 TPR 是一個意思,所以 PRC 曲線的橫座標與 ROC 曲線的縱座標一樣。

F1-Score

F1分數可以看作是模型精準率和召回率的一種加權平均,它的最大值是1,最小值是0。
在這裏插入圖片描述
其變形來源於:
在這裏插入圖片描述
我們使用調和平均而不是簡單的算術平均的原因是:調和平均可以懲罰極端情況。一個具有 1.0 的精度,而召回率爲 0 的分類器,這兩個指標的算術平均是 0.5,但是 F1 score 會是 0。F1 score 給了精度和召回率相同的權重,它是通用 Fβ指標的一個特殊情況,在 Fβ中,β 可以用來給召回率和精度更多或者更少的權重。
Fβ的計算公式:
在這裏插入圖片描述
F1分數認爲召回率和精確率同等重要,F2分數認爲召回率的重要程度是精確率的2倍,而F0.5分數認爲召回率的重要程度是精確率的一半。
另外:G分數是另一種統一精確率和的召回率系統性能評估標準,G分數被定義爲召回率和精確率的幾何平均數。
在這裏插入圖片描述

多分類的F1-Score

多分類問題的F1-Score是採用先計算每個分類的f1-score,然後求各個分類的均值。
(1)計算各分類的f1-score

  • TP(True Positive):預測答案正確
  • FP(False Positive):錯將其他類預測爲本類
  • FN(False Negative):本類標籤預測爲其他類標
predictions = pval < epsilon
tp = sum((predictions == 1) & (y == 1))
fp = sum((predictions == 1) & (y == 0))
fn = sum((predictions == 0) & (y == 1))
precision = tp / (tp + fp)
recall = tp / (tp + fn)
F1 = 2 * precision * recall / (precision + recall)

(2)多分類的整體f1-score
在這裏插入圖片描述

sklearn中f1-score計算代碼示例:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html

選擇指標

爲什麼要出現這麼多評估指標呢?實際上,不同的分類任務適合使用不同的指標來衡量。
例如,推薦系統中,如果希望更精準的瞭解客戶需求,避免推送用戶不感興趣的內容,precision 就更加重要;在疾病檢測的時候,我們不希望查漏任何一項疾病,這時 recall(TPR) 就更重要。當兩者都需要考慮時,F1-score 就是一種參考指標。
真實世界中的數據經常會面臨 class imbalance 問題,即正負樣本比例失衡,而且測試數據中的正負樣本的分佈也可能隨着時間變化。根據計算公式可以推知,在測試數據出現imbalance 時 ROC 曲線能基本保持不變,而 PRC 則會出現大變化。

參考:
《美團機器學習學習實踐》
ROC曲線與AUC值:http://www.cnblogs.com/gatherstars/p/6084696.html
什麼是 ROC AUC:https://www.jianshu.com/p/42bfe1a79d12
Wiki F1-score:https://en.wikipedia.org/wiki/F1_score
詳解sklearn的多分類模型評價指標:https://zhuanlan.zhihu.com/p/59862986
一文讀懂二元分類模型評估指標:https://cloud.tencent.com/developer/article/1099537

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