Recall, Precision, and Average Precision

原博:https://blog.csdn.net/pkueecser/article/details/8229166

信息檢索(IR)的評價指標介紹 - 準確率、召回率、F1、mAP、ROC、AUC

分類: 1.自然語言處理/機器學習

在信息檢索、分類體系中,有一系列的指標,搞清楚這些指標對於評價檢索和分類性能非常重要,因此最近根據網友的博客做了一個彙總。

準確率、召回率、F1

信息檢索、分類、識別、翻譯等領域兩個最基本指標是召回率(Recall Rate)準確率(Precision Rate),召回率也叫查全率,準確率也叫查準率,概念公式:

             召回率(Recall)      =  系統檢索到的相關文件 / 系統所有相關的文件總數

             準確率(Precision) =  系統檢索到的相關文件 / 系統所有檢索到的文件總數

圖示表示如下:


注意:準確率和召回率是互相影響的,理想情況下肯定是做到兩者都高,但是一般情況下準確率高、召回率就低,召回率低、準確率高,當然如果兩者都低,那是什麼地方出問題了。一般情況,用不同的閥值,統計出一組不同閥值下的精確率和召回率,如下圖:

 

 

如果是做搜索,那就是保證召回的情況下提升準確率;如果做疾病監測、反垃圾,則是保準確率的條件下,提升召回。

所以,在兩者都要求高的情況下,可以用F1來衡量。

  1. F1 = 2 * 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, Precision, and Average Precision


 以下內容絕大部分內容翻譯自:

Mu Zhu , Recall, Precision, and Average Precision. Working Paper 2004-09 Department of Statistics & Actuarial Science University of Waterloo.

 

1. 先介紹一些基礎內容和符號說明

 

C:一個很大item的集合。

π:集合中相關的item的集合(π<< 1)。

t:算法所識別出的item的集合。

h(t):t中確實相關的item的集合,通常這部分稱作命中(相反的是丟失)

 

下面看一些典型的“命中”曲線

 

假設其中相關item爲5%。

hP(t)曲線是理想的曲線,幾乎排在前面的所有的識別都命中了,直到5%,所有的相關item都耗盡了,曲線不再變化。

hR(t)曲線是隨機選擇的曲線

hA(t)和hB(t)是典型的識別曲線

(兩條曲線相交是可能的)

 

“命中曲線”能夠很清楚地告訴我們一個模型或者是算法的性能好壞。例如,如果在任何時候,有 hA(t)>hB(t),則算法A毫無疑問比算法B出色;如果一般情況下,一條曲線總是隨着t的增長而快速增長,則這個算法被認爲是強壯的;特別的,一個最好的算法應該擁有最大地斜率,直到 t=π。

然而,我們需要的不僅是對算法好壞的評估和比較,而是要往好的方面來調整算法。經常,我們需要半人工地來產生一些算法的最優經驗參數就像交叉驗證。舉例來說,對於

K - nearest-neighbor算法,我們必須選擇最合適的K,然後通過交叉驗證找出出色的值。因此,我們可以看到,我們更爲需要的是一個評估值,而不是一條曲線。

兩個數值化的評估方法通常是:recall和precision

 

2. 簡單介紹 Recall 和 Precision

簡單定義:

Recall:在所有item中識別出相關item的概率。

Precision:在算法所識別出的item中,真正相關的概率。

 

形式化定義:

設 ω  是集合 C 中隨機取出的一個元素

 

 

或者可以表示成

 

 

3. Recall 和 Precision 之間的關係

 

引理1:     

                      

 

證明:                      根據貝葉斯公式,可以得到:

注意:在這裏,我們將Precision和Recall都看作是關於自變量 t  的函數,因爲一般來說,隨着 t  的變化,算法的一些表現也會跟着變化。

            h(t) , r(t) , p(t) 都看作是連續光滑的曲線,因爲集合C足夠大。

 

 

引理2:

            1.  r(0) = 0       r(1) = 1       

            2.  r'(t) >= 0   (t∈[0,1])

 

證明:       

1. 顯然,當 t = 0 時,Recall必然爲0,因爲沒有item被檢測;

             當 t = 1 時,Recall必然等於1,因爲所有的item都被檢測了,那麼也必定包括所有相關的item;

2. 顯然,r (t+△t) > r(t) 或者 r (t+△t) = r(t)

    所以,r (t+△t) >=  r(t)

 

假設 t  在幾乎任何一點都可導,則有:

                     所以      r'(t) >= 0     ( t∈[0,1] ) 

 

引理2說明了 r(t) 是一個非遞減函數,而且對於一個典型的識別算法來說,一般都有 r''(t) <= 0,即識別率是漸漸減緩的,直觀上來說

隨着 t  的上升,識別變得越來越困難。          

 

