准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure(对于二分类问题)
首先我們可以計算準確率(accuracy),其定義是: 對于給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。也就是損失函數是0-1損失時測試數據集上的準確率。
下面在介紹時使用一下例子:
一個班級有20個女生,80個男生。現在一個分類器需要從100人挑選出所有的女生。該分類器從中選出了50人,其中20個女生,30個男生。
?
準確率是指分類器正確分類的比例。正確分類是指正確的識別了一個樣本是正例還是負例。例如分類器正確識別了20個女生和50個男生,正確識別的樣本數是70個,因此該分類器的準確率是70%.
?
對于二分類問題,僅僅通過準確率不能很好的衡量分類器的性能,比如:
由準確率,我們的確可以在一些場合,從某種意義上得到一個分類器是否有效,但它并不總是能有效的評價一個分類器的工作。舉個例子,google抓取了argcv 100個頁面,而它索引中共有10,000,000個頁面,隨機抽一個頁面,分類下,這是不是argcv的頁面呢?如果以accuracy來判斷我的工作,那我會把所有的頁面都判斷為"不是argcv的頁面",因為我這樣效率非常高(return false,一句話),而accuracy已經到了99.999%(9,999,900/10,000,000),完爆其它很多分類器辛辛苦苦算的值,而我這個算法顯然不是需求期待的,那怎么解決呢?這就是precision,recall和f1-measure出場的時間了.
?
在說precision,recall和f1-measure之前,我們需要先需要定義TP,FN,FP,TN四種分類情況. 按照前面例子,我們需要從一個班級中的人中尋找所有女生,如果把這個任務當成一個分類器的話,那么女生就是我們需要的,而男生不是,所以我們稱女生為"正類",而男生為"負類".
?
| ? | 相關(Relevant),正類 | 無關(NonRelevant),負類 |
| 被檢索到(Retrieved) | true positives(TP 正類判定為正類,例子中就是正確的判定"這位是女生") | false positives(FP 負類判定為正類,"存偽",例子中就是分明是男生卻判斷為女生,當下偽娘橫行,這個錯常有人犯) |
| 未被檢索到(Not Retrieved) | false negatives(FN 正類判定為負類,"去真",例子中就是,分明是女生,這哥們卻判斷為男生--梁山伯同學犯的錯就是這個) | true negatives(TN 負類判定為負類,也就是一個男生被判斷為男生,像我這樣的純爺們一準兒就會在此處) |
?通過這張表,我們可以很容易得到這幾個值: TP=20 FP=30 FN=0 TN=50
精確率(precision)的公式是P = \frac{TP}{TP+FP}P=TP+FPTP?,它計算的是所有"正確被檢索的item(TP)"占所有"實際被檢索到的(TP+FP)"的比例.
對于本文的例子來說,實際檢索到了50個人,但是其中只有20個是正確的樣本。因此精確率是40%
召回率(recall)的公式是R = \frac{TP}{TP+FN}R=TP+FNTP?,它計算的是所有"正確被檢索的item(TP)"占所有"應該檢索到的item(TP+FN)"的比例。
?
對于本文的例子來說,正確被檢索到的樣本為20個,全部應該被檢索到的樣本也是20個,因此召回率是100%
F1值就是精確值和召回率的調和均值,也就是
2/F1 = 1/P + 1/R
?
?
參考資料:
https://blog.argcv.com/articles/1036.c
?
轉載于:https://www.cnblogs.com/earendil/p/8126341.html
總結
以上是生活随笔為你收集整理的准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure(对于二分类问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下从零开始部署和使用Jaege
- 下一篇: 翻译:通向T-SQL的阶梯:超越基础水平