對於傳統推薦策略, 我們在驗證其效果的時候, 一般會採用以下流程驗證其實驗效果:
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...