這是隻鳥... 這是個飛機... 這... 取決於你的分類器閾值

信息檢索系統(例如搜索引擎)的評估主要關注於兩件事情:

1.獲取到的數據的相關程度?(準確率)
2系統是不是到底獲取到了多少真實的相關文檔(召回率)

對於不熟悉的朋友,我將會解釋到底什麼是準確率和召回率;對於已經很熟悉的朋友,在比較precision-recall曲線時,我將解釋文獻中的一些混淆點。

鵝和飛機

假設你有一個包含飛機和鵝的圖片集合

這裏寫圖片描述
你想要系統可以獲取到所有飛機圖片,並且不包含一張鵝的圖片。假設你已經從這個集合中獲取到了一個圖片集,我們可以定義四個名詞:

True positives:系統正確獲取到的飛機圖片個數
True negatives : 系統正確性的未能獲取到的鵝的圖片
False positives:系統錯誤的獲取到的額的圖片,認定它們是飛機
False negatives: 系統錯誤的沒有獲取到的飛機圖片,認定它們是鵝

在這個例子中, 有三個true positives 和一個false positive.

利用我剛纔定義的術語,在這個例子中,有三個true positive和一個false positive。那麼又有多少false negative和true negative呢?

有兩個false negative(系統未能獲取的飛機圖片)和四個true negative(系統沒有獲取到的鵝的圖片)。

準確率和查全率

現在,你可以更加精確的理解什麼是準確率和查全率了。

準確率是true positive佔獲取到的結果數目的比值,即:

這裏寫圖片描述

上式中n等於系統獲取到的所有圖片數目(tp+fp)。

查全率是系統獲取到的飛機佔總飛機數目的比例,即:

這裏寫圖片描述

在上面的例子中,precision=3/(1+3)=0.75,recall=3/(3+2)0.6。

也就是說,獲取到的結果中75%是飛機,對整個數據集合來說60%的飛機被索引出來了。

調節閾值
如果我們對以上的表現不滿意怎麼辦?我們可以要求系統返回更多例子。而這可以通過放寬我們設定的系統識別飛機的閾值來完成。我們也可以要求系統更加嚴格,返回更少例子。在上面的實驗中,系統獲取到四張圖片,對應一個特定的閾值(如下由藍線所示),系統獲取到的圖片似乎都比那個閾值表現的更像飛機。

這裏寫圖片描述

我們可以上下移動閾值獲取不同的返回集合。在每一個閾值點,我們可以獲取不同的準確率和查全率值。具體來說,如果我們僅僅獲取到頂部的例子,準確率爲100%查全率爲20%;如果我們取到前面的兩個例子,準確率爲100%查全率爲40%;下面的表格給出基於上面的假設排序情況下在所有可能的閾值情況下準確率和查全率的值。

這裏寫圖片描述

Precision-recall 曲線
一個很好的表現分類器的性能方式是查看precision和recall是怎樣隨着閾值變化而變化。好的分類器將善於在列表的頂部排序真實飛機圖片,在獲取鵝圖片之前可以獲取到許多飛機圖片:也就是說在recall值逐步增加的時候,precision值保持在較高水平。差的分類器在提高recall值的時候precision會損失嚴重。通常出版物將會展示一個precision-recall曲線來表現這個權衡是怎樣適配他們的分類器的。下面是一個精度p作爲召回r的函數的圖。

這裏寫圖片描述

平均準確率
除了比較曲線圖,有時候單個數值來刻畫分類器的性能會更加有用。一個通用的度量標準是平均準確率(average precision)。這實際上意味着幾件事情之一(沒懂這句話意思 囧)。

average precision

嚴格來講,平均準確率是當recall值在0-1之間所有值所對應的準確率的平均值。

這裏寫圖片描述

這個等價於取曲線下面的面積。實踐中,積分近似的等價於在每一個可能的閾值處的精確率和召回率的變化值的乘積之和:
這裏寫圖片描述

上式中N是集合中的圖片總數,P(k)是在k個圖像截止時的精確度,delta r(k)是召回率在k-1截止和k截止間的改變值。在我們的例子中, 就是(1 * 0.2) + (1 * 0.2) + (0.66 * 0) + (0.75 * 0.2) + (0.6 * 0) + (0.66 * 0.2) + (0.57 * 0) + (0.5 * 0) + (0.44 * 0) + (0.5 * 0.2) = 0.782.

注意到在某一點recall值不變的話,sum值是不會變的(在圖中,這些點位於圖形的垂直部分,在那些位置圖形直線下降)。這是有道理的,因爲我們計算的是曲線下面的面積,那些位置是不會增加任何面積的。

Interpolated average precision
一些作者選擇了一種稱爲插值平均精度的替代近似。通常他們也被叫做average precision。 不向Average precision使用P(k),Interpolated average precision在k個圖像的檢索截止處的精確度使用:

這裏寫圖片描述

換句話來說,interpolated average precision使用了由所有具有較高recall值的切分點中觀察到的最大準確率進行計算,而不是在k切分點處觀察到的準確率。完整的計算方式如下:

這裏寫圖片描述

形象化表示如下,這裏是interpolated average precision與 approximated average precision的比較(爲了展示一個更有意義的圖像,這裏的示例不同於前面的例子)


這裏寫圖片描述

此外,在計算interpolated average precision時,在取樣位置上存在許多變化。有一些在固定的11個點位置(0-1之間:0, 0.1, 0.2, …, 0.9, 1.0)進行取值,這被叫做11-point interpolated average precision。另外一些則在召回率每k個改變位置進行抽樣。

混淆點
一些重要的出版物使用interpolated average precision作爲它們的度量,並仍稱其爲 average precision。例如,PASCAL Visual Objects Challenge在2007年就開始使用這種度量方式了。我認爲他們的理由不是很充分。他們說,“the intention in interpolating the precision/recall curve in this way is to reduce the impact of the “wiggles” in the precision/recall curve”。無論如何,每個人都在這個指標上相互比較,所以在競爭中,這不是問題。 但是,當比較“平均精度”值和其他公佈的結果時,我們其他人需要小心。 我們是否使用了VOC的插值平均精度,而以前的工作使用了非插值平均精度? 與以前的工作相比,這會錯誤地顯示新方法的改進。

翻譯文檔:
https://sanchom.wordpress.com/tag/average-precision/

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