1. 程式人生 > >精確率、召回率、F1 值、ROC、AUC 各自的優缺點是什麽?

精確率、召回率、F1 值、ROC、AUC 各自的優缺點是什麽?

src lar ssi 100% 優缺點 lan 簡單 答案 fec

作者:竹間智能 Emotibot
鏈接:https://www.zhihu.com/question/30643044/answer/161955532
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

精確率(Precision)是指在所有系統判定的“真”的樣本中,確實是真的的占比,就是TP/(TP+FP)。

召回率(Recall)是指在所有確實為真的樣本中,被判為的“真”的占比,就是TP/(TP+FN)。

FPR(False Positive Rate),又被稱為“Probability of False Alarm”,就是所有確實為“假”的樣本中,被誤判真的樣本,或者FP/(FP+TN)

在不談具體任務的前提下談指標就是耍流氓。

當然在談具體任務之前,我們可以簡單解釋一下這些指標的概念。

假定有一個二分類問題,比如判定商品是否是假貨。給系統一個樣本,系統將會判斷該樣本為“真”(Predicted positive),或“假”(Predicted Negative)。但是當然,系統的判斷與真實判斷(actual positive/negative)是有誤差的,將原本是真的判為真,就是TP(True Positive),原本真的判為假,就是FN(False Negative),原本假的判為真,就是FP(False Positive),原本假的判為假,就是TN(True Negative)。

技術分享

精確率(Precision)是指在所有系統判定的“真”的樣本中,確實是真的的占比,就是TP/(TP+FP)。

召回率(Recall)是指在所有確實為真的樣本中,被判為的“真”的占比,就是TP/(TP+FN)。

TPR(True Positive Rate)的定義,跟Recall一樣。

FPR(False Positive Rate),又被稱為“Probability of False Alarm”,就是所有確實為“假”的樣本中,被誤判真的樣本,或者FP/(FP+TN)

F1值是為了綜合考量精確率和召回率而設計的一個指標,一般公式為取P和R的harmonic mean:2*Precision*Recall/(Precision+Recall)。

ROC=Receiver Operating Characteristic,是TPR vs FPR的曲線;與之對應的是Precision-Recall Curve,展示的是Precision vs Recall的曲線。

技術分享

顯而易見的,當TN=FN=0的時候,也就是我們將100%的樣本都認為是“真”的,TPR=FPR=1:這就是我們“完全放水”的情形;反之,當TP=FP=0的時候,也就是我們將100%的樣本都認為是“假”的時候,TPR=FPR=0,這就是“寧可錯殺一萬,不可放過一個”的情形。

我們在下圖觀察幾個點。首先,FPR=0, TPR=1的那個點,可以推測FN=0, FP=0:一個錯誤都沒有,所以是Perfect Classification。

中間這條紅線,我們觀察TPR=FPR,所以TP(FP+TN)=FP(TP+FN),所以TP/FN = FP/TN:換言之,無論樣本是真是假,我們將它們判為“真”或“假”的概率都相當,或者說,我們的猜測是完全隨機的。

在紅線上方,偏Perfect Classification的區域,我們認為是優於隨機猜測。因為,在紅線上的任意一點垂直向上的點,都有同樣的FPR,但總是得到更高的TPR:在錯誤不變的情況下,我們的Recall變高了。反之,在紅線下方的點,都認為是劣於隨機猜測。

技術分享

那麽聰明的你一定想得到,ROC曲線下方所包圍的面積越大,那麽分類器的性能越優越。這個曲線下的面積,就叫做AUC(Area Under the Curve)。因為整個正方形的面積為1,所以0<=AUC<=1。

同理,Precision與Recall的關系也可以畫成一條曲線,就是上面的PR curve,其中,Precision隨著Recall的提高而降低。

好了,那麽回答題主的問題:這些指標的優缺點各自在哪裏?

