1. 程式人生 > 實用技巧 >61-精準率和召回率

61-精準率和召回率

精準率和召回率

  上一篇部落格介紹了混淆矩陣,它是在分類任務中非常重要的工具,我們通過混淆矩陣可以得到更加好的來衡量我們的分類演算法好壞的指標。這一篇部落格主要介紹兩個通過混淆矩陣才可以得到的指標:精準率和召回率

  我們拿出上一篇部落格中癌症預測的例子所得到的混淆矩陣:

在這裡插入圖片描述
  

  那麼精準率( p r e c i s i o n precision precision),它的計算公式是:

在這裡插入圖片描述

  那麼我們將實際資料代入得到的精準率為:

在這裡插入圖片描述

  所謂的精準率,就是預測資料為 1,相應預測對了的概率是多少。

在這裡插入圖片描述
  為什麼把這個值作為精準率呢?這是因為通常我們在這種有偏的資料中我們將分類 1 作為我們真正關注的物件,比如說在醫療中,我們將 1 作為真正的患病。換句話說,如果這個混淆矩陣是一個癌症預測系統,這個精準率就是指預測癌症的成功率。在這裡精準率為 40%,就可以解釋為每做 100 次患病的預測,平均有 40 次預測是對的。再比如放在金融系統中,我們可能想要預測一個人申請信用卡是否有風險,這種時候我們通常都會把類別 1 作為有風險的那一類人群,這是因為有風險的這類人群是我們關注的物件。

  所以在這裡需要注意,在有偏的資料中,我們通常都將 1 作為我們關注的那個事件,所以精準率就是我們預測我們關注的那個事件的準確率。

  那麼和精準率相對應的是召回率( r e c a l l recall recall)。它的計算方式如下:

在這裡插入圖片描述
  那麼將具體數字代入計算得:

在這裡插入圖片描述
  召回率的分母就是真實值為 1 的那一行,而分子代表的是真實值為 1,並且預測值也為 1 的資料個數,換句話說,就是我們關注的事件發生了並且正確預測相應的數量。對於精準率,它們的分子都是 T P TP TP,不同的在分母,召回率的分母為真實值的那一行的資料總和,而精準率的分母為預測值的那一列的資料總和。

  那麼召回率為 80%,可以解釋為每當有 100 個癌症患者的話,通過我們現在的機器學習演算法,我們能夠成功的找到其中 80 個癌症患者。

  一定要注意精準率和召回率的區別!!下面這張圖也很好的反映了精準率和召回率的區別。

在這裡插入圖片描述
  
  最後我們再來說說為什麼精準率和召回率是比之前的分類準確度更好的指標呢?

  我們還是以癌症預測系統為例,假設我們有 10000 個人,我們預測所有人都是健康的,那麼相應的混淆矩陣如下:

在這裡插入圖片描述
  
  那麼相應的準確率為 99.9%,相應的精準率為 0 / (0 + 0) 沒有任何意義。那麼我們相應的召回率 0 / (10 + 0) = 0 也是 0。所以對於這個預測系統來說,儘管它的準確率高達 99.9%,但是它的召回率和精準率都是 0。所以通過這兩個指標判斷出來了這個預測演算法是完全沒有用的,這就是精準率和召回率的意義。在極其有偏的資料中,不看準確率,而看精準率和召回率才能夠更加好的評價我們的分類系統的好壞。