常見的機器學習相關評價指標

目錄

一、Accuracy準確率

二、混淆矩陣 Confusion Matrix

三、Precision(精準度)和Recall(召回率)

四、 Fβ Score

五、PR曲線、ROC曲線

5.1、PR曲線

5.2、ROC曲線

六、AUC

七、迴歸(Regression)算法指標

6.1、平均絕對誤差 MAE

6.2、均方誤差 MSE

八、深度學習目標檢測相關指標

8.1、IOU交併比

8.2、NMS非極大值抑制

8.3、AP、MAP


在使用機器學習模型的過程中,我們不可避免都會碰到如何評價我們模型到底是好還是壞?或者我們再看別人論文時,總會遇到一些比如:“準確率”、“召回率”之類的東西。博主記性不好總是忘記傻傻的分不清,總是搞混。所以,在這記錄下一些常見的評價指標,下圖是不同機器學習算法的評價指標:

一、Accuracy準確率

檢測時分對的樣本數除以所有的樣本數。準確率一般被用來評估檢測模型的全局準確程度,包含的信息有限,不能完全評價一個模型性能。

二、混淆矩陣 Confusion Matrix

對於一個二分類任務,二分類器的預測結果可分爲以下4類:

  • TP: true positive—將正類樣本預測爲正
  • TN:true negative—將負類樣本預測爲負
  • FP:false positive—將負類樣本預測爲正
  • FN:false negative—將正類樣本預測爲負
 

正樣本

負樣本
正樣本(預測) TP(真陽性) FP(假陽性)
負樣本(預測) FN(假陰性) TN(真陰性)

三、Precision(精準度)Recall(召回率)

對於一個樣本嚴重不均衡的數據,比如:郵件,如果我們有1000封郵件,其中正常郵件999個,而垃圾郵件只有1個,那麼假設所有的樣本都識別爲正常郵件,那麼此時Accuracy爲99.9%。看起來我們的模型不錯,但是該模型是沒法識別出垃圾郵件的,因爲我們訓練該模型的目的就是爲了能夠分類出垃圾郵件,顯然這不是我們需要的一種模型的評價指標。當然,在實際模型中,我們會使用該指標來初步判斷我們的模型是好是壞。

通過上面的說明,我們知道單單靠準確率是無法準確的衡量我們的模型的,所以這裏我們引出了Precision(精準度)Recall(召回率),它們僅適用於二分類問題。我們先來看看其定義:

Precision(精準度)

  • 定義:正確分類的正例個數佔分類爲正例的實例個數的比例,也稱查準率
  • 計算公式Precision=\frac{TP}{TP+FP}

Recall(召回率)

  • 定義:正確分類的正例個數佔實際正例個數的比例 也稱查全率
  • 計算公式Recall=\frac{TP}{TP+FN}

理想情況下,精確率和召回率兩者都越高越好。然而事實上這兩者在某些情況下是矛盾的,精確率高時,召回率低;精確率低時,召回率高;關於這個性質通過觀察PR曲線不難觀察出來。比如在搜索網頁時,如果只返回最相關的一個網頁,那精確率就是100%,而召回率就很低;如果返回全部網頁,那召回率爲100%,精確率就很低。因此在不同場合需要根據實際需求判斷哪個指標跟重要。

四、 Fβ Score

通常情況下,查準率和召回率是相互影響的,Precision高、Recall 就低;Recall 高、Precision就低。那麼有沒有一個能夠衡量這兩個指標的方法呢?所以這裏就引出了F1 Score。F1函數是一個常用指標,F1值是精確率和召回率的調和均值,即

                                                  \frac{2}{F_{1}}=\frac{1}{P}+\frac{1}{R}

                                                 F_{1}=\frac{2PR}{P+R}

當然,F值可泛化爲對精確率和召回率賦不同權值進行加權調和:

                                                 F_{\beta }=\frac{ \left ( 1 + \beta ^{2} \right ) PR}{\beta ^{2}P+R}

