文字獲取和搜尋引擎如何評估一個演算法是否有效

爬蜥發表於2019-02-25

coursera課程 text retrieval and search engine 第三週 推薦。

如何評估一個演算法是否有效

思路:構建一個可以重複使用的資料集,並且定義測量辦法,來衡量結果。
感性的來說,使用不同的演算法作用於同一個資料集,得到不同的結論,根據使用者的使用場景【測量】來判斷哪個演算法更有效,這是因為具體的場景使用,這應該是知道什麼樣的結果是最想要的;
另一方面可以從理性的角度來衡量,1是精度(Precision),2是召回率(recall)

  • 精度 用來度量演算法返回的結果中,有多少是有用的
  • 召回率 用來度量在所有的結果中,有多少被返回了
文字獲取和搜尋引擎如何評估一個演算法是否有效

一般說來,高的召回率意味著低精度

當嘗試去找更多的文件的時候,那也會查詢更多的檔案,精度隨之降低
從實用性來講,使用者使用一般只看返回結果的第一屏【一般是10】,那麼可以在這個範圍內來衡量【前10】的準確率

可以使用PR曲線來衡量精度和召回率的關係,一個良好的PR曲線它不會偏向於任何一個演算法

文字獲取和搜尋引擎如何評估一個演算法是否有效

對於理想的系統而言,它的精度不會受召回率的影響。通常相同的召回率,精度越高越好,但是如果A/B兩條曲線存在交點,這時候就要根據系統自己的使用場景,是關心高召回率還是高精度來選擇

F-measure

組合Precision和recall,來衡量演算法的有效性

文字獲取和搜尋引擎如何評估一個演算法是否有效

如何來衡量排序方式

使用平均精度。

文字獲取和搜尋引擎如何評估一個演算法是否有效

圖中+號表示正確的結果,從上到下表示順序

平均精度計算中,沒有出現的精度,認為是0

此時,當任意一個文件的順序發生變化,比如,位置下降,那麼整體精度下降,上升,整體精度上身,能對排序產生靈敏的反應

衡量多個查詢的排序影響

MAP:對每一個的平均值做算術平均值,即把每個平均值相加再除以中的數量
gMAP:幾何平均值,即把所有的平均值相乘,再做n次冪的根號運算

MAP的值主要取決於最大的值,也就是那個查詢特別相關;gMAP則受單次平均值低的影響,所以當想要提高搜尋結果的質量,可以用gMAP來衡量,想讓整體的查詢最好,就用MAP

單個排序衡量

有的查詢結果只有1個結果,比如想知道某個網站的主頁,使用排序位置的倒數更好,當排在後面的時候,衡量結果越小,更直觀

多層次相關性判斷

每個查詢結果和查詢的關鍵字的相關性程度是不一樣的,比如結果1的相關性是3,結果2的相關性是2,值越大,越相關。
一種簡便的方式是直接加上所有的相關性,這種方式對相同相關性的順序無法體現。
這時可以給每個位置一個加權,同樣的相關性,越排在後面,它被使用者選中的機率越小,因此共享越低,一種方式是相關性除以logR,R為順序,這種方式稱作DCG。
但是由於他會隨著高相關的一直遞增,而對於某些結果而言,高相關的結果本來就少,就會失去公正性,所以實行標準化,稱作NDCG

文字獲取和搜尋引擎如何評估一個演算法是否有效

A-B測試

將兩個方法返回的結果混合起來,在使用者不知道的情況下進行選擇,使用者最終點選那個方法的連線多,就證明那個方法更好

符號統計測試

對於多次實驗的結果做平均值,如果表明實驗A的平均值比B的平均值低,真的表明A比B要好麼?而不是因為你選的特定的查詢呢?

可以通過符號統計來說:

  • 一是做簡單的比較(sign test),如果B比A好,用減號,否則用加號;
  • 二是使用Wilcoxon方法,不僅看符號而且看數值,一般來說,當得到的統計結果在95%區間之外,就可以認為平均值計算是成立的
文字獲取和搜尋引擎如何評估一個演算法是否有效

選擇全部文件的子集做判斷用於測試

  1. 選擇多個排序的方法
  2. 讓每個排序方法返回前k個結果
  3. 將所有的排序返回的k個結果合成一個結果池以供人來判斷
  4. 未放入池中的結果認為是不相關

這種方式對已有的文件系統是有效的,但是新的產生的效果可能不好

相關文章