假設1:假設 r(t) 是二次可微函數,則  r''(t) <= 0 ,     t∈[0,1].

引理3:假設 p(t) 可微,若假設1成立,則 p'(t)<= 0 ,     t∈[0,1].

證明:

            

根據中值定理,存在 S ∈[0,t]. 

                                             使得 r(t) - r(0) = r'(s) (t - 0)

                              ∵   r(0) = 0;

                              ∴   r(t) = r'(s)t

又根據假設1,    有   r''(t) <= 0

                         所以   r'(s) >= r'(t)    (s<=t)

                         所以   r'(s)t >= r'(t)t

                             即   r(t) >= r'(t)t

                             則   p'(t) <= 0

根據之前所證明的,r'(t) >= 0,可以看出,Recall和Precision的確存在某些相互影響的關係。

(此證明基於假設1,r(t)的二階導數小於等於0,即r''(t)是凸函數)


所以說,單用這兩個之中的某一個來評估和比較都不太合適,下面介紹的AP將會同時考慮Recall和Precision,因此常被用來作爲衡量和評估的標準。

 

 

 

4. Average Precision(AP)

首先,Precision能被表示成Recall的函數,p(r), 因爲 p(t) = π*r(t)/t ,具體見上所述。

 

AP的定義如下:

 

 引理4:設r(t)可微函,則:

              

 

某些情況下,AP並不怎麼直觀,當 r'(t) = 0時,p(t)必然decreasing in t (無論在哪個區間內)

上面這句話不是特別理解。。。。

然而,因爲dr爲0,那麼AP無論如何不會在此區間內發生變化。

 

 

下面舉一些例子:

1. Random Selection:

    假設 h(t) = π*t,即相關的比例在所有識別的比例中保持爲 π

        則 r(t) = h(t)/π = t

    此時:AP = π

 

2. Perfect Detection:

    h(t)= t  [0,π]   

    h(t)=π  (π,1]

    這說明:前π個識別,全部命中,即h(t) = t,當π被耗盡時,h(t) = π,保持不變

    這是最理想識別,也說明:

     r(t) = t/π   [0,π]   

     r(t) = 1     (π,1]

此時的AP = 1;

 

3. 實際應用中:

    假設有n個測試item,將他們根據置信度又高到底排列後,計算:

   

其中,△r(i)表示後一次識別後,recall的變化量,

           p(i)可表示爲:R/i  ,其中R前i個item中,相關的item個數。

因此AP也可表示爲:

其中,R表示測試集所有的relavant的item個數;

           n表示測試集中item的數量;

           Ij = 1,如果第j個item相關,否則,Ij = 0;

           Rj,前j個item中,相關的item個數;

下面看個例子:

假設這些item的置信度已經由高到底排列:

因此,算法A好於算法B。

由此也可以看出,AP這個衡量標準更偏愛識別得早的算法。

 

後略。

 

希望大家幫忙改正。



1.Precision & Recall

2.F-Score

3.ROC Curve ( Receiver Operatng Characteristics)

4.Area under the ROC curve

5.Eleven-point interpolated average precision

5.MAP (Mean average precision)

 

Precision & Recall

 

在Information Retrieval 中,最直接用來衡量一個model的效能就是Precision & Recall

Precision : Tp / Tp + Fp , 即表示在所有Retrieve出的document中,有多少是Relevance.

 

Recall : Tp / Tp + Tn ,   即表示在所有Relevance的document中,有多少是被Retrieve到.

 

在理論上,Precision跟Recall之間是無絕對的對應關係,

 

但在實際應用上,通常Precision會隨著Retrieval document越多而遞減,而Recall則會遞增.

 

For Example(假設database中,relevance的document數目為10)


document

Positive/Negtive

Precision

Recall

1

+

1/1=100%

1/10=10%

2

+

2/2=100%

2/10=20%

3

-

2/3=67%

2/10=20%

4

+

3/4=75%

3/10=30%

...

...

...

...

 

 

而如果我們要使用單一個measure來evaluation搜尋的效能,

使用的通常為F-Score.

 

F-Score

 

F-score就是Precision與Recall的調和平均數(Harmonic Mean),

 

即 F = 2/(1/p + 1/r) = 2pr/(p+r)

 

而有時也會給予Precision及Recall不同的權重(weight)來進行計算,

 

即F = 2 / [a*(1/p)+(1-a)*(1/r)] = (b*b+1)pr / (b*b)p+r

 

若取b=1則F就等同於原來的式子,

 

若b>1,代表weight較偏重於Recall,

 

若0<b<1,代表weight較偏重於Precision.

 

前面所介紹的Precison & Recall 以及 F-score,針對的都是未排序的document,

 

但在實際的search engine中,所search的結果之間都是經過排序的,

 

因此就有人提出了 Eleven-point interpolated average precision, MAP(Mean Average Precision)

 