其中,β>1時,查全率更有影響;β=1時,退化爲標準的F1;β<1時,查準率更有影響。

五、PR曲線、ROC曲線

5.1、PR曲線

PR曲線以Precision(精準度)爲縱座標,Recall(召回率)爲橫座標。如下圖所示:

從上圖不難發現,precision與Recall的折中(trade off),曲線越靠近右上角性能越好,曲線下的面積叫AP分數,能在一定程度上反應模型的精確率和召回率都很高的比例。但這個值不方便計算,綜合考慮精度與召回率一般使用F1函數或者AUC值(因爲ROC曲線很容易畫,ROC曲線下的面積也比較容易計算)。

一般來說,使用PR曲線評價一個模型的好壞,先看平滑不平滑,在看誰上誰下(同一測試集上),一般來說,上面的比下面的好(紅線比黑線好)。

5.2、ROC曲線

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

ROC曲線曲線不需要設定這樣的閾值,ROC曲線縱座標是真正率,橫座標是假正率,  ROC(Receiver Operating Characteristic)曲線常用來評價一個二值分類器的優劣,ROC的橫軸爲false positive rate,FPR,“假正例率”,也就是誤判爲正確的比例;縱軸是true positive rate,TPR,“真正例率”,也就是正確的判斷爲正確的比例。

  • 真正類率(True Postive Rate)TPRTPR=\frac{TP}{TP+FN} 在所有的正樣本中,分類器預測正確的比例(等於Recall)。
  • 真負類率(True Negative Rate)FPRFPR=\frac{FP}{FP+TN}在所有的負樣本中,分類器預測錯誤的比例。

ROC曲線的全稱叫做Receiver Operating Characteristic,常常被用來判別一個分類器的好壞程度。ROC曲線爲 FPR 與 TPR 之間的關係曲線,這個組合以 FPR 對 TPR,即是以代價 (costs) 對收益 (benefits),顯然收益越高,代價越低,模型的性能就越好。模型的效果越好,整個ROC曲線越往左上角靠,與PR類似如果一個模型ROC曲線完全cover另一個,說明該模型優於另一模型。

另外值得注意的是,AUC的計算方法同時考慮了學習器對於正例和負例的分類能力,在樣本不平衡的情況下,依然能夠對分類器做出合理的評價。AUC對樣本類別是否均衡並不敏感,這也是不均衡樣本通常用AUC評價學習器性能的一個原因。

AUC分數是曲線下的面積(Area under curve),越大意味着分類器效果越好。顯然這個面積的數值不會大於1。又由於ROC曲線一般都處於y=x這條直線的上方,所以AUC的取值範圍在0.5和1之間。使用AUC值作爲評價標準是因爲很多時候ROC曲線並不能清晰的說明哪個分類器的效果更好,而作爲一個數值,對應AUC更大的分類器效果更好。

 既然已經這麼多評價標準,爲什麼還要使用ROC和AUC呢?因爲ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線能夠保持不變。在實際的數據集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試數據中的正負樣本的分佈也可能隨着時間變化。

六、AUC

AUC是一個模型評價指標,只能用於二分類模型的評價,對於二分類模型,還有很多其他評價指標,比如logloss,accuracy,precision。如果你經常關注數據挖掘比賽,比如kaggle,那你會發現AUC和logloss基本是最常見的模型評價指標。爲什麼AUC和logloss比accuracy更常用呢?因爲很多機器學習的模型對分類問題的預測結果都是概率,如果要計算accuracy,需要先把概率轉化成類別,這就需要手動設置一個閾值,如果對一個樣本的預測概率高於這個預測,就把這個樣本放進一個類別裏面,低於這個閾值,放進另一個類別裏面。所以這個閾值很大程度上影響了accuracy的計算。使用AUC或者logloss可以避免把預測概率轉換成類別。

