二分類算法的評價指標:准確率、精准率、召回率、混淆矩陣、AUC


評價指標是針對同樣的數據,輸入不同的算法,或者輸入相同的算法但參數不同而給出這個算法或者參數好壞的定量指標。

以下為了方便講解,都以二分類問題為前提進行介紹,其實多分類問題下這些概念都可以得到推廣。

准確率

准確率是最好理解的評價指標,它是一個比值:

\[准確率 = \cfrac{算法分類正確的數據個數}{輸入算法的數據的個數} \]

但是使用准確率評價算法有一個問題,就是在數據的類別不均衡,特別是有極偏的數據存在的情況下,准確率這個評價指標是不能客觀評價算法的優劣的。例如下面這個例子:

我們檢測對 1000 個人是否患有癌症進行檢測,其實癌症是一個發病率很低的疾病,我們就假定這 1000 個人里面只有 3 個人真正患病。

此時,我們可以“無腦地”設計一個算法,就預測這 1000 個人全部健康。根據准確率的定義,除了那 3 個真正患病的病人我們預測錯了,其余健康的 997 人我們的算法都預測正確了,此時

\[准確率 = \cfrac{算法分類正確的數據}{輸入算法的數據的總數} = \cfrac{997}{1000} = 99.7\% \]

事實上,這樣的算法沒有任何的預測能力,真的用於醫療是極其不負責的,於是我們就應該考慮是不是評價指標出了問題。這個時候就需要別的評價指標了。

精准率、召回率

要解釋清楚精准率和召回率,得先解釋混淆矩陣,二分類問題的混淆矩陣由 4 個數構成。首先我們將二分類問題中,我們關心的,少數的那一部分數據,我們稱之為正例(positive),就如同預測癌症,癌症患者就定義為正例。那么剩下的就定義為負例(negative)。

於是,我們定義:


TN:算法預測為負例(N),實際上也是負例(N)的個數,即算法預測對了(True);

FP:算法預測為正例(P),實際上是負例(N)的個數,即算法預測錯了(False);

FN:算法預測為負例(N),實際上是正例(P)的個數,即算法預測錯了(False);

TP:算法預測為正例(P),實際上也是正例(P)的個數,即算法預測對了(True)。

這 4 個定義由兩個字母組成,第 1 個字母表示算法預測正確或者錯誤,第 2 個字母表示算法預測的結果。

混淆矩陣

混淆矩陣定義如下:

預測值 0 預測值 1
真實值 0 TN FP
真實值 1 FN TP



記憶方法:真實值更重要,所以真實值處在第一個維度,就是行。


精准率(precision)的定義:

\[{\rm precision} = \cfrac{TP}{TP+FP} \]


所以,精准率就是“預測為正例的那些數據里預測正確的數據個數”。

召回率(recall)的定義:

\[{\rm recall} = \cfrac{TP}{TP+FN} \]


所以,召回率就是“真實為正例的那些數據里預測正確的數據個數”。


在不同的應用場景下,我們的關注點不同,例如,在預測股票的時候,我們更關心精准率,即我們預測升的那些股票里,真的升了有多少,因為那些我們預測升的股票都是我們投錢的。而在預測病患的場景下,我們更關注召回率,即真的患病的那些人里我們預測錯了情況應該越少越好,因為真的患病如果沒有檢測出來,結果其實是很嚴重的,之前那個無腦的算法,召回率就是 0。


精准率和召回率是此消彼長的,即精准率高了,召回率就下降,在一些場景下要兼顧精准率和召回率,就有 F1 score。

F1 score

F1 score 是精准率和召回率的兼顧指標,定義如下:

\[\frac{1}{F1} = \frac{1}{2}(\frac{1}{precision} + \frac{1}{recall}) \]

整理一下:

\[F1 = \frac{2 \cdot precision \cdot recall}{precision + recall} \]

其實 F1 score 是精准率和召回率的調和平均數,調和平均數的性質就是,只有當精准率和召回率二者都非常高的時候,它們的調和平均才會高。如果其中之一很低,調和平均就會被拉得接近於那個很低的數。

AUC(Area Under Curve)

AUC 是另一種評價二分類算法的指標,被定義為 ROC 曲線下的面積,顯然這個面積的數值不會大於 1。我個人覺得和 F1 score 差不多,都是綜合評價精准率和召回率的指標,只不過繪制 ROC 曲線使用了另外兩個此消彼長的指標 。

橫坐標:假正率(False positive rate, FPR),預測為正但實際為負的樣本占所有負例樣本的比例;

\[FPR = \frac{FP}{TN + FP} \]

縱坐標:真正率(True positive rate, TPR),這個其實就是召回率,預測為正且實際為正的樣本占所有正例樣本的比例。

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

諸如邏輯回歸這樣的分類算法而言,通常預測的都是一個概率值,我們會認為設置一個閾值,超過這個閾值,就預測為其中一類,不超過這個閾值,定義為另外一類。於是,不同的閾值就對應了不同的假正率和真正率,於是通過不同的閾值就形成了假正率和真正率序列,它們就可以在直角坐標系上通過描點成為光滑曲線。這個曲線就是 ROC 曲線,ROC 曲線下的面積就是 AUC。

AUC 高的算法通常認為更好。

那么為什么不用精准率和召回率畫曲線求面積呢,其實是完全可以的。

精准率-召回率曲線也叫 pr 曲線,畫出來是這樣的。

而 roc 曲線畫出來是這樣的:

pr 曲線從左到右是下降的,roc 曲線從左到右是上升的,我個人覺得二者都行,只不過最終人們都采用 roc 曲線(上面兩張圖片都來自 scikit-learn 官方網站)。

參考資料:
機器學習之分類性能度量指標 : ROC曲線、AUC值、正確率、召回率
https://zhwhong.cn/2017/04/14/ROC-AUC-Precision-Recall-analysis/


免責聲明!

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



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