先看二分類問題指標的好壞主要取決於分類器的目標。比方說,電子郵件的垃圾過濾,你是希望它更全面(查出所有的垃圾,但是會有大量有用信息也被判為垃圾)呢,還是希望它盡量精準(不要老是將有用的郵件判為垃圾)呢?在這個例子裏,顯然,我們認為False Positive的傷害要大於False Negative:重要郵件要是被判成垃圾所造成的損失,遠大於收件箱裏還有一部分的垃圾郵件——前者可能會讓你錯過重要的工作,後者僅僅是讓你在閱讀的時候皺皺眉頭。在這種情況下,我們會認為Precision的指標會比較重要,或者反應在ROC圖上,FPR盡量的小——自然,在保證FPR的基礎上,Recall依然還是重要的——畢竟用戶購買的是垃圾過濾,如果只是過濾了1條垃圾但是Precision=100%,這樣的東西看起來也沒什麽用——那麽綜合起來,我們也可以通過ROC的AUC來進行比較,面積較大的代表同樣的FPR下面,recall比較高。

但是,ROC的曲線——如上面幾位已經說過——有數據均衡的問題。在數據極度不平衡的情況下,譬如說1萬封郵件中只有1封垃圾郵件,那麽如果我挑出10封,50封,100,。。封垃圾郵件(假設全部包含真正的那封垃圾郵件),Recall都是100%,但是FPR分別是9/9999, 49/9999, 99/9999(數據都比較好看:FPR越低越好),而Precision卻只有1/10,1/50, 1/100 (數據很差:Precision越高越好)。所以在數據非常不均衡的情況下,看ROC的AUC可能是看不出太多好壞的,而PR curve就要敏感的多。(不過真實世界中,垃圾郵件也許與你的有用的郵件一樣多——甚至比有用的還更多。。。)

其次是搜索問題。搜索問題其實是一個排序問題,但我們往往會定義[email protected] K這樣的指標,即正確的答案有沒有被排在Top K中,如果是的話,就相當於判斷為“真”,反之則為“否”。這樣搜索問題就轉化為了一個二分類問題,唯一的問題是,這是一個典型的數據不均衡的case。很顯然,所有的候選集的數量是非常巨大的,但是K的數量不會很大(比如Top 10, Top 20)。

所以,在這個問題中,我們會主要看Precision-Recall curve。

更重要的是,一般而言,人們看搜索結果都不會太有耐心,所以希望Top K中的有用信息盡量多,換言之,[email protected] K的指標,是最核心的。

我們再考慮一個任務,機器閱讀理解(Machine Reading Comprehension, MRC),機器閱讀一篇文章以後人類向它提問,由機器回答。這時候,所謂的Precision,是指機器回答的答案中,正確的比例。但是在這個任務中,Recall同樣重要:機器也有可能回答不出來問題,但是“回答不出”,其實和“回答錯誤”是沒有差別的。在這樣的任務中,我們希望能夠公平的Balance Precision和Recall的一個數字,所以我們認為F1 Score是一個好的衡量指標。

然而如果我們的問題是多分類的問題,實際上這些指標就不適合了,我們需要看的是Confusion Matri:

技術分享

在上圖中,對於某一類別(比如貓)而言,錯誤會分為被誤判成狗或誤判成兔子兩種情形,共記9種不同的類別,其中三類(對角線上的元素)是分類正確的。顯然,僅僅用TP/TN/FP/FN這四類已經不足以分析這樣的問題了。

當然,指標也不僅限題主所列這幾種,這裏就不展開了。需要提一下的是,很多時候,能否有效的分析實驗結果,比單純算法上幾個點的差異,對結果的影響來的大得多。在沒有指定具體情況的時候談指標,是沒有任何意義的。

Reference:

The Relationship Between Precision-Recall and ROC Curves, http://pages.cs.wisc.edu/~jdavis/davisgoadrichcamera2.pdf

Differences between Receiver Operating Characteristic AUC (ROC AUC) and Precision Recall AUC (PR AUC) http://www.chioka.in/differences-between-roc-auc-and-pr-auc/

精確率、召回率、F1 值、ROC、AUC 各自的優缺點是什麽?