AUC是Area under curve的首字母縮寫。AUC就是ROC曲線下的面積,衡量學習器優劣的一種性能指標。從定義可知,AUC可通過對ROC曲線下各部分的面積求和而得。假定ROC曲線是由座標爲(x1,y1),...,(xm,ym)的點按序連接而形成,則AUC可估算爲:

                                              AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_{i})(y_{i}+y_{i+1})

AUC 值爲 ROC 曲線所覆蓋的區域面積,顯然,AUC越大,分類器分類效果越好。

  • AUC = 1,是完美分類器。
  • 0.5 < AUC < 1,優於隨機猜測。有預測價值。
  • AUC = 0.5,跟隨機猜測一樣(例:丟銅板),沒有預測價值。
  • AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。

AUC的物理意義 AUC的物理意義正樣本的預測結果大於負樣本的預測結果的概率。所以AUC反應的是分類器對樣本的排序能力。另外值得注意的是,AUC對樣本類別是否均衡並不敏感,這也是不均衡樣本通常用AUC評價分類器性能的一個原因。

怎麼計算AUC?

  • 法1:AUC爲ROC曲線下的面積,那我們直接計算面積可得。面積爲一個個小的梯形面積(曲線)之和。計算的精度與閾值的精度有關 。
  • 法2:根據AUC的物理意義,我們計算正樣本預測結果大於負樣本預測結果概率。取n1* n0(n1爲正樣本數,n0爲負樣本數)個二元組,每個二元組比較正樣本和負樣本的預測結果,正樣本預測結果高於負樣本預測結果則爲預測正確,預測正確的二元組佔總二元組的比率就是最後得到的AUC。時間複雜度爲O(N* M)。
  • 法3:我們首先把所有樣本按照score排序,依次用rank表示他們,如最大score的樣本,rank=n (n=n0+n1,其中n0爲負樣本個數,n1爲正樣本個數),其次爲n-1。那麼對於正樣本中rank最大的樣本,rank_max,有n1-1個其他正樣本比他score小,那麼就有(rank_max-1)-(n1-1)個負樣本比他score小。其次爲(rank_second-1)-(n1-2)。最後我們得到正樣本大於負樣本的概率爲 :

                                                AUC=\frac{\sum rank(score) - \frac{n_{1}*(n_{1}+1)}{2}}{n_{0}*n_{1}}

其中:

n0、n1——負樣本和正樣本的個數

rank(score)——代表第i條樣本的序號。(概率得分從小到大排,排在第rank個位置)。這裏是將所有正樣本的序號加起來。

本文着重講解了第三種計算方法,這裏也推薦大家在計算AUC時選擇這種方法。關於怎麼計算,可以參考以下鏈接,看一遍也就會了。

參考鏈接:AUC的計算方法

爲什麼說 ROC 和AUC都能應用於非均衡的分類問題?

ROC曲線只與橫座標 (FPR) 和 縱座標 (TPR) 有關係 。我們可以發現TPR只是正樣本中預測正確的概率,而FPR只是負樣本中預測錯誤的概率,和正負樣本的比例沒有關係。因此 ROC 的值與實際的正負樣本比例無關,因此既可以用於均衡問題,也可以用於非均衡問題。而 AUC 的幾何意義爲ROC曲線下的面積,因此也和實際的正負樣本比例無關。

七、迴歸(Regression)算法指標

6.1、平均絕對誤差 MAE

平均絕對誤差MAE(Mean Absolute Error)又被稱爲 L1範數損失。

                                             MAE(y,\hat{y})=\frac{1}{m}\sum_{i=1}^{m}\left | y_{i}-\hat{y}_{i} \right |

MAE雖能較好衡量回歸模型的好壞,但是絕對值的存在導致函數不光滑,在某些點上不能求導,可以考慮將絕對值改爲殘差的平方,這就是均方誤差。

6.2、均方誤差 MSE

