準確率-精確率-召回率
糾正下,精確率(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),也就是
而召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。那也有兩種可能,一種是把原來的正類預測成正類(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 是召回率
1. 選擇最佳的診斷界限值。ROC曲線越靠近左上角,試驗的準確性就越高。最靠近左上角的ROC曲線的點是錯誤最少的最好閾值,其假陽性和假陰性的總數最少
2. 兩種或兩種以上不同診斷試驗對演算法效能的比較。在對同一種演算法的兩種或兩種以上診斷方法進行比較時,可將各試驗的ROC曲線繪製到同一座標中,以直觀地鑑別優劣,靠近左上角的ROC曲線所代表的受試者工作最準確。亦可通過分別計算各個試驗的ROC曲線下的面積(AUC)進行比較,哪一種試驗的 AUC最大,則哪一種試驗的診斷價值最佳。
在閾值為 1.0 的情況下,我們將位於圖的左下方,因為沒有將任何資料點識別為正例,這導致沒有真正例,也沒有假正例(TPR = FPR = 0)。當降低閾值時,我們將更多的資料點識別為正例,導致更多的真正例,但也有更多的假正例 ( TPR 和 FPR 增加)。最終,在閾值 0.0 處,我們將所有資料點識別為正,並發現位於 ROC 曲線的右上角 ( TPR = FPR = 1.0 )。