推荐系统常用评价指标和代码实现
評價指標
Recall
-
名稱: 召回率(真陽性率)
-
意義:在推薦系統中,我們只關心正確推薦的有多少,也就是用戶真實喜歡的,并不會關心推薦錯的,所以我們用召回率,而不是準確率;
-
理解這個前提:混淆矩陣
混淆矩陣: 詳細的可以自己去了解
Recall = TP / (TP + FN)
也就是你所有預測為True的里面,到底有多少是真實值! -
Recall@n指的是推薦的前n個的召回率有多少
代碼實現比較簡單
ROC(AUC)
- 名稱: Curve曲線, AUC是ROC下面的面積
- 意義:ROC的效果是看AUC的面積大小決定的; 如果AUC等于1,那么就是預測全部正確
- 要明白這個,必須知道混淆矩陣。
ROC的橫坐標是FP,縱坐標是TP,一般而言,TP要大于FP,所以曲線是一個凸函數,而且AUC>0.5
AUC的面積越大,說明效果更好
NGCG(Normalized Discounted Cummulative Gain)
-
名稱:歸一化折損累計增益
-
意義:在搜索和推薦任務中,系統常返回一個item列表。如何衡量這個返回的列表是否優秀呢?可以用于評價基于打分/評分的個性推薦系統。
-
要理解這個,得從點點了解開始; 相關性是人工打標簽上去的,不要問為什么
NDCG
G-CG-DCG-NDCG -
G = Gain: 表示列表中每一個item的相關性分數
-
CG = Cumulative Gain:表示對K個item的相關性進行累加
-
DCG = Discounted Cumulative Gain:考慮排序順序的因素,使得排名靠前的item增益更高,對排名靠后的item進行log折損。
如果相關性分數r(i)只有(0,1)兩種取值時,DCG@K有另一種表達。其實就是如果算法返回的排序列表中的item出現在真實交互列表中時,分子加1,否則跳過。
-
NDCG = Normalized Discounted Cumulative Gain:
DCG能夠對一個用戶的推薦列表進行評價,如果用該指標評價某個推薦算法,需要對所有用戶的推薦列表進行評價,由于用戶真實列表長度不同,不同用戶之間的DCG相比沒有意義。
所以要對不同用戶的指標進行歸一化,自然的想法就是計算每個用戶真實列表(指的是groudtruth)的DCG分數,用IDCG表示,然后用每個用戶的DCG與IDCG之比作為每個用戶歸一化后的分值,最后對每個用戶取平均得到最終的分值,即NDCG。
Hit(Hit Ratio)
- 名稱:擊中率
- 意義:在top-K推薦中,HR是一種常用的衡量召回率的指標,而且只是在測試為用戶推薦的items是不是在用戶的真實集合中,并不在乎先后順序!
- 計算公式為:
MAP(Mean Average Precision)
- 所有用戶的平均命中率AP = MAP
- 意義: 僅僅是準確率(召回率或者是HR)是不行的,還得看你的推薦順序,比如搜索引擎里的推薦TOPK,是不是把命中的的排序到前面,而未命中的排序到了后面(這里只有命中和非命中的順序之分,而沒有區分具體的每個item的順序);
比如:【命中,命中,未命中,未命中,未命中】和【未命中,未命中,未命中,命中,命中】顯然它們的準確率都是2/5,但是第一個更好。
注意: 預測的items只要在gt中有,那么就是命中了,我們關系的是命中的順序,而不是精確的,物品2在gt中是第一個,那么預測的物品2也必須是第一個。
- 先看AP,一個用戶的
KKK表示推薦列表的長度;
UUU表示的用戶數量;
mmm用戶實際選擇的物品數;
nnn是給用戶推薦的項目數;
P(k)P(k)P(k)指的是截止到第k個,有多少項目命中
如預測的第一個排名命中了,截止到第一個,命中率是1/1;
第二個排名沒有命中,那么就是0;
第三個排名命中了,截止到第三個,有兩個命中,命中率就是2/3
rel(k)rel(k)rel(k)指的是排名第k的項目是不是被用戶實際選擇;是為1,不是為0
所以對于推薦列表【命中,命中,未命中,未命中,未命中】,假設該用戶在測試集中實際選擇了3個項目,則
MRR(Mean Reciprocal Rank)
- 名稱:平均倒數排序
- 意義: 要查詢的結果值在返回的結果中的排名。)是一個國際上通用的對搜索算法進行評價的機制。(僅僅是排名)
可以用在序列推薦中
- 正確檢索結果值在檢索結果中的排名來評估檢索系統的性能
假如檢索三次的結果如下,需要的結果(cat,torus,virus)分別排在3,2,1的話,排在results的第三個結果就是1/3,排在第二個則是1/2
(注意分母不是所有的結果的個數,而是排名)
ILS
- 意義:ILS 衡量推薦列表多樣性的指標,計算公式
如果,S(bi,bj)S(b_i, b_j)S(bi?,bj?)計算的是iii和jjj兩個物品的相似性,如果推薦列表中的物品越不相似,ILS越小,那么推薦結果的多樣性越好。
coverage
推薦系統能夠推薦出來的物品占總物品集合的比例。
熱門排行榜的推薦覆蓋率是很低的! 因為熱門物品占總體物品是很低的一部分
總結
以上是生活随笔為你收集整理的推荐系统常用评价指标和代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python手机编译器可以干什么_Pyt
- 下一篇: mysql提取各种数据时间的各种方法