均方誤差MSE(Mean Squared Error)又被稱爲 L2範數損失 。

                                             MSE(y,\hat{y})=\frac{1}{m}\sum_{i=1}^{m}\left ( y,\hat{y} \right )^{2}

八、深度學習目標檢測相關指標

8.1、IOU交併比

IoU 的全稱爲交併比(Intersection over Union),IoU 計算的是 “預測的邊框” 和 “真實的邊框” 的交集和並集的比值。IoU是一種簡單的評估指標,其可以用於評估任何輸出爲bounding box的模型算法的性能。

計算公式:

 

8.2、NMS非極大值抑制

非極大值抑制(Non-Maximum Suppression,NMS)是檢測算法中經典後處理步驟,對檢測最終性能影響至關重要。這是因爲原始檢測算法通常會預測出大量的檢測框,其中產生大量的錯誤、重疊的和不準的樣本,需要通過大量的算法計算來過濾這些樣本。如果處理不好,就會大大降低算法的性能,所以利用一個有效的算法來消除多餘檢測框以獲得最佳的預測就顯得特別重要。

NMS算法的本質是搜索局部極大值。在目標檢測中,NMS算法主要是利用木匾檢測框和對應的置信度分數,設置一定的閾值來刪除重疊度較大的邊界框。

NMS算法一般是爲了去掉模型預測後的多餘框,其一般設有一個nms_threshold=0.5,具體的實現思路如下:

  1. 選取這類box中scores最大的哪一個,記爲box_best,並保留它
  2. 計算box_best與其餘的box的IOU
  3. 如果其IOU>0.5了,那麼就捨棄這個box(由於可能這兩個box表示同一目標,所以保留分數高的哪一個)
  4. 從最後剩餘的boxes中,再找出最大scores的哪一個,如此循環往復

下面爲python實現的NMS算法:

def nms(bbox_list,thresh):
    '''
    非極大值抑制
    :param bbox_list:方框集合,分別爲x0,y0,x1,y1,conf
    :param thresh: iou閾值
    :return:
    '''
    x0 = bbox_list[:,0]
    y0 = bbox_list[:,1]
    x1 = bbox_list[:,2]
    y1 = bbox_list[:,3]
    conf=bbox_list[:,4]

    areas=(x1-x0+1)*(y1-y0+1)
    order=conf.argsort()[::-1]
    keep=[]
    while order.size>0:
        i=order[0]
        keep.append(i)

        xx1=np.maximum(x0[i],x0[order[1:]])
        yy1=np.maximum(y0[i],y0[order[1:]])
        xx2=np.minimum(x1[i],x1[order[1:]])
        yy2=np.minimum(y1[i],y1[order[1:]])

        w=np.maximum(xx2-xx1+1,0)
        h=np.maximum(yy2-yy1+1,0)

        inter=w*h
        over=inter/(areas[i]+areas[order[1:]]-inter)
        inds=np.where(over<=thresh)[0]
        order=order[inds+1]

    return keep

8.3、AP、MAP

AP(Average Precision,平均精度)是基於準確率和召回率來計算的。前面我們已經瞭解了這兩個概念了,這裏就不多說了。AP表示不同召回率上的的準確率的平均值。

所以,這裏我們又引出了另外一個概念MAP(Mean Average Precision,MAP)。MAP表示是把每個類別的AP都算了一遍,再取平均值。

因此,AP是針對單個類別的,mAP是針對所有類別的。

在機器視覺目標檢測領域,AP和mAP分界線並不明顯,只要IoU > 0.5的檢測框都可以叫做AP0.5,這時AP和mAP表達都是多類檢測的精度,關注點在檢測框的精度上。

參考鏈接:

機器學習分類模型評價指標詳述

機器學習評價指標

機器學習評估指標

PR、ROC、AUC全擊破

PR曲線,ROC曲線,AUC指標等,Accuracy vs Precision

圖像處理的交併比(IoU)

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