機器學習(ML),自然語言處理(NLP),信息檢索(IR)等領域,評估(Evaluation)是一個必要的 工作,而其評價指標往往有如下幾點:准確率(Accuracy),精確率(Precision),召回率(Recall)和F1-Measure。(注: 相對來說,IR 的 ground truth 很多時候是一個 Ordered List, 而不是一個 Bool 類型的 Unordered Collection,在都找到的情況下,排在第三名還是第四名損失並不是很大,而排在第一名和第一百名,雖然都是“找到了”,但是意義是不一樣的,因此 更多可能適用於 MAP 之類評估指標。)
本文將簡單介紹其中幾個概念。中文中這幾個評價指標翻譯各有不同,所以一般情況下推薦使用英文。
現在我先假定一個具體場景作為例子。
假如某個班級有男生80人,女生20人,共計100人.目標是找出所有女生.
現在某人挑選出50個人,其中20人是女生,另外還錯誤的把30個男生也當作女生挑選出來了.
作為評估者的你需要來評估(evaluation)下他的工作
首先我們可以計算准確率(accuracy),其定義是: 對於給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。也就是損失函數是0-1損失時測試數據集上的准確率[1].
這樣說聽起來有點抽象,簡單說就是,前面的場景中,實際情況是那個班級有男的和女的兩類,某人(也就是定義中所說的分類器)他又把班級中的人分為男女兩類。accuracy需要得到的是此君分正確的人占總人數的比例。很容易,我們可以得到:他把其中70(20女+50男)人判定正確了,而總人數是100人,所以它的accuracy就是70 %(70 / 100).
由准確率,我們的確可以在一些場合,從某種意義上得到一個分類器是否有效,但它並不總是能有效的評價一個分類器的工作。舉個例子,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)的公式是
,它計算的是所有"正確被檢索的item(TP)"占所有"實際被檢索到的(TP+FP)"的比例.
在例子中就是希望知道此君得到的所有人中,正確的人(也就是女生)占有的比例.所以其precision也就是40%(20女生/(20女生+30誤判為女生的男生)).
召回率(recall)的公式是
,它計算的是所有"正確被檢索的item(TP)"占所有"應該檢索到的item(TP+FN)"的比例。
在例子中就是希望知道此君得到的女生占本班中所有女生的比例,所以其recall也就是100%(20女生/(20女生+ 0 誤判為男生的女生))
F1值就是精確值和召回率的調和均值,也就是

調整下也就是

例子中 F1-measure 也就是約為 57.143%(
).
需要說明的是,有人[2]列了這樣個公式

將F-measure一般化.
F1-measure認為精確率和召回率的權重是一樣的,但有些場景下,我們可能認為精確率會更加重要,調整參數a,使用Fa-measure可以幫助我們更好的evaluate結果.
話雖然很多,其實實現非常輕松,點擊此處可以看到我的一個簡單的實現.
References
[1] 李航. 統計學習方法[M]. 北京:清華大學出版社,2012.
[2] 准確率(Precision)、召回率(Recall)以及綜合評價指標(F1-Measure )
假設一個班級有100個學生,其中男生70人,女生30人。如下圖,藍色矩形表示男生,橙色矩形表示女生。
又假設,我們不知道這些學生的性別,只知道他們的身高和體重。我們有一個程序(分類器),這個程序可以通過分析每個學生的身高和體重,對這100個學生的性別分別進行預測。最后的預測結果為,60人為男生,40人為女生,如下圖。
TP:實際為男生,預測為男生;
FP:實際為女生,預測為男生;
FN:實際為男生,預測為女生;
TN:實際為女生,預測為女生;

- 准確率(Accuracy) = (TP + TN) / 總樣本 =(40 + 10)/100 = 50%。 定義是: 對於給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。
- 精確率(Precision) = TP / (TP + FP) = 40/60 = 66.67%。它表示:預測為正的樣本中有多少是真正的正樣本,它是針對我們預測結果而言的。Precision又稱為查准率。
- 召回率(Recall) = TP / (TP + FN) = 40/70 = 57.14% 。它表示:樣本中的正例有多少被預測正確了, 它是針對我們原來的樣本而言的。Recall又稱為查全率。
可以看到,上面的預測結果並不是很好。假設我們優化了程序后,再次進行預測。預測結果為:

- 准確率(Accuracy) = (TP + TN) / 總樣本 =(50 + 20)/100 = 70%
- 精確率(Precision) = TP / (TP + FP) = 50/60 = 83%
- 召回率(Recall) = TP / (TP + FN) = 50/70 = 71.43%
各項指標都比第一次高,說明預測效果更好。從圖上也能看出來,預測為男生的范圍與實際男生范圍更接近。
==================================================
自己理解 + 我老師的說法就是,准確率就是找得對,召回率就是找得全。
大概就是你問問一個模型,這堆東西是不是某個類的時候,准確率就是 它說是,這東西就確實是的概率吧,召回率就是, 它說是,但它漏說了(1-召回率)這么多。
==================================================
在信息檢索、分類體系中,有一系列的指標,搞清楚這些指標對於評價檢索和分類性能非常重要,因此最近根據網友的博客做了一個匯總。
准確率、召回率、F1
信息檢索、分類、識別、翻譯等領域兩個最基本指標是召回率(Recall Rate)和准確率(Precision Rate),召回率也叫查全率,准確率也叫查准率,概念公式:
召回率(Recall) = 系統檢索到的相關文件 / 系統所有相關的文件總數
准確率(Precision) = 系統檢索到的相關文件 / 系統所有檢索到的文件總數
圖示表示如下:

B:檢索到的,但是不相關的 (搜到的但沒用的)
C:未檢索到的,但卻是相關的 (沒搜到,然而實際上想要的)
D:未檢索到的,也不相關的 (沒搜到也沒用的)
注意:准確率和召回率是互相影響的,理想情況下肯定是做到兩者都高,但是一般情況下准確率高、召回率就低,召回率低、准確率高,當然如果兩者都低,那是什么地方出問題了。一般情況,用不同的閥值,統計出一組不同閥值下的精確率和召回率,如下圖:

如果是做搜索,那就是保證召回的情況下提升准確率;如果做疾病監測、反垃圾,則是保准確率的條件下,提升召回。
所以,在兩者都要求高的情況下,可以用F1來衡量。
- F1 = * P * R / (P + R)
公式基本上就是這樣,但是如何算圖1中的A、B、C、D呢?這需要人工標注,人工標注數據需要較多時間且枯燥,如果僅僅是做實驗可以用用現成的語料。當然,還有一個辦法,找個一個比較成熟的算法作為基准,用該算法的結果作為樣本來進行比照,這個方法也有點問題,如果有現成的很好的算法,就不用再研究了。
AP和mAP(mean Average Precision)
mAP是為解決P,R,F-measure的單點值局限性的。為了得到 一個能夠反映全局性能的指標,可以看考察下圖,其中兩條曲線(方塊點與圓點)分布對應了兩個檢索系統的准確率-召回率曲線

可以看出,雖然兩個系統的性能曲線有所交疊但是以圓點標示的系統的性能在絕大多數情況下要遠好於用方塊標示的系統。
從中我們可以 發現一點,如果一個系統的性能較好,其曲線應當盡可能的向上突出。
更加具體的,曲線與坐標軸之間的面積應當越大。
最理想的系統, 其包含的面積應當是1,而所有系統的包含的面積都應當大於0。這就是用以評價信息檢索系統的最常用性能指標,平均准確率mAP其規范的定義如下:(其中P,R分別為准確率與召回率)

ROC和AUC
ROC和AUC是評價分類器的指標,上面第一個圖的ABCD仍然使用,只是需要稍微變換。

回到ROC上來,ROC的全名叫做Receiver Operating Characteristic。
ROC關注兩個指標
True Positive Rate ( TPR ) = TP / [ TP + FN] ,TPR代表能將正例分對的概率
False Positive Rate( FPR ) = FP / [ FP + TN] ,FPR代表將負例錯分為正例的概率
在ROC 空間中,每個點的橫坐標是FPR,縱坐標是TPR,這也就描繪了分類器在TP(真正的正例)和FP(錯誤的正例)間的trade-off。ROC的主要分 析工具是一個畫在ROC空間的曲線——ROC curve。我們知道,對於二值分類問題,實例的值往往是連續值,我們通過設定一個閾值,將實例分類到正類或者負類(比如大於閾值划分為正類)。因此我們 可以變化閾值,根據不同的閾值進行分類,根據分類結果計算得到ROC空間中相應的點,連接這些點就形成ROC curve。ROC curve經過(0,0)(1,1),實際上(0, 0)和(1, 1)連線形成的ROC curve實際上代表的是一個隨機分類器。一般情況下,這個曲線都應該處於(0, 0)和(1, 1)連線的上方。如圖所示。

用ROC curve來表示分類器的performance很直觀好用。可是,人們總是希望能有一個數值來標志分類器的好壞。
於是Area Under roc Curve(AUC)就出現了。顧名思義,AUC的值就是處於ROC curve下方的那部分面積的大小。通常,AUC的值介於0.5到1.0之間,較大的AUC代表了較好的Performance。
AUC計算工具:
http://mark.goadrich.com/programs/AUC/
P/R和ROC是兩個不同的評價指標和計算方式,一般情況下,檢索用前者,分類、識別等用后者。
參考鏈接:
http://www.vanjor.org/blog/2010/11/recall-precision/
http://bubblexc.com/y2011/148/
http://wenku.baidu.com/view/ef91f011cc7931b765ce15ec.html
:Recall,又稱“查全率”——還是查全率好記,也更能體現其實質意義。
准確率
“召回率”與“准確率”雖然沒有必然的關系(從上面公式中可以看到),在實際應用中,是相互制約的。要根據實際需求,找到一個平衡點。
當 我們問檢索系統某一件事的所有細節時(輸入檢索query查詢詞),Recall指:檢索系統能“回憶”起那些事的多少細節,通俗來講就是“回憶的能 力”。“能回憶起來的細節數” 除以 “系統知道這件事的所有細節”,就是“記憶率”,也就是recall——召回率。簡單的,也可以理解為查全率。
________________________________________________________________
在人工智能中,混淆矩陣(confusion matrix)是可視化工具,特別用於監督學習,在無監督學習一般叫做匹配矩陣。
| 預測 | ||||
|
類1
|
類2
|
類3
|
||
| 實際 |
類1
|
43
|
5
|
2
|
|
類2
|
2
|
45
|
3
|
|
|
類3
|
0
|
1
|
49
|
|
第一行說明類1的50個樣本有43個分類正確,5個錯分為類2,2個錯分為類3
Precision表示被分為正例的示例中實際為正例的比例,precision=TP/(TP+FP)。即,一個二分類,類別分別命名為1和2,Precision就表示在類別1中,分對了的數量占了類別1總數量的多少;同理,也表示在類別2中,分對了的數量占類別2總數量的多少。那么這個指標越高,就表示越整齊不混亂。
而Accuracy是我們最常見的評價指標,accuracy = (TP+TN)/(P+N),這個很容易理解,就是被分對的樣本數除以所有的樣本數,通常來說,正確率越高,分類器越好。我們最常說的就是這個准確率。
---------------------
作者:diligentlee
來源:CSDN
原文:https://blog.csdn.net/diligentlee/article/details/80020713
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
