糾正下,精確率(precision)和準確率(accuracy)是不同的,題主問的應該是精確率與召回率之間的差異。 Blog
一.定義辨析算法
- TP,True Positive
- FP,False Positive
- TN,True Negative
- FN,False Negative併發
精確率:precision = TP / (TP + FP) 分母是預測爲正的樣本數性能
召回率:recall = TP / (TP + FN) 原來樣本中全部的正樣本數spa
準確率:accuracy = (TP + TN) / (TP+ FP + TN + FN)htm
精確率是針對咱們預測結果而言的,它表示的是預測爲正的樣本中有多少是真正的正樣本。ci
召回率是針對咱們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。get
實際上很是簡單,精確率是針對咱們預測結果而言的,它表示的是預測爲正的樣本中有多少是真正的正樣本。那麼預測爲正就有兩種可能了,一種就是把正類預測爲正類(TP),另外一種就是把負類預測爲正類(FP),也就是it
而召回率是針對咱們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。那也有兩種可能,一種是把原來的正類預測成正類(TP),另外一種就是把原來的正類預測爲負類(FN)。io
其實就是分母不一樣,一個分母是預測爲正的樣本數,另外一個是原來樣本中全部的正樣本數class
舉個栗子
假設咱們手上有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 曲線在 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 )。