百面機器學習 #2 模型評估:01&02 精確率與召回率,假陽性與真陽性率,PR曲線和ROC曲線

predict Positive predict Negative
real Positive TP FN num of real positive=npn_p
real Negative FP TN num of real negative=nnn_n
predicted num of postitive predicted num of negative
  • 精確率(查準率) = 分類正確的正樣本個數佔分類器判定爲正樣本的樣本個數的比例。
    p=TPTP+FP p=\frac{TP}{TP+FP}

  • 召回率(查全率) = 分類正確的正樣本個數佔真正的正樣本個數的比例。
    r=TPTP+FN=TPnp r=\frac{TP}{TP+FN}= \frac{TP}{n_p}

Precision值和Recall值是既矛盾又統一的兩個指標,爲了提高Precision值,分類器需要儘量在“更有把握”時才把樣本預測爲正樣本,但此時往往會因爲過於保守而漏掉很多“沒有把握”的正樣本,導致Recall值降低。

1. P-R(Precision-Recall)曲線

  • P-R曲線的橫軸是召回率R,縱軸是精確率P

  • P-R曲線上的一個點代表着,在某一閾值下,模型將大於該閾值的結果判定爲正樣本,小於該閾值的結果判定爲負樣本(即高分爲正樣本,相當於排序,得分前幾名爲正樣本,或者說是我們想要的搜索結果),此時返回結果對應的召回率和精確率。

    左邊曲線起始附近代表當閾值最大時模型的精確率和召回率。越往右表示閾值越小。

    • 即開始閾值很大,判定結果可能幾乎沒有正樣本,即無論正負都判定爲負,TP0,FP=0,TNnn,FNnpTP\rightarrow 0, FP=0,TN\rightarrow n_n,FN\rightarrow n_pr=TPTP+FN0,p=TPTP+FP1r=\frac{TP}{TP+FN} \rightarrow 0,p=\frac{TP}{TP+FP}\rightarrow 1,所以召回率趨近於0,而準確率因爲判定爲正樣本的個數爲0、正確判斷爲正樣本的個數也爲0,或者說對於正樣本的確定“錙銖必較”,只有預測數值特別高的才認爲是正樣本,這樣的高要求得到的正樣本是真的正樣本的概率就會趨近於1,所以準確率趨近於1;

    • 而當曲線往右走,閾值很小,即對於正樣本的判定要求變得很鬆,幾乎將所有的判定爲正樣本,TP=np,FPnn,TN0,FN=0TP= n_p, FP\rightarrow n_n,TN\rightarrow 0,FN=0r=TPTP+FN=1,p=TPTP+FPnPnp+nnr=\frac{TP}{TP+FN} =1,p=\frac{TP}{TP+FP}\rightarrow \frac{n_P}{n_p+n_n}則此時就可能將所有的真正樣本都挖掘出來,召回率趨近於1;而由於所有樣本都判定爲正樣本,準確率則相當於是原始樣本中真實正樣本的比例。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ds0JXZfy-1589816150897)(%E7%99%BE%E9%9D%A2%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/image-20200517211117653.png)]

只用某個點對應的精確率和召回率是不能全面地衡量模型的性能,只有通過P-R曲線的整體表現,才能夠對模型進行更爲全面的評估。

F1 score

精準率和召回率的調和平均值
F1=2×precision×recallprecision+recall F1=\frac{2\times precision\times recall}{precision+recall}

2. 平方根誤差的侷限性

RMSE經常被用來衡量回歸模型的好壞
RMSE=i=1n(yiy^i)2n RMSE = \sqrt{\frac{\sum\limits_{i=1}^n(y_i-\hat y_i)^2}{n}}
一般情況下,RMSE能夠很好地反映迴歸模型預測值與真實值的偏離程度。但在實際問題中,如果存在個別偏離程度非常大的離羣點(Outlier)時,即使離羣點數量非常少,也會讓RMSE指標變得很差。

