[wbia 2.2] 对检索结果进行评估
評估對檢索系統(tǒng)的性能:
由于我們這里的檢索結(jié)果,是主要根據(jù)PageRank的排名,以及Lucene對文本的分詞和相關(guān)性計算的最后得分,進行權(quán)值調(diào)整后得到的排名結(jié)果。
這里對我們檢索系統(tǒng)的進行性能評估,這里主要評估的是檢索結(jié)果排名的質(zhì)量。
由于對搜索結(jié)果排名的評估有很多方法和技巧,這里我們可以采用幾個比較經(jīng)典的評估方法:
1,對rank result 計算P/R值,利用差值法,衡量平均的P/R值。
2,對rank計算DCG值,以及NDCG值,得到。
3,利用google的站內(nèi)搜索功能,對我們自己的排名結(jié)果進行對比排名。
接下來詳細說明下,是怎么使用各個評估方法的。
1,對rank result 計算P/R值,利用差值法,衡量平均P/R值。(具體求值方法,見附錄。)
1.1首先,為了得到標準測試集。我們選擇了5個有代表性的query,然后在我們抓的數(shù)據(jù)集中隨機選擇100個
靜態(tài)網(wǎng)頁。人工對100個網(wǎng)頁,對5個關(guān)鍵詞進行“相關(guān)/不相關(guān)”的二元標注。這樣我們就得到了
標準測試集。然后我們使用自己設(shè)計的rank算法,對這100個網(wǎng)頁進行索引。
對選擇的5個query,進行查詢,得到rank的結(jié)果。
1.2接下來,我們就可以進行進行rank的P/R值計算了。
分別計算得到10個Precision 和 Recall value。這樣我們得到了一連串的PR值,
如何比較query之間的檢索效果,就需要計算出avgPrec。將Recall里面遞增的值
的prec的平均值。這樣可以評估不同query間的檢索效果。
1.3對上面計算的P/R值,計算其F1值。利用avgF值也可以得到評估排名的效果。
2,對rank計算DCG值,以及NDCG值,得到。(具體求值方法,見附錄。)
2.1 首先我們選擇出5個query,然后可以對全局爬下來的數(shù)據(jù)進行檢索。
輸入5個query后,得到的top10 結(jié)果。對10個頁面結(jié)果,進行3個等級的區(qū)分:Good(好)、Fair(一般)、 Bad(差),
標注后,得到每個頁面得分。根據(jù)DCG的定義,分別計算出DCG值。但是和上面遇到的問題一樣,不同query之間的比較,不能很好
的比較,所以需要就計算NDCG,歸一化DCG值后,query之間的效果就可以計算。一定程度上,可以比較方法1,2中的評估結(jié)果,
看下不同評估方法之間的效果和側(cè)重點。
3,利用google的站內(nèi)搜索功能,對我們自己的排名結(jié)果進行對比排名。
google站內(nèi)搜索,是想利用google的搜索結(jié)果,計算出DCG值,然后和2中的值進行比較,查看結(jié)果,分析出現(xiàn)不同估算值的原因和結(jié)果,是否算法客觀評估了效果,或者算法是否有需要改進的地方。
google站內(nèi)搜索,還可以幫助,1中的測評中,代替大量人工評估的相關(guān)性方法,可以假設(shè)google搜出結(jié)果的前n條為相關(guān)性結(jié)果,
然后其余的為不相關(guān),這樣可以得到數(shù)量級更大的測試集。
關(guān)于測試集的獲得,還可以使用人工標注的結(jié)果,然后對其余子集使用分類算法,進行相關(guān)性分類。這樣也可以得到數(shù)量級大的測試集。
附錄:
1, P/R 值,rank P/R值計算 , F1值計算。
來源于:wbia 課件
n 精度Precision P = tp/(tp + fp)
n 召回率Recall R = tp/(tp + fn)
Rank P/R 計算
2,DCG,NDCG計算。
來源于 http://hi.baidu.com/jasonlyy/blog/item/60614c487685983f09f7efe7.html
CG并不考慮在搜索結(jié)果頁面中結(jié)果的位置信息,它是在這個搜索結(jié)果list里面所有的結(jié)果的等級對應的得分的總和。如一個搜索結(jié)果list頁面有P個結(jié)果,CG被定義為:
reli是 第i位結(jié)果的得分。CG的統(tǒng)計并不能影響到搜索結(jié)果的排序,CG得分高只能說明這個結(jié)果頁面總體的質(zhì)量比較高并不能說明這個算法做的排序好或差。什么是好 的排序?也就是說要把Good的結(jié)果排到Fair結(jié)果上面、Fair結(jié)果排到Bad結(jié)果上面,如果有Bad的結(jié)果排在了Good上面,那當然排序就不好 了。到底排序好不好,需要一個指標來衡量,DCG就是這樣的一個指標。
上面的例子CG=3+2+1+3+2=11,如果調(diào)換第二個結(jié)果和第三個結(jié)果的位置CG=3+1+2+3+2=11,并沒有改變總體的得分。
Discounted Cumulative Gain
在一個搜索結(jié)果list里面,比如有兩個結(jié)果的打分都是Good,但是有一個是排在第1位,還 有一個是排在第40位,雖然這兩個結(jié)果一樣都是Good,但是排在第40位的那個結(jié)果因為被用戶看到的概率是比較小的,他對這整個搜索結(jié)果頁面的貢獻值是 相對排在第一位那個結(jié)果來得小的。
DCG的思想是等級比較高的結(jié)果卻排到了比較后面,那么在統(tǒng)計分數(shù)時,就應該對這個結(jié)果的得分有所打折。一個有p(P≥2)個結(jié)果的搜索結(jié)果頁面的DCG定義為:
為什么要用以2為底的對數(shù)函數(shù)?這個并沒有明確的科學依據(jù),大概是根據(jù)大量的用戶點擊與其所點寶貝的位置信息,模擬出一條衰減的曲線。
那么上例中的數(shù)字如右圖所示:
DCG=3+(1+1.26+1.5+0.86)=7.62
DCG的公式另外一種表達式是:
這個表達式在一些搜索文檔中經(jīng)常會被提到,他的作用和之前的那個公式一樣,但是這個公式只適合打分分兩檔的評測。
nDCG(normalize DCG) 因為不同query的搜索結(jié)果有多有少,所以不同query的DCG值就沒有辦法來做對比。
定義:
IDCG(ideal DCG),就是理想的DCG。IDCG如何計算?首先要拿到搜索的結(jié)果,人工對這些結(jié)果進行排序,排到最好的狀態(tài)后,算出這個排列下本query的DCG,就是IDCG。
因為nDCG是一個相對比值,那么不同的query之間就可以通過比較nDCCG來決定哪個query的排序比較好。
例子中,理想的排序應該是3 、3 、2 、2 、1,那么IDCG=3+3+1.26+1+0.43=8.69
nDCG=DCG/IDCG=7.62/8.69=0.88,從nDCG這個值可以看出目前算法存在的優(yōu)化空間。
轉(zhuǎn)載于:https://www.cnblogs.com/goodness/archive/2012/04/16/2452800.html
總結(jié)
以上是生活随笔為你收集整理的[wbia 2.2] 对检索结果进行评估的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python模块学习——tempfile
- 下一篇: ORA-29702:error occu