以及NDCG (normal discount cumulative gain).

 

ROC Curve

 

Y軸為True Positive (或稱為sensitivity或recall),而X軸為False Positive (或稱為1-Specificity),

 

一個Query的回傳結果分為兩個Part,一個為相關的set,另一個為不相關的set,

 

而True Positive指的就是相關的set在所有相關的document中佔有多大比例.[即 tp / (tp + tn)]

 

False Positive則是指不相關的set在所有不相關的document中佔有多大的比例.[即 fp /(fp+fn)]

 

當一個system越好時,則它的ROC Curve會較偏向於左邊.

 

關於此點,我們固定Y軸來看,若一個System的 Recall越高,則有兩種狀況,

 

第一:回傳的Result不大,但Corpus中的Relevance document有很高的比例都被retrieval到了.

 

第二:回傳的Result很大,讓Corpus中的Relevance document有很高的比例都被retrieval到了.

 

如果為第一點,則False positive會很低,因為回傳的結果有大部份都是不相關,則整個ROC curve會

 

往左邊靠,但如果是第二點,則False positive會很高,因為回傳的結果有大部份都是不相關,

 

此時ROC curve會往右邊偏移.

 

因此可得知,若一個System較好,則其ROC Curve必定較為偏向右邊.(即起伏較快)

 

以下圖來講,C的curve在回傳較少的result時便可達到100% recall,

 

而A curve相對來說則需要較多的result才能達到100% recall.

 

因此C 這個System相對於A來說,其performance是較好的.

 

F1.small.gif 

