基於實例數據詳解準確率和召回率

摘要:信息檢索、分類、識別、翻譯等領域兩個最基本指標是準確率(precision rate)和召回率(recall rate),準確率也叫查準率,召回率也叫查全率。

本文分享自華爲雲社區《準確率、召回率及AUC概念分析》,作者: savioyo。

信息檢索、分類、識別、翻譯等領域兩個最基本指標是準確率(precision rate)和召回率(recall rate),準確率也叫查準率,召回率也叫查全率。這些概念非常重要的一個前提是針對特定的分類器和測試集的,即不同的數據集也會導致不同的結果。

  • True Positives,TP:預測爲正樣本,實際也爲正樣本的特徵數
  • False Positives,FP:預測爲正樣本,實際爲負樣本的特徵數(錯預測爲正樣本了,所以叫False)
  • True Negatives,TN:預測爲負樣本,實際也爲負樣本的特徵數
  • False Negatives,FN:預測爲負樣本,實際爲正樣本的特徵數(錯預測爲負樣本了,所以叫False)
  • TP+FP+FN+FN:特徵總數(樣本總數)
  • TP+FN:實際正樣本數
  • FP+TN:實際負樣本數
  • TP+FP:預測結果爲正樣本的總數
  • TN+FN:預測結果爲負樣本的總數

通過醫生診病的例子來理解和記憶。

假設下面的場景:

醫生爲病人看病,病人是否有病與醫生是否正確診斷,兩個條件兩兩組合就形成了四種可能性。

  • 病人有病並且被醫生正確診斷,屬於TP,即真陽性;
  • 病人有病並且被醫生錯誤診斷,屬於FN,即假陰性;
  • 病人無病並且被醫生正確診斷,屬於TN,即真陰性;
  • 病人無病並且被醫生錯誤診斷,屬於FP,即假陽性;

再舉一個動作識別的例子。

假定測試集合爲100條數據,其中90條數據被模型判定爲駕車,10條數據被判定爲步行。在被判定爲駕車的90條數據中,有80條數據是被正確判斷的,10條數據是被錯誤判斷的;在被判定爲步行的10條數據中,有6條數據是被正確判斷的,4條數據是被錯誤判斷的。那麼,我們將這四個數據填寫到表格中。

  • TP = 80; FP = 10
  • FN = 4; TN = 6

這些數據都是針對駕車這一個類別來分類的,也就是準確率和召回率是針對某一個特定的類別來說的。
準確率的計算爲 80 / (80 + 10) = 8/9,召回率的計算爲80 / (80 + 4) = 20/21。

再舉一個例子,這個例子是我最初用來理解準確率和召回率的例子,但是在我真正理解了準確率和召回率之後,這個例子反而具有了迷惑性。下面是網絡上傳的比較多的版本。

某池塘有1400條鯉魚,300只蝦,300只鱉。現在以捕鯉魚爲目的。撒一大網,逮着了700條鯉魚,200只蝦,100只鱉。那麼,這些指標分別如下:

正確率 = 700 / (700 + 200 + 100) = 70%

召回率 = 700 / 1400 = 50%

如果將池子裏的所有的鯉魚、蝦和鱉都一網打盡,這些指標則變化爲如下:

正確率 = 1400 / (1400 + 300 + 300) = 70%

召回率 = 1400 / 1400 = 100%

之所以說這個例子有迷惑性,是我們應該用什麼數據來填寫上述的表格呢,也就是如何找到TP、FP、FN、TN呢?其實這個例子,有一些條件被默認了,或者被隱藏了,沒有直接寫出來。首先,這2000個生物是我們的整體的測試集合,當我們以鯉魚爲目的來進行分類時,將其中的1000個標記爲鯉魚類,剩餘的1000個標記爲非鯉魚類,其中標記爲鯉魚類的1000箇中,700個是被正確標記的,300個是被錯誤標記的;標記爲非鯉魚類的1000箇中,700個是被錯誤標記的,300個是被正確標記的。其次,分類器是漁網開始捕捉時的行爲,而不是已經捕捉完成之後的分類行爲。

  • TP = 700; FP = 300
  • FN = 700; TN = 300

