文本獲取和搜索引擎如何評估一個算法是否有效

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

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

思路:構建一個能夠重複使用的數據集,而且定義測量辦法,來衡量結果。
感性的來講,使用不一樣的算法做用於同一個數據集,獲得不一樣的結論,根據使用者的使用場景【測量】來判斷哪一個算法更有效,這是由於具體的場景使用,這應該是知道什麼樣的結果是最想要的;
另外一方面能夠從理性的角度來衡量,1是精度(Precision),2是召回率(recall)測試

  • 精度 用來度量算法返回的結果中,有多少是有用的
  • 召回率 用來度量在全部的結果中,有多少被返回了

通常說來,高的召回率意味着低精度

當嘗試去找更多的文檔的時候,那也會查找更多的文件,精度隨之下降 從實用性來說,用戶使用通常只看返回結果的第一屏【通常是10】,那麼能夠在這個範圍內來衡量【前10】的準確率網站

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

對於理想的系統而言,它的精度不會受召回率的影響。一般相同的召回率,精度越高越好,可是若是A/B兩條曲線存在交點,這時候就要根據系統本身的使用場景,是關心高召回率仍是高精度來選擇blog

F-measure

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

如何來衡量排序方式

使用平均精度。ci

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

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

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

衡量多個查詢的排序影響

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. 未放入池中的結果認爲是不相關

這種方式對已有的文檔系統是有效的,可是新的產生的效果可能很差

相關文章
相關標籤/搜索