1. 程式人生 > >準確率-精確率-召回率

準確率-精確率-召回率

糾正下,精確率(precision)和準確率(accuracy)是不一樣的,題主問的應該是精確率與召回率之間的差別。 Blog


一.定義辨析

- TP,True Positive

- FP,False Positive

- TN,True Negative

- FN,False Negative

精確率:precision = TP / (TP + FP)   分母是預測為正的樣本數

召回率:recall = TP / (TP + FN)  原來樣本中所有的正樣本數

準確率:accuracy = (TP + TN) / (TP+ FP + TN + FN)

精確率是針對我們預測結果而言的,它表示的是預測為正的樣本中有多少是真正的正樣本。

召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。

實際上非常簡單,精確率是針對我們預測結果而言的,它表示的是預測為正的樣本中有多少是真正的正樣本。那麼預測為正就有兩種可能了,一種就是把正類預測為正類(TP),另一種就是把負類預測為正類(FP),也就是
P  = \frac{TP}{TP+FP}
召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。那也有兩種可能,一種是把原來的正類預測成正類(TP),另一種就是把原來的正類預測為負類(FN)。
R = \frac{TP}{TP+FN}

其實就是分母不同,一個分母是預測為正的樣本數,另一個是原來樣本中所有的正樣本數

舉個栗子

假設我們手上有60個正樣本,40個負樣本,我們要找出所有的正樣本,系統查找出50個,其中只有40個是真正的正樣本,計算上述各指標。
  • TP: 將正類預測為正類數 40
  • FN: 將正類預測為負類數 20
  • FP: 將負類預測為正類數 10
  • TN: 將負類預測為負類數 30

準確率(accuracy) = 預測對的/所有 = (TP+TN)/(TP+FN+FP+TN) = 70%
精確率(precision) = TP/(TP+FP) = 80%
召回率(recall) = TP/(TP+FN) = 2/3

而F值,則是綜合這二者指標的評估指標,用於綜合反映整體的指標。
F值  = 正確率 * 召回率 * 2 / (正確率 + 召回率) (F 值即為正確率和召回率的調和平均值)。

調和平均值公式:

ROC

ROC 曲線在 Y 軸上畫出了真正例率(TPR),在 X 軸上畫出了假正例率 (FPR)(在所有真假中有多少被標記位假真了)。TPR 是召回率

,FPR 是反例被報告為正例的概率。這兩者都可以通過混淆矩陣計算得到。

1.  選擇最佳的診斷界限值。ROC曲線越靠近左上角,試驗的準確性就越高。最靠近左上角的ROC曲線的點是錯誤最少的最好閾值,其假陽性和假陰性的總數最少

2.  兩種或兩種以上不同診斷試驗對演算法效能的比較。在對同一種演算法的兩種或兩種以上診斷方法進行比較時,可將各試驗的ROC曲線繪製到同一座標中,以直觀地鑑別優劣,靠近左上角的ROC曲線所代表的受試者工作最準確。亦可通過分別計算各個試驗的ROC曲線下的面積(AUC)進行比較,哪一種試驗的 AUC最大,則哪一種試驗的診斷價值最佳。

  在閾值為 1.0 的情況下,我們將位於圖的左下方,因為沒有將任何資料點識別為正例,這導致沒有真正例,也沒有假正例(TPR = FPR = 0)。當降低閾值時,我們將更多的資料點識別為正例,導致更多的真正例,但也有更多的假正例 ( TPR 和 FPR 增加)。最終,在閾值 0.0 處,我們將所有資料點識別為正,並發現位於 ROC 曲線的右上角 ( TPR = FPR = 1.0 )。