文本搜索系统的评估
說明:文章內容來源于課程視頻和課程ppt。我只學習了課程沒有做習題。文章不是翻譯,是我對課程的理解。
這部分本應該繼續說反饋(FeedBack)的。但是課程中安排的是評估(Evaluation)。評估是用于衡量搜索引擎質量的。反饋是為了提高搜索引擎質量而進行的操作。所以在講反饋之前需要先說明評估。
1為什么做評估
為什么要評估搜索引擎呢?一方面是為了評估搜索引擎是否有用,另一方面用于比較不同算法、不同文本搜索系統的有效性。
2評估什么
1 準確性accuracy。可以衡量搜索結果的準確程度,是不是把無關數據放在top列表中了。
2 有效性(efficiency)。系統可以在多長時間內返回搜索結果。一次搜索需要多少資源。主要從space和 time overhead兩方面衡量。
3 有用性usability。搜索系統對用戶是有用的嗎?通過研究用戶行為得出結論。
3評估方法
Cranfield Evaluation Methodology克蘭菲爾德評價方法。主要內容有兩點:第一、建立一個可重用的測試集。第二、定義測量標準。
3.1建一個可重用測試集
建立可重用測試集的步驟:1 從文檔中抽樣取得部分文檔。2 從查詢集中抽樣得到部分查詢。3 (人工)判斷文檔與查詢是否相關,所有相關文檔中理想的排序方式是什么(idea ranked list)。
3.2評估標準
準確率與召回率
a=搜索到的相關文檔
b=搜索到的不相關文檔
c=相關文檔但是沒有搜索到
precision=aa+b
recall=aa+b
理想結果是:Precision=Recall=1.0。實際中高的recall必定會有一個較低的Precision。
一般使用中不會定義全局的準確率,而是會設置一個閥值,計算top n的準確率。例如prcision@10。
recall與precision結合使用得到Fβ=(β2+1)P?Rβ2P+R,F1=2P?RP+R
提問:為什么不是0.5*P+0.5*R?
回答:這是一個求和,求和的結果由式子中的大數來決定。就是說,如果有一個P值非常高,即使R值很低,結果頁可能很高。而F1的式子,需要P和R都非常高,結果才可能非常大。
4評估排序文檔
評估排序文檔 evaluate ranked list
4.1 設置cut off
評估排序結果的第一步是要確定一個位置,簡單的說是每頁多少條數據。我們可以認為用戶只有很小的可能會翻頁。或者說這次引擎需要評估前兩頁數據的準確率和召回率。根據實際任務來定。這里假設cut off=10。查看前10條文檔的情況。
4.2 計算不同位置的準確率和召回率
在前10條文檔中,我們又不知道用戶會在哪個位置停下來。我們可以先計算用戶在不同位置停止瀏覽的時候的準確率和召回率。
| 1 | D1+ | 1/1 | 1/10 |
| 2 | D2+ | 2/2 | 2/10 |
| 3 | D3- | 2/3 | 2/10 |
| 4 | D4- | 2/4 | 2/10 |
| 5 | D5+ | 3/5 | 3/10 |
| 6 | D6- | 3/6 | 3/10 |
| 7 | D7- | 3/7 | 3/10 |
| 8 | D8+ | 4/8 | 4/10 |
| 9 | D9- | 4/9 | 4/10 |
| 10 | D10- | 4/10 | 4/10 |
可以看到隨著位置增加,準確率逐漸降低,召回率逐漸增加。所以我們可以假設cut off(例如:10)之后的每個位置的準確率為0。
4.3 比較兩種算法
比較兩種算法就是比較兩種算法的P-R曲線。
如果算法A、B的效果可以用上圖表示,毫無疑問算法A要優于算法B。因為在每一個相同召回率的點上,A的準確率>B的準確率。
如果算法A、B的效果用上面的圖表示,那哪種算法好呢?我們是否應該用算法B替換算法A呢?在最前面的位置,算法B具有較高的準確率;總體來看,算法A具有較高的召回率。如果是今日頭條這樣的場景,一個用戶就想知道今天或者近幾個小時發生了什么事情,而且還不一定看幾條數據就不停下來了。所以最前面的數據一定要是準確的,要求高的準確率。這時候算法B比較好。如果這是一個科技查新的系統,是一個專利調研項目,想要知道哪類技術是不是已經研究過,或者進行了哪方面的研究,這時候有一些錯誤數據是可以的,但是一定要保證相關的文獻能被查詢到。也就是說要有較高的召回率。這時候選擇算法A。
4.4 summarize a ranking
概述排序文檔:平均準確率。
上面例子的平均準確率=11+22+35+48+0+0+0+0+0+010,這里的分母=相關文檔的數量。這里有幾個問題。
問題1:相關文檔的數量是在cut off范圍內,還是在所有數據范圍內?我比較偏向于前者。因為這是評價Top k 排序結果的。如果你要評價前10條數據,但在數據集中相關文檔只有8,那這個時候分母就應該是8。
問題2:分母為什么不是4,也就是查詢到的相關文檔數量?作者的解釋,我看得不是很明白。
“In fact, that you are favoring a system, that would retrieve very few random documents, as in that case, the denominator would be very small. So, this would be, not a good matching. ”
大意是說:分母很小,我可以從數據中隨機選擇幾個文檔,就能提高準確率。(大概是這意思)。
好處:這樣的計算結果同時考慮了準確率和召回率,而且還與相關文檔的位置有關系。在上面例子中如果把D5移動到D3,計算結果就會變大(因為分子的35變成了33)。
4.5 MAP
平均準確率衡量了一個檢索結果列表的好壞。那如果是一個查詢(檢索表達式)集合呢?之前提到可重用的測試集是由文檔集和查詢集組成的。
MAP=Mean Average Precision 平均準確率的平均值。可以用來表示一個查詢集的檢索結果的好壞。
MAP分為算術平均準確率(MAP)和幾何平均準確率(gMAP)。
MAP=1n∑ni=1pi。它主要由大數控制。如果一個數非常大,而其他值非常小,最后的結果頁可能非常大。
gMAP=(∏ni=1pi)1n。它主要由一些較小的數控制。它要求所有數都比較大,結果才能比較大。
如果要衡量搜索引擎的搜索效果,想要提高(幾乎)所有查詢語句的搜索效果,顯然gMAP更合適。如果只需要提高部分查詢的檢索結果,那MAP可能更合適。
特殊情況:只有一個相關文檔。例如:問答系統,只有一個答案正確;或者頁面中只有一個位置展示相關文檔。這樣:
平均準確率=Reciprocal Rank=1/r。r是相關文檔在檢索結果中的排序位置。
MAP=Mean Reciprocal Rank
r代表了用戶想要看到相關文檔需要的努力程度。如果r=1,用戶看1篇文檔就找到了相關文檔。如果r=100,用戶就需要看100篇文檔才能找到相關文檔(已然放棄)。為什么不用r表示搜索效果的好壞呢?在多個查詢結果中,假設有三個查詢結果,相關文檔的位置分別是4、5、3。一種表示方式是:14+15+13,另外一種表示方式是:{4+5+3}。在第一種方式中,結果大,就代表效果好;第二種方式結果大,代表效果差,思維不同。人們對于14與15的差別,和對4與5的差別的感覺是不一樣的,前者能感覺到更有差距。
4.6 多級別相關性排序評價
上面介紹的都是一個文檔要么相關,要么不相關。實際中我們會給文檔分成不同級別的相關性。例如r=1:不相關;r=2:有點相關;r=3:非常相關。我們這里假設關心top10結果。
| D1 | 3 | 3 | 3 |
| D2 | 2 | 3+2 | 3+2/log2 |
| D3 | 1 | 3+2+1 | 3+2/log2+1/log3 |
| D4 | 1 | 3+2+1+1 | 3+2/log2+1/log3+1/log4 |
| D5 | 3 | … | … |
| D6 | 1 | … | … |
| D7 | 1 | … | … |
| D8 | 2 | … | … |
| D9 | 1 | … | … |
| D10 | 1 | …. | .. |
相關性累加(Cumulative Gain)是把結果中每個文檔的相關性等級相加。
帶折扣的相關性累加(Discounted Cumulative Gain,DCG)是在相加過程中依據位置因素帶了折扣:等級/logr,r=位置。
最后還要計算正則化的DCG,用于不同查詢之間的比較,表示為nDCG=DCG@10IdealDCG@10。
DCG@10=3+2/log2+1/log3+...+1/log10
IdealDCG@10是對于某個搜素最理想情況下的DCG值。如果對于當前查詢,文檔集中有9篇非常相關文檔(3級),一篇有點相關文檔(2級),那么IdealDCG@10=3+3/log2+3/log3+...+2/log10
nDCG的范圍就是0-1之間,用于衡量不同級別相關性的搜索。
5 評估問題實際中的問題
在評估中我們需要創建一個文檔集、查詢集以及相關評價集。在實際中這幾方面都是很有挑戰的。
首先,我們選擇的文檔和查詢語句要具有代表性,能代表了真實的用戶需求。
其次,文檔和查詢的量要大,盡量數據的抽樣不均衡(這里可以翻譯的更好點)。對于每個查詢,要保證有很多的相關文檔。
第三,對每個查詢的每個文檔的相關性需要大量的人工標記。這是一個勞動密集型的事情,所以我們需要盡可能少的使用人力。
第四,在制定相關度級別方面,我們需要認真考慮什么是用戶想要的,再考慮定什么樣的相關度級別是合適的。
5.1 統計顯著性檢驗
統計顯著性測試(statistical significant test)用來解決這樣的問題:我們通過試驗比較算法A和算法B誰更好,計算得到平均值之后,我們怎么確定較好的算法是不是因為某幾個特定的查詢引起的.也就是說對于結果較好的算法,是幾乎在每個查詢上表現都好,還是只在某些查詢上表現優異.例如下圖。我們得到的試驗結果有多少可信度。
首先看一個符號測試Sign Test。如果SystemB比SystemA好,則標記為+,否則標記為-。7個查詢中4個位+,3個位-,這和拋7枚硬幣得到的結果相同,所以這個結果完全是隨機因素影響的,p=1.0。
其次看Wilcoxon檢驗法。Wilcoxon檢驗法同時考慮了符號和差值大小。我們需要考慮在一定的置信水平上(例如α=0.95),計算得到的|W|值是否在臨界值范圍外。詳細內容看看統計學課本或者Wikipedia。
5.2 Judgments
如果我們不能對所有文檔的相關性做相關性標記,那我們應該選擇哪部分文檔去標注相關性呢呢?抽樣。要盡可能選擇多樣性的文檔;選擇Top k文檔(多個算法可能會選到重復的文檔);把N個算法選出的文檔作為測試集,人工標記相關性;其余未被選中的文檔被認為是不相關文檔。
6 未涉及到的相關策略
A-B Test
用戶學習
可以參考的資料:
Donna Harman, Information Retrieval Evaluation. Synthesis Lectures on Information Concepts, Retrieval, and Services, Morgan & Claypool Publishers 2011
Mark Sanderson, Test Collection Based Evaluation of Information Retrieval Systems. Foundations and Trends in Information Retrieval 4(4): 247-375 (2010)
Diane Kelly, Methods for Evaluating Interactive Information Retrieval Systems with Users. Foundations and Trends in Information Retrieval 3(1-2): 1-224 (2009)
總結
- 上一篇: React Native 重新建项目遇到
- 下一篇: Atom与markdown