天天看點

深度學習評價名額Precision和Recall

原文:https://zhuanlan.zhihu.com/p/91206205

另一解釋:https://www.cnblogs.com/pprp/p/11241954.html

常用的性能評價名額有Precision,Recall和F1 score。

當面對不同的任務時,該如何提高recall和precision?

思考:對于Precision值,其代表的是你所預測出來準确結果占所有預測結果的準确性,對于Recall值,其代表的是你所預測出來準确結果占總體正樣本的準确性。這樣說有點難了解,舉個例子吧。現在你手上有10個雞蛋,裡面有6個是好的,另外4個是壞的,你訓練出一個模型,檢測出8個雞蛋是好的,但實際上隻有5個是好的,另外3個是壞的。那麼模型的Precision值為5/8=0.625,即表示你所預測出來的8個雞蛋中隻有5個是好的,其值隻在你預測結果中計算得到,Recall值為5/6=0.833,即表示總共有6個正樣本,你預測出來5個,表示的是你預測出來的正樣本占總正樣本的比例。(正樣本了解為你要檢測的目标)

即可以這樣簡單記為:

recall也叫召回率,記做R,表示你預測的結果中有多少正樣本被正确檢測出來,當R=100%的時候,表示沒有漏檢;

precision也叫精确率,記做P,表示你預測的結果中有多少樣本是正确的,當P=100%的時候,表示沒有誤檢。

清楚這個,我們就能根據不同的任務來對應提高Precision或者Recall值,一般來說,提高一個,另一個的值則會降低。是以AP曲線是由Recall和Precision兩個次元下曲線下面包圍的面積,一般Recall比較低的時候,Precision比較高,Recall比較高的時候,Precision會比較低。

對于MAP,上面所訴表示對于每一類計算的AP值,如果你有檢測多個類别,比如貓,狗等,那麼再取個mean,就得到MAP。那麼對于MMAP,這裡需要再解釋一下什麼是預測的正樣本,當我們回歸的框與真實的Groundtruth的框之間的IOU大于0.5時,我們就認為這個預測的框是準确的(首先要保證分類得分大于設定的門檻值)這個一般是大家都預設遵守的。那麼在coco資料後,會針對不同的IOU門檻值(如0.5,0.6,…,0.9等)得到不同的MAP,綜合考慮計算即得到MMAP值。

從算法層面:a. 對于想提高Precision,使得二分類器預測的正例盡可能是真實正例,那麼應該提高二分類器預測正例的門檻值,使得預測出來的結果盡可能是正确的;對于想提高Recall,使得二分類器盡可能将真實的正例挑選出來,那麼應該降低二分類器預測正例門檻值,使得預測出來的結果盡可能包含更多的正樣本,即可以簡單調整socre的門檻值。

從資料層面:a. 對于想提高Precision,無非是你的模型對于某些樣本檢測錯誤,了解為對某些樣本的拟合能力不足,那麼在訓練過程中做好(線上/離線)資料增強,讓模型有足夠的泛化能力,即可提高Precision;對于想提高Recall,無非是有些樣本沒有正确檢測出來,即難樣本過多,可以進行線上難例挖掘和挑出難例樣本繼續訓練以提高模型能力。 (注意這裡的檢測錯誤和沒有檢測出來是兩個概念)

ML

繼續閱讀