(ref:http://clincancerres.aacrjournals.org/content/12/23/6985.full)

 

 

Area under the ROC Curve (AUC):

 

AUC即是計算ROC Curve的曲線下面積(即下圖的A區域),

 

以下圖來看,假設HR(C)代表的是回傳的結果中佔所有相關document的比例,

 

而FAR(C)則是代表回傳的結果中佔有不相關document的比例,

 

則此曲線下的面積值,即是HR(C)*FAR(C)再由0積分到1.

 

而其道理同ROC Curve,若AUC的value較高,則表示一個System可正確的區分

 

正確及錯誤的狀況.

image008.gif 

(ref:http://www.acadametrics.co.uk/roc.htm)

 

 

 

Eleven-point interpolated average precision


11-point interpolated average precision是將Recall分為11個等級,

 

分別為 0.0 , 0.1 , 0.2 , 0.3 , ... , 1.0 , 分別表示全部資料的 0% , 10% , 20% , ... , 100%

 

而每個等級上的precision則取目前此點之後的Max precision,而為什麼要這樣子 , 因為在

 

11-point interpolated average precision上的一個基本假設是:如果我們可以增加View set中

 

relevance document 的比利的話, 那user都會想要去看更多的document.

 

由此方法所繪出的Precision-Recall Curve在某種程度上就可以看出不同方法在document

 

ranking上的好壞.

 

MAP (Mean average precision)


MAP 不同於11-point interpolated average precision,它提供了使用single value來判讀

 

不同method在document ranking上的好壞,

 

它的計算方式如下:

 

1.首先先計算個別Query所retrieval出的average precision.

 

2.再將每個Query所得的average precision求其算數平均數(Arithmetic Mean),所得即為MAP.


信息檢索(IR)的評價指標介紹 - 準確率、召回率、F1、mAP、ROC、AUC

分類: 1.自然語言處理/機器學習

在信息檢索、分類體系中,有一系列的指標,搞清楚這些指標對於評價檢索和分類性能非常重要,因此最近根據網友的博客做了一個彙總。

準確率、召回率、F1

信息檢索、分類、識別、翻譯等領域兩個最基本指標是召回率(Recall Rate)準確率(Precision Rate),召回率也叫查全率,準確率也叫查準率,概念公式:

             召回率(Recall)      =  系統檢索到的相關文件 / 系統所有相關的文件總數

             準確率(Precision) =  系統檢索到的相關文件 / 系統所有檢索到的文件總數

圖示表示如下:


注意:準確率和召回率是互相影響的,理想情況下肯定是做到兩者都高,但是一般情況下準確率高、召回率就低,召回率低、準確率高,當然如果兩者都低,那是什麼地方出問題了。一般情況,用不同的閥值,統計出一組不同閥值下的精確率和召回率,如下圖:

 

 

如果是做搜索,那就是保證召回的情況下提升準確率;如果做疾病監測、反垃圾,則是保準確率的條件下,提升召回。

所以,在兩者都要求高的情況下,可以用F1來衡量。

  1. F1 = 2 * 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, Precision, and Average Precision


 以下內容絕大部分內容翻譯自:

Mu Zhu , Recall, Precision, and Average Precision. Working Paper 2004-09 Department of Statistics & Actuarial Science University of Waterloo.

 

1. 先介紹一些基礎內容和符號說明

 

C:一個很大item的集合。

π:集合中相關的item的集合(π<< 1)。

t:算法所識別出的item的集合。

h(t):t中確實相關的item的集合,通常這部分稱作命中(相反的是丟失)

 

下面看一些典型的“命中”曲線

 

假設其中相關item爲5%。

hP(t)曲線是理想的曲線,幾乎排在前面的所有的識別都命中了,直到5%,所有的相關item都耗盡了,曲線不再變化。

hR(t)曲線是隨機選擇的曲線

hA(t)和hB(t)是典型的識別曲線

(兩條曲線相交是可能的)

 

“命中曲線”能夠很清楚地告訴我們一個模型或者是算法的性能好壞。例如,如果在任何時候,有 hA(t)>hB(t),則算法A毫無疑問比算法B出色;如果一般情況下,一條曲線總是隨着t的增長而快速增長,則這個算法被認爲是強壯的;特別的,一個最好的算法應該擁有最大地斜率,直到 t=π。

然而,我們需要的不僅是對算法好壞的評估和比較,而是要往好的方面來調整算法。經常,我們需要半人工地來產生一些算法的最優經驗參數就像交叉驗證。舉例來說,對於

K - nearest-neighbor算法,我們必須選擇最合適的K,然後通過交叉驗證找出出色的值。因此,我們可以看到,我們更爲需要的是一個評估值,而不是一條曲線。

兩個數值化的評估方法通常是:recall和precision

 

2. 簡單介紹 Recall 和 Precision

簡單定義:

Recall:在所有item中識別出相關item的概率。

Precision:在算法所識別出的item中,真正相關的概率。

 

形式化定義:

設 ω  是集合 C 中隨機取出的一個元素

 

 

或者可以表示成

 

 

3. Recall 和 Precision 之間的關係

 

引理1:     

                      

 

證明:                      根據貝葉斯公式,可以得到:

注意:在這裏,我們將Precision和Recall都看作是關於自變量 t  的函數,因爲一般來說,隨着 t  的變化,算法的一些表現也會跟着變化。

            h(t) , r(t) , p(t) 都看作是連續光滑的曲線,因爲集合C足夠大。

 

 

引理2:

            1.  r(0) = 0       r(1) = 1       

            2.  r'(t) >= 0   (t∈[0,1])

 

證明:       

1. 顯然,當 t = 0 時,Recall必然爲0,因爲沒有item被檢測;

             當 t = 1 時,Recall必然等於1,因爲所有的item都被檢測了,那麼也必定包括所有相關的item;

2. 顯然,r (t+△t) > r(t) 或者 r (t+△t) = r(t)

    所以,r (t+△t) >=  r(t)

 

假設 t  在幾乎任何一點都可導,則有:

                     所以      r'(t) >= 0     ( t∈[0,1] ) 

 

引理2說明了 r(t) 是一個非遞減函數,而且對於一個典型的識別算法來說,一般都有 r''(t) <= 0,即識別率是漸漸減緩的,直觀上來說

隨着 t  的上升,識別變得越來越困難。          

 

假設1:假設 r(t) 是二次可微函數,則  r''(t) <= 0 ,     t∈[0,1].

引理3:假設 p(t) 可微,若假設1成立,則 p'(t)<= 0 ,     t∈[0,1].

證明:

            

根據中值定理,存在 S ∈[0,t]. 

                                             使得 r(t) - r(0) = r'(s) (t - 0)

                              ∵   r(0) = 0;

                              ∴   r(t) = r'(s)t

又根據假設1,    有   r''(t) <= 0

                         所以   r'(s) >= r'(t)    (s<=t)

                         所以   r'(s)t >= r'(t)t

                             即   r(t) >= r'(t)t

                             則   p'(t) <= 0

根據之前所證明的,r'(t) >= 0,可以看出,Recall和Precision的確存在某些相互影響的關係。

(此證明基於假設1,r(t)的二階導數小於等於0,即r''(t)是凸函數)


所以說,單用這兩個之中的某一個來評估和比較都不太合適,下面介紹的AP將會同時考慮Recall和Precision,因此常被用來作爲衡量和評估的標準。

 

 

 

4. Average Precision(AP)

首先,Precision能被表示成Recall的函數,p(r), 因爲 p(t) = π*r(t)/t ,具體見上所述。

 

AP的定義如下:

 

 引理4:設r(t)可微函,則:

              

 

某些情況下,AP並不怎麼直觀,當 r'(t) = 0時,p(t)必然decreasing in t (無論在哪個區間內)

上面這句話不是特別理解。。。。

然而,因爲dr爲0,那麼AP無論如何不會在此區間內發生變化。

 

 

下面舉一些例子:

1. Random Selection:

    假設 h(t) = π*t,即相關的比例在所有識別的比例中保持爲 π

        則 r(t) = h(t)/π = t

    此時:AP = π

 

2. Perfect Detection:

    h(t)= t  [0,π]   

    h(t)=π  (π,1]

    這說明:前π個識別,全部命中,即h(t) = t,當π被耗盡時,h(t) = π,保持不變

    這是最理想識別,也說明:

     r(t) = t/π   [0,π]   

     r(t) = 1     (π,1]

此時的AP = 1;

 

3. 實際應用中:

    假設有n個測試item,將他們根據置信度又高到底排列後,計算:

   

其中,△r(i)表示後一次識別後,recall的變化量,

           p(i)可表示爲:R/i  ,其中R前i個item中,相關的item個數。

因此AP也可表示爲:

其中,R表示測試集所有的relavant的item個數;

           n表示測試集中item的數量;

           Ij = 1,如果第j個item相關,否則,Ij = 0;

           Rj,前j個item中,相關的item個數;

下面看個例子:

假設這些item的置信度已經由高到底排列:

因此,算法A好於算法B。

由此也可以看出,AP這個衡量標準更偏愛識別得早的算法。

 

後略。

 

希望大家幫忙改正。



1.Precision & Recall

2.F-Score

3.ROC Curve ( Receiver Operatng Characteristics)

4.Area under the ROC curve

5.Eleven-point interpolated average precision

5.MAP (Mean average precision)

 

Precision & Recall

 

在Information Retrieval 中,最直接用來衡量一個model的效能就是Precision & Recall

Precision : Tp / Tp + Fp , 即表示在所有Retrieve出的document中,有多少是Relevance.

 

Recall : Tp / Tp + Tn ,   即表示在所有Relevance的document中,有多少是被Retrieve到.

 

在理論上,Precision跟Recall之間是無絕對的對應關係,

 

但在實際應用上,通常Precision會隨著Retrieval document越多而遞減,而Recall則會遞增.

 

For Example(假設database中,relevance的document數目為10)


document

Positive/Negtive

Precision

Recall

1

+

1/1=100%

1/10=10%

2

+

2/2=100%

2/10=20%

3

-

2/3=67%

2/10=20%

4

+

3/4=75%

3/10=30%

...

...

...

...

 

 

而如果我們要使用單一個measure來evaluation搜尋的效能,

使用的通常為F-Score.

 

F-Score

 

F-score就是Precision與Recall的調和平均數(Harmonic Mean),

 

即 F = 2/(1/p + 1/r) = 2pr/(p+r)

 

而有時也會給予Precision及Recall不同的權重(weight)來進行計算,

 

即F = 2 / [a*(1/p)+(1-a)*(1/r)] = (b*b+1)pr / (b*b)p+r

 

若取b=1則F就等同於原來的式子,

 

若b>1,代表weight較偏重於Recall,

 

若0<b<1,代表weight較偏重於Precision.

 

前面所介紹的Precison & Recall 以及 F-score,針對的都是未排序的document,

 

但在實際的search engine中,所search的結果之間都是經過排序的,

 

因此就有人提出了 Eleven-point interpolated average precision, MAP(Mean Average Precision)

 

以及NDCG (normal discount cumulative gain).

 

ROC Curve

 

Y軸為True Positive (或稱為sensitivity或recall),而X軸為False Positive (或稱為1-Specificity),

 

一個Query的回傳結果分為兩個Part,一個為相關的set,另一個為不相關的set,

 

而True Positive指的就是相關的set在所有相關的document中佔有多大比例.[即 tp / (tp + tn)]

 

False Positive則是指不相關的set在所有不相關的document中佔有多大的比例.[即 fp /(fp+fn)]

 

當一個system越好時,則它的ROC Curve會較偏向於左邊.

 

關於此點,我們固定Y軸來看,若一個System的 Recall越高,則有兩種狀況,

 

第一:回傳的Result不大,但Corpus中的Relevance document有很高的比例都被retrieval到了.

 

第二:回傳的Result很大,讓Corpus中的Relevance document有很高的比例都被retrieval到了.

 

如果為第一點,則False positive會很低,因為回傳的結果有大部份都是不相關,則整個ROC curve會

 

往左邊靠,但如果是第二點,則False positive會很高,因為回傳的結果有大部份都是不相關,

 

此時ROC curve會往右邊偏移.

 

因此可得知,若一個System較好,則其ROC Curve必定較為偏向右邊.(即起伏較快)

 

以下圖來講,C的curve在回傳較少的result時便可達到100% recall,

 

而A curve相對來說則需要較多的result才能達到100% recall.

 

因此C 這個System相對於A來說,其performance是較好的.

 

F1.small.gif 

(ref:http://clincancerres.aacrjournals.org/content/12/23/6985.full)

 

 

Area under the ROC Curve (AUC):

 

AUC即是計算ROC Curve的曲線下面積(即下圖的A區域),

 

以下圖來看,假設HR(C)代表的是回傳的結果中佔所有相關document的比例,

 

而FAR(C)則是代表回傳的結果中佔有不相關document的比例,

 

則此曲線下的面積值,即是HR(C)*FAR(C)再由0積分到1.

 

而其道理同ROC Curve,若AUC的value較高,則表示一個System可正確的區分

 

正確及錯誤的狀況.

image008.gif 

(ref:http://www.acadametrics.co.uk/roc.htm)

 

 

 

Eleven-point interpolated average precision


11-point interpolated average precision是將Recall分為11個等級,

 

分別為 0.0 , 0.1 , 0.2 , 0.3 , ... , 1.0 , 分別表示全部資料的 0% , 10% , 20% , ... , 100%

 

而每個等級上的precision則取目前此點之後的Max precision,而為什麼要這樣子 , 因為在

 

11-point interpolated average precision上的一個基本假設是:如果我們可以增加View set中

 

relevance document 的比利的話, 那user都會想要去看更多的document.

 

由此方法所繪出的Precision-Recall Curve在某種程度上就可以看出不同方法在document

 

ranking上的好壞.

 

MAP (Mean average precision)


MAP 不同於11-point interpolated average precision,它提供了使用single value來判讀

 

不同method在document ranking上的好壞,

 

它的計算方式如下:

 

1.首先先計算個別Query所retrieval出的average precision.

 

2.再將每個Query所得的average precision求其算數平均數(Arithmetic Mean),所得即為MAP.


信息檢索(IR)的評價指標介紹 - 準確率、召回率、F1、mAP、ROC、AUC

分類: 1.自然語言處理/機器學習

在信息檢索、分類體系中,有一系列的指標,搞清楚這些指標對於評價檢索和分類性能非常重要,因此最近根據網友的博客做了一個彙總。

準確率、召回率、F1

信息檢索、分類、識別、翻譯等領域兩個最基本指標是召回率(Recall Rate)準確率(Precision Rate),召回率也叫查全率,準確率也叫查準率,概念公式:

             召回率(Recall)      =  系統檢索到的相關文件 / 系統所有相關的文件總數

             準確率(Precision) =  系統檢索到的相關文件 / 系統所有檢索到的文件總數

圖示表示如下:


注意:準確率和召回率是互相影響的,理想情況下肯定是做到兩者都高,但是一般情況下準確率高、召回率就低,召回率低、準確率高,當然如果兩者都低,那是什麼地方出問題了。一般情況,用不同的閥值,統計出一組不同閥值下的精確率和召回率,如下圖:

 

 

如果是做搜索,那就是保證召回的情況下提升準確率;如果做疾病監測、反垃圾,則是保準確率的條件下,提升召回。

所以,在兩者都要求高的情況下,可以用F1來衡量。

  1. F1 = 2 * 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, Precision, and Average Precision


 以下內容絕大部分內容翻譯自:

Mu Zhu , Recall, Precision, and Average Precision. Working Paper 2004-09 Department of Statistics & Actuarial Science University of Waterloo.

 

1. 先介紹一些基礎內容和符號說明

 

C:一個很大item的集合。

π:集合中相關的item的集合(π<< 1)。

t:算法所識別出的item的集合。

h(t):t中確實相關的item的集合,通常這部分稱作命中(相反的是丟失)

 

下面看一些典型的“命中”曲線

 

假設其中相關item爲5%。

hP(t)曲線是理想的曲線,幾乎排在前面的所有的識別都命中了,直到5%,所有的相關item都耗盡了,曲線不再變化。

hR(t)曲線是隨機選擇的曲線

hA(t)和hB(t)是典型的識別曲線

(兩條曲線相交是可能的)

 

“命中曲線”能夠很清楚地告訴我們一個模型或者是算法的性能好壞。例如,如果在任何時候,有 hA(t)>hB(t),則算法A毫無疑問比算法B出色;如果一般情況下,一條曲線總是隨着t的增長而快速增長,則這個算法被認爲是強壯的;特別的,一個最好的算法應該擁有最大地斜率,直到 t=π。

然而,我們需要的不僅是對算法好壞的評估和比較,而是要往好的方面來調整算法。經常,我們需要半人工地來產生一些算法的最優經驗參數就像交叉驗證。舉例來說,對於

K - nearest-neighbor算法,我們必須選擇最合適的K,然後通過交叉驗證找出出色的值。因此,我們可以看到,我們更爲需要的是一個評估值,而不是一條曲線。

兩個數值化的評估方法通常是:recall和precision

 

2. 簡單介紹 Recall 和 Precision

簡單定義:

Recall:在所有item中識別出相關item的概率。

Precision:在算法所識別出的item中,真正相關的概率。

 

形式化定義:

設 ω  是集合 C 中隨機取出的一個元素

 

 

或者可以表示成

 

 

3. Recall 和 Precision 之間的關係

 

引理1:     

                      

 

證明:                      根據貝葉斯公式,可以得到:

注意:在這裏,我們將Precision和Recall都看作是關於自變量 t  的函數,因爲一般來說,隨着 t  的變化,算法的一些表現也會跟着變化。

            h(t) , r(t) , p(t) 都看作是連續光滑的曲線,因爲集合C足夠大。

 

 

引理2:

            1.  r(0) = 0       r(1) = 1       

            2.  r'(t) >= 0   (t∈[0,1])

 

證明:       

1. 顯然,當 t = 0 時,Recall必然爲0,因爲沒有item被檢測;

             當 t = 1 時,Recall必然等於1,因爲所有的item都被檢測了,那麼也必定包括所有相關的item;

2. 顯然,r (t+△t) > r(t) 或者 r (t+△t) = r(t)

    所以,r (t+△t) >=  r(t)

 

假設 t  在幾乎任何一點都可導,則有:

                     所以      r'(t) >= 0     ( t∈[0,1] ) 

 

引理2說明了 r(t) 是一個非遞減函數,而且對於一個典型的識別算法來說,一般都有 r''(t) <= 0,即識別率是漸漸減緩的,直觀上來說

隨着 t  的上升,識別變得越來越困難。          

 

假設1:假設 r(t) 是二次可微函數,則  r''(t) <= 0 ,     t∈[0,1].

引理3:假設 p(t) 可微,若假設1成立,則 p'(t)<= 0 ,     t∈[0,1].

證明:

            

根據中值定理,存在 S ∈[0,t]. 

                                             使得 r(t) - r(0) = r'(s) (t - 0)

                              ∵   r(0) = 0;

                              ∴   r(t) = r'(s)t

又根據假設1,    有   r''(t) <= 0

                         所以   r'(s) >= r'(t)    (s<=t)

                         所以   r'(s)t >= r'(t)t

                             即   r(t) >= r'(t)t

                             則   p'(t) <= 0

根據之前所證明的,r'(t) >= 0,可以看出,Recall和Precision的確存在某些相互影響的關係。

(此證明基於假設1,r(t)的二階導數小於等於0,即r''(t)是凸函數)


所以說,單用這兩個之中的某一個來評估和比較都不太合適,下面介紹的AP將會同時考慮Recall和Precision,因此常被用來作爲衡量和評估的標準。

 

 

 

4. Average Precision(AP)

首先,Precision能被表示成Recall的函數,p(r), 因爲 p(t) = π*r(t)/t ,具體見上所述。

 

AP的定義如下:

 

 引理4:設r(t)可微函,則:

              

 

某些情況下,AP並不怎麼直觀,當 r'(t) = 0時,p(t)必然decreasing in t (無論在哪個區間內)

上面這句話不是特別理解。。。。

然而,因爲dr爲0,那麼AP無論如何不會在此區間內發生變化。

 

 

下面舉一些例子:

1. Random Selection:

    假設 h(t) = π*t,即相關的比例在所有識別的比例中保持爲 π

        則 r(t) = h(t)/π = t

    此時:AP = π

 

2. Perfect Detection:

    h(t)= t  [0,π]   

    h(t)=π  (π,1]

    這說明:前π個識別,全部命中,即h(t) = t,當π被耗盡時,h(t) = π,保持不變

    這是最理想識別,也說明:

     r(t) = t/π   [0,π]   

     r(t) = 1     (π,1]

此時的AP = 1;

 

3. 實際應用中:

    假設有n個測試item,將他們根據置信度又高到底排列後,計算:

   

其中,△r(i)表示後一次識別後,recall的變化量,

           p(i)可表示爲:R/i  ,其中R前i個item中,相關的item個數。

因此AP也可表示爲:

其中,R表示測試集所有的relavant的item個數;

           n表示測試集中item的數量;

           Ij = 1,如果第j個item相關,否則,Ij = 0;

           Rj,前j個item中,相關的item個數;

下面看個例子:

假設這些item的置信度已經由高到底排列:

因此,算法A好於算法B。

由此也可以看出,AP這個衡量標準更偏愛識別得早的算法。

 

後略。

 

希望大家幫忙改正。



1.Precision & Recall

2.F-Score

3.ROC Curve ( Receiver Operatng Characteristics)

4.Area under the ROC curve

5.Eleven-point interpolated average precision

5.MAP (Mean average precision)

 

Precision & Recall

 

在Information Retrieval 中,最直接用來衡量一個model的效能就是Precision & Recall

Precision : Tp / Tp + Fp , 即表示在所有Retrieve出的document中,有多少是Relevance.

 

Recall : Tp / Tp + Tn ,   即表示在所有Relevance的document中,有多少是被Retrieve到.

 

在理論上,Precision跟Recall之間是無絕對的對應關係,

 

但在實際應用上,通常Precision會隨著Retrieval document越多而遞減,而Recall則會遞增.

 

For Example(假設database中,relevance的document數目為10)


document

Positive/Negtive

Precision

Recall

1

+

1/1=100%

1/10=10%

2

+

2/2=100%

2/10=20%

3

-

2/3=67%

2/10=20%

4

+

3/4=75%

3/10=30%

...

...

...

...

 

 

而如果我們要使用單一個measure來evaluation搜尋的效能,

使用的通常為F-Score.

 

F-Score

 

F-score就是Precision與Recall的調和平均數(Harmonic Mean),

 

即 F = 2/(1/p + 1/r) = 2pr/(p+r)

 

而有時也會給予Precision及Recall不同的權重(weight)來進行計算,

 

即F = 2 / [a*(1/p)+(1-a)*(1/r)] = (b*b+1)pr / (b*b)p+r

 

若取b=1則F就等同於原來的式子,

 

若b>1,代表weight較偏重於Recall,

 

若0<b<1,代表weight較偏重於Precision.

 

前面所介紹的Precison & Recall 以及 F-score,針對的都是未排序的document,

 

但在實際的search engine中,所search的結果之間都是經過排序的,

 

因此就有人提出了 Eleven-point interpolated average precision, MAP(Mean Average Precision)

 

以及NDCG (normal discount cumulative gain).

 

ROC Curve

 

Y軸為True Positive (或稱為sensitivity或recall),而X軸為False Positive (或稱為1-Specificity),

 

一個Query的回傳結果分為兩個Part,一個為相關的set,另一個為不相關的set,

 

而True Positive指的就是相關的set在所有相關的document中佔有多大比例.[即 tp / (tp + tn)]

 

False Positive則是指不相關的set在所有不相關的document中佔有多大的比例.[即 fp /(fp+fn)]

 

當一個system越好時,則它的ROC Curve會較偏向於左邊.

 

關於此點,我們固定Y軸來看,若一個System的 Recall越高,則有兩種狀況,

 

第一:回傳的Result不大,但Corpus中的Relevance document有很高的比例都被retrieval到了.

 

第二:回傳的Result很大,讓Corpus中的Relevance document有很高的比例都被retrieval到了.

 

如果為第一點,則False positive會很低,因為回傳的結果有大部份都是不相關,則整個ROC curve會

 

往左邊靠,但如果是第二點,則False positive會很高,因為回傳的結果有大部份都是不相關,

 

此時ROC curve會往右邊偏移.

 

因此可得知,若一個System較好,則其ROC Curve必定較為偏向右邊.(即起伏較快)

 

以下圖來講,C的curve在回傳較少的result時便可達到100% recall,

 

而A curve相對來說則需要較多的result才能達到100% recall.

 

因此C 這個System相對於A來說,其performance是較好的.

 

F1.small.gif 

(ref:http://clincancerres.aacrjournals.org/content/12/23/6985.full)

 

 

Area under the ROC Curve (AUC):

 

AUC即是計算ROC Curve的曲線下面積(即下圖的A區域),

 

以下圖來看,假設HR(C)代表的是回傳的結果中佔所有相關document的比例,

 

而FAR(C)則是代表回傳的結果中佔有不相關document的比例,

 

則此曲線下的面積值,即是HR(C)*FAR(C)再由0積分到1.

 

而其道理同ROC Curve,若AUC的value較高,則表示一個System可正確的區分

 

正確及錯誤的狀況.

image008.gif 

(ref:http://www.acadametrics.co.uk/roc.htm)

 

 

 

Eleven-point interpolated average precision


11-point interpolated average precision是將Recall分為11個等級,

 

分別為 0.0 , 0.1 , 0.2 , 0.3 , ... , 1.0 , 分別表示全部資料的 0% , 10% , 20% , ... , 100%

 

而每個等級上的precision則取目前此點之後的Max precision,而為什麼要這樣子 , 因為在

 

11-point interpolated average precision上的一個基本假設是:如果我們可以增加View set中

 

relevance document 的比利的話, 那user都會想要去看更多的document.

 

由此方法所繪出的Precision-Recall Curve在某種程度上就可以看出不同方法在document

 

ranking上的好壞.

 

MAP (Mean average precision)


MAP 不同於11-point interpolated average precision,它提供了使用single value來判讀

 

不同method在document ranking上的好壞,

 

它的計算方式如下:

 

1.首先先計算個別Query所retrieval出的average precision.

 

2.再將每個Query所得的average precision求其算數平均數(Arithmetic Mean),所得即為MAP.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章