使用NDCG評估關鍵詞推薦系統的相關性

2021-06-18 18:18:02 字數 1076 閱讀 1861

對於傳統推薦策略, 我們在驗證其效果的時候, 一般會採用以下流程驗證其實驗效果:

offline 的評測: 思路基本和傳統機器學習的思路類似, 例如在推薦演算法中我們直接使用auc,f2等評估模型效果一樣, 線下使用測試資料就能知道演算法的初步效果。

使用者調研實驗: 該方式需要人的參與, 例如招一批人, 不告訴他們新老演算法的介面或是使用的演算法, 然後看使用者的行為, 之後使用他們的最終互動, 或是選擇判定演算法/互動方案的優略。

線上實驗: 最真實的嘗盡, 例如小流量進行a/b test

cg

要介紹ndcg,我們首先介紹cg(cummulative gain), 其思想比較簡單, 就是將相關性的分值累加後, 作為某個query/ 請求結果的分值。

reli 為處於位置i的推薦結果與query的相關性, p代表我們要考察前p個結果。

dcg

cg的乙個缺點是cg沒有考慮結果處於不同位置對結果的影響,例如我們總是希望相關性高的結果應排在前面,相關性低的結果排在靠前的位置會嚴重影響使用者體驗, 所以需要在cg的基礎上引入位置影響因素,即dcg(discounted cummulative gain)

即相同的相關性rel,排在對整次檢索結果的正向影響,相較於放在後邊更大。

ndcg

例如我們定義:

其中dcg的定義如上, idcg為特定query返回的最好結果, 即假設返回結果按照相關性排序, 最相關的結果放在最前面, 此序列的dcg為idcg。因dcg的值介於 (0,idcg],故ndcg的值介於(0,1]

具體操作方式

在具體操作中, 可以事先確定query和結果的相關係分級, 例如可以使用 0,1分別表示相關或不相關, 或是這是0~5分別表示嚴重不相關到非常相關。 相當於確定了rel值的範圍。

之後對於每乙個query的返回結果給定rel值,然後使用dcg的計算公式計計算出返回結果的dcg值。

使用根據sort後的rel值得序列計算idcg值, 即可計算ndcg

參考文獻:

可關注微博: weibo.com/dustinsea

也可直接訪問:

final關鍵詞的使用

1.final修飾變數的時候 表示這個變數的值不可變,只能在初始化的時候對它進行賦值 如果是類的成員變數也可以在建構函式中對它進行賦值 賦值以後變數的值不能改變。2.final修飾物件的引用 這個時候引用名的引用物件是不能夠改變的,但是物件中的內容是可以改變的。舉個例子 在上面的例子中,如果執行st...

static 關鍵詞的使用

2.1 什麼叫函式重複定義 我們經常會遇到報錯,說變數或者函式重複定義。那麼,在此,首先我舉例說明一下什麼叫函式的重複定義。檔案 void test 檔案void test 那麼,在編譯的時候是不會報錯的,但是,在鏈結的時候,會出現報錯 multiple definition of test 因為在...

使用python提取關鍵詞

需要記錄的是freqdist的成員函式 plot n 繪製出現次數最多的前n項 tabulate n 該方法接受乙個數字n作為引數,會以 的方式列印出現次數最多的前n項 most common n 該方法接受乙個數字n作為引數,返回出現次數最多的前n項列表 hapaxes 返回乙個低頻項列表 max...