離羣點:

  • 認定這些離羣點是“噪聲點”的話,就需要在數據預處理的階段把這些噪聲點過濾掉

  • 如果不認爲這些離羣點是“噪聲點”的話,就需要進一步提高模型的預測能力,將離羣點產生的機制建模進去

  • 找一個更合適的指標來評估該模型。關於評估指標,其實是存在比RMSE的魯棒性更好的指標,比如平均絕對百分比誤差(Mean Absolute Percent Error,MAPE)
    MAPE=i=1nyiy^iyi×100n MAPE=\sum_{i=1}^n\left|\frac{y_i-\hat y_i}{y_i}\right|\times\frac{100}{n}
    MAPE相當於把每個點的誤差進行了歸一化,降低了個別離羣點帶來的絕對誤差的影響。

3. ROC曲線

Receiver Operating Characteristic Curve/ 受試者工作特徵曲線”:相比precision、recall、F1 score、P-R曲線等,ROC曲線則有很多優點,經常作爲評估二值分類器最重要的指標之一。

predict Positive predict Negative
real Positive TP FN num of real positive=npn_p
real Negative FP TN num of real negative=nnn_n
predicted num of postitive predicted num of negative
  • 橫座標 = 假陽性率(False Positive Rate,FPR):真的負樣本中被分類器預測爲正樣本的比例。
    FPR=FPTN+FP=FPnn FPR=\frac{FP}{TN+FP}=\frac{FP}{n_n}

    所有敵機來襲的事件中,每個雷達兵準確預報的概率

  • 縱座標 = 真陽性率(True Positive Rate,TPR):真的正樣本中被分類器預測爲正樣本的比例。(=召回率)
    TPR=TPTP+FN=TPnp=recall TPR=\frac{TP}{TP+FN} =\frac{TP}{n_p}=recall

    所有非敵機來襲信號中,雷達兵預報錯誤成有敵機的概率

ROC曲線繪製

  • ROC曲線是通過不斷移動分類器的“截斷點”來生成曲線上的一組關鍵點的。“截斷點”指的就是區分正負預測結果的閾值。

    左邊曲線起始附近代表當閾值最大,越往右表示閾值越小。

    • 即開始閾值很大,判定結果可能幾乎沒有正樣本,即無論正負都判定爲負,TP0,FP=0,TNnn,FNnpTP\rightarrow 0, FP=0,TN\rightarrow n_n,FN\rightarrow n_pFPR=FPTN+FP=0,TPR=TPTP+FN0FPR=\frac{FP}{TN+FP}=0,TPR=\frac{TP}{TP+FN}\rightarrow 0,即此時真、假陽性率都趨近0.

    • 而當曲線往右走,閾值很小,即對於正樣本的判定要求變得很鬆,幾乎將所有的判定爲正樣本,TP=np,FPnn,TN0,FN=0TP= n_p, FP\rightarrow n_n,TN\rightarrow 0,FN=0FPR=FPTN+FP1,TPR=TPTP+FN=1FPR=\frac{FP}{TN+FP}\rightarrow 1,TPR=\frac{TP}{TP+FN}=1,即此時真實負樣本中被分爲陽性的比例爲1,真實負樣本中被分爲陽性的比例也爲1.

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XaWBTokF-1589816150901)(%E7%99%BE%E9%9D%A2%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/image-20200518224449166.png)]

  • 還有一種更直觀地繪製ROC曲線的方法

    • 首先,根據樣本標籤統計出正負樣本的數量,假設正樣本數量爲npn_p,負樣本數量爲nnn_n
    • 接下來,把橫軸的刻度間隔設置爲1/nn1/n_n,縱軸的刻度間隔設置爲1/np1/n_p
    • 再根據模型輸出的預測概率對樣本進行排序(從高到低,相當於閾值從最高開始往下走,即是對應曲線最左端開始);依次遍歷樣本,同時從零點開始繪製ROC曲線
      • 每遇到一個正樣本就沿縱軸方向繪製一個刻度間隔的曲線
      • 每遇到一個負樣本就沿橫軸方向繪製一個刻度間隔的曲線
      • 直到遍歷完所有樣本,曲線最終停在(1,1)這個點,表示遍歷了所有npn_p個正樣本和所有nnn_n個負樣本,整個ROC曲線繪製完成
  • 相比P-R曲線,ROC曲線有一個特點,當正負樣本的分佈發生變化時,ROC曲線的形狀能夠基本保持不變,而P-R曲線的形狀一般會發生較劇烈的變化。所以ROC曲線能夠儘量降低不同測試集帶來的干擾,更加客觀地衡量模型本身的性能

    ROC曲線的適用場景更多,被廣泛用於排序、推薦、廣告等正負樣本數量往往很不均衡領域。