計算公式

準確率 = 系統檢索到的相關文件/系統所有檢索到的文件總數 (TP/(TP+FP))

召回率 = 系統檢索到的相關文件/系統所有相關的文件總數 (TP/(TP+FN))

F值 = 準確率 * 召回率 * 2 / (正確率 + 召回率),F值即爲正確率和召回率的調和平均值

準確率和召回率是互相影響的,理想情況下肯定是做到兩者都高,但是一般情況下準確率高、召回率就低;召回率高、準確率就低,當然如果兩者都低,那是什麼地方出問題了。一般情況下,用不同的閾值(此處可認爲是不同的模型),統計出一組不同閾值下的準確率和召回率,如下圖:

如果是做搜索,那就是保證召回的情況下提升準確率;如果做疾病監測、反垃圾,則是保證準確率的條件下,提升召回。所以,如果在兩者要求都高的情況下,可以用F值來衡量。

ROC&&AUC

ROC和AUC是評價分類器的指標,ROC的全名是Receiver Operating Characteristic。

ROC關注兩個指標:

True Positive Rate(TPR) = TP / (TP + FN),TPR代表能將正例分對的概率

False Positive Rate(FPR) = FP / (FP + TN),FPR代表將負例錯分爲正例的概率

在ROC空間中,每個點的橫座標是FPR,縱座標是TPR,這也描述了分類器在TP(真正的正例)和FP(錯誤的正例)間的trade-off。ROC的主要分析工具是一個畫在ROC空間的曲線——ROC curve。我們知道,對於二值分類問題,實例的值往往是連續值,我們通過設定一個閾值,根據不同的閾值進行分類,根據分類結果計算得到ROC空間中相應的點,連接這些點就形成ROC curve。ROC curve經過(0,0),(1,1),實際上(0,0),(1,1)連線形成的ROC curve實際上代表的是一個隨機分類器。一般情況下,這個曲線都應該處於(0,0),(1,1)連線的上方。如圖所示:

用ROC curve來表示分類器的performance很直觀好用。可是,人們總希望能有一個數值來標識分類器的好壞。於是Area Under roc Curve(AUC)就出現了。顧名思義,AUC的值就是處於ROC curve下方的那部分面積的大小。通常,AUC的值介於0.5到1.0之間,較大的AUC代表了較好的performance。

從Mann-Whitney U statistic的角度來解釋,AUC就是從所有1樣本中隨機選取一個樣本,從所有0樣本中隨機選取一個樣本,然後根據你的分類器對兩個隨機樣本進行預測,把1樣本預測爲1的概率爲p1,把0預測爲1的概率爲p0,p1 > p0的概率就等於AUC。所以AUC反映的是分類器對樣本的排序能力。根據這個解釋,如果我們完全隨機的對樣本分類,那麼AUC應該接近0.5。

AUC&&PR

一個分類算法,找個最優的分類效果,對應到ROC空間中的一個點。通常分類器的輸出都是Score,比如SVM、神經網絡,有如下的預測結果:

TABLE 一般分類器的結果都是Score表

True表示實際樣本屬性,Hyp表示預測結果樣本屬性,第4列即是Score,Hyp的結果通常是設定一個閾值,比如上表就是0.5,Score>0.5爲正樣本,小於0.5爲負樣本,這樣只能算出一個ROC值,爲更綜合的評價算法的效果,通過取不同的閾值,得到多個ROC空間的值,將這些值描繪出ROC空間的曲線,即爲ROC曲線。

有了ROC曲線,更加具有參考意義的評價指標就有了,在ROC空間,算法繪製的ROC曲線越凸向左上方向效果越好,有時不同分類算法的ROC曲線存在交叉,因此很多文章裏用AUC(即Area Under Curve曲線下的面積)值作爲算法好壞的評判標準。

與ROC曲線左上凸不同的是,PR曲線是右上凸效果越好,下面是兩種曲線凸向的簡單比較:

作爲衡量指標,選擇ROC或PR都是可以的。但是參考資料顯示,ROC和PR雖然具有相同的出發點,但並不一定能得到相同的結論,在寫論文的時候也只能參考着別人已有的進行選擇了。

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

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