4. AUC

  • AUC((Area Under ROC Curve)指的是ROC曲線下的面積大小,該值能夠量化地反映基於ROC曲線衡量出的模型性能。

  • 由於ROC曲線一般都處於y=xy=x這條直線的上方(如果不是的話,只要把模型預測的概率反轉成1−p就可以得到一個更好的分類器),所以AUC的取值一般在0.5~1之間。

    橫縱座標都表示預測爲陽性(正例),而我們希望真實正樣本被預測爲陽性的概率,高於真實負樣本被預測爲陽性的概率,所以大部分ROC曲線y>xy>x.

  • AUC越大,說明分類器越可能把真正的正樣本排在前面,分類性能越好。

  • AUC常常被用來作爲模型排序好壞的指標,原因在於AUC可以看做隨機從正負樣本中選取一對正負樣本,其中正樣本的得分大於負樣本的概率 !

Ref:

鏈接:AUC的證明

對於真正例率TPR,分子是得分>t裏面正樣本的數目,分母是總的正樣本數目。 而對於假正例率FPR,分子是得分>t裏面負樣本的數目,分母是總的負樣本數目。 因此,如果定義N+(t),N−(t)N+(t),N−(t)分別爲得分大於t的樣本中正負樣本數目,N+,N−N+,N−爲總的正負樣本數目, 那麼TPR和FPR可以表達爲閾值t的函數
TPR(t)=N+(t)N+FPR(t)=N(t)N \text{TPR}(t) = \frac{N_+(t)}{N_+} \\ \text{FPR}(t) = \frac{N_-(t)}{N_-}
考慮隨機取得這對正負樣本中,負樣本得分在[t,t+Δt][t,t+Δt]之間的概率爲
P(ts<t+Δt)=P(s>t)P(s>t+Δt)=N(t)N(t+Δt)N=x(t)x(t+Δt)=Δx(t) P(t \le s_- < t+\Delta t) \\ = P( s_- \gt t) - P(s_- > t+\Delta t) \\ = \frac{N_-(t) - N_-(t+\Delta t)}{N_-} \\ = x(t) - x(t +\Delta t) = - \Delta x(t)
如果Δt\Delta t很小,那麼該正樣本得分大於該負樣本的概率爲
P(s+>sts<t+Δt)P(s+>t)=N+(t)N+=y(t) P(s_+ > s_- | t \le s_- < t+\Delta t) \\ \approx P(s_+ > t) = \frac{N_+(t)}{N_+} = y(t)
所以
P(s+>s)=P(ts<t+Δt)P(s+>sts<t+Δt)=y(t)Δx(t)=t=y(t)dx(t)=t=y(t)dx(t) P(s_+ > s_- ) \\ = \sum P(t \le s_- < t+\Delta t) P(s_+ > s_- | t \le s_- < t+\Delta t) \\ = -\sum y(t) \Delta x(t) \\ = -\int_{t=-\infty}^{\infty} y(t) d x(t) \\ = \int_{t=\infty}^{-\infty} y(t) d x(t)
注意積分區間,t=t=−\infty對應ROC圖像最右上角的點,而t=t=\infty對應ROC圖像最左下角的點。所以,計算面積是t=\int _{t=\infty}^{-\infty}。 可以看出,積分項裏面實際上是這樣一個事件的概率:隨機取一對正負樣本,負樣本得分爲t且正樣本得分大於t! 因此,對這個概率微元積分就可以到正樣本得分大於負樣本的概率!

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