您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页推荐系统中的评价指标

推荐系统中的评价指标

来源:吉趣旅游网
推荐系统中的评价指标

按照推荐任务的不同,最常⽤的推荐质量度量⽅法可以划分为三类:(1)对预测的评分进⾏评估,适⽤于评分预测任务。

(2)对预测的item集合进⾏评估,适⽤于Top-N推荐任务。

(3)按排名列表对推荐效果加权进⾏评估,既可以适⽤于评分预测任务也可以⽤于Top-N推荐任务。。对⽤户 \\(u\\) 推荐了N个物品 \\(R(u)\\),⽤户在测试集上喜欢的物品集合为\\(T(u)\\)1、准确率 Precision

推荐给⽤户的物品中,属于测试集的⽐例:\\[P= \\frac{R(u) \\cap T(u)}{R(u)} \\]

2、召回率 Recall

测试集中有多少在⽤户的推荐列表中。描述有多少⽐例的⽤户-物品评分记录包含在最终的推荐列表中\\[R = \\frac{R(u) \\cap T(u)}{T(u)} \\]

3、F1值

P和R指标有时候会出现的⽭盾的情况,这样就需要综合考虑他们。准确率和召回率的加权调和平均\\[F1 = \\frac{2PR}{P+R} \\]

4、排序分数 Ranking Score

在评估推荐列表时引⽤排序指标很有⽤。推荐系统通常预测排名列表,然⽽⽤户不太可能浏览所有的项⽬。因此,排序指标在测量实⽤性和排名信息时可能很有趣。排序靠前的项⽬更重要。

\\[R=\\frac{1}{|E^{U}|}\\sum_{ui\\epsilon E^{U}}\\frac{p_{ui}}{M-k_{u}} \\]

其中,\\(E^U\\) 表⽰测试集中所有的边的集合,如果\\(u-i\\)在测试集中,则\\(E_{ui} = 1\\),\\(p_{ui}\\)表⽰商品\\(i\\)在⽤户\\(u\\)的推荐列表中的位置,分母\\(M-k_{u}\\)表⽰⽤户\\(u\\)的所有商品数组中除了该⽤户已经购买过的商品外的所有商品。Rank Score 越⼩,说明测试集中的商品越靠前。5、命中率 Hit ratio

\\[HR@K=\\frac{Number of Hits @K}{|GT|} \\]

top-N推荐中流⾏的评价指标。

分母为所有的测试集合,分⼦表⽰每个⽤户top-k推荐列表中属于测试集合的个数的总和。

例如:三个⽤户在测试集中的商品个数分别是10,12,8,模型得到的top-10推荐列表中,分别有6个,5个,4个在测试集中,那么此时HR的值是

(6+5+4)/(10+12+8) = 0.5。

# 计算某个⽤户的hit数

def hit(test_items,pred_items): count = 0

for item in pred_items: if item in test_items: count += 1 return count

⼆、NDCG

在排序学习(Learning to rank)中,⽬标是构建⼀个排序模型⽤于对列表进⾏排序。排序学习的典型应⽤包括搜索列表、推荐列表和⼴告列表等等。

列表排序的⽬标是对多个条⽬进⾏排序,这就意味着它的⽬标值是有结构的。与单值回归和单值分类相⽐,结构化⽬标要求解决两个被⼴泛提起的概念:列表评价指标列表训练算法

列表评价指标

以关键词搜索返回⽂章列表为例,这⾥先分析⼀下列表评价指标要解决什么挑战。

第⼀个挑战就是定义⽂章与关键词之间的相关度,这决定了⼀篇⽂章在列表中的位置,相关度越⾼排序就应该越靠前。

第⼆个挑战是当列表中某些⽂章没有排在正确的位置时候,如何给整个列表打分。举个例⼦来说,假如对于某个关键词,按照相关性的⾼低正确排序,⽂档1、2、3、4、5应该依次排在前5位。现在的挑战就是,如何评估“2,1,3,4,5”和“1,2,5,4,3”这两个列表的优劣呢?举个列⼦来说,对于某个请求关键词,有200篇⽂章实际相关。某个排序算法只认为100篇⽂章是相关的,⽽这100篇⽂章⾥⾯,真正相关的⽂章只有80篇。按照以上定义:准确率: \\(\\frac{80}{100}=0.8\\)召回率=\\(\\frac{80}{200}=0.4\\)。

6、折扣累计收益 DCG (Discounted Cumulative Gain)

主要思想是⽤户喜欢的物品被排在推荐列表前⾯⽐后⾯会更⼤程度增加⽤户体验。解决了准确率和召回率的两个缺点:

1、所有⽂章只被分为相关和不相关两档,分类显然太粗糙2、没有考虑位置因素

对于⼀个关键词,所有的⽂档可以分为多个相关性级别,这⾥以\\(r_1,r_2…\\)来表⽰。⽂章相关性对整个列表评价指标的贡献随着位置的增加⽽对数衰减,位置越靠后,衰减越严重。基于DCG评价指标,列表前k个⽂档的评价指标定义如下:\\[DCG@k=\\sum_{i=1}^{K}\\frac{2^{r_{i}}-1}{log_{2}(i+1)} \\]

DCG缺点:对于排序引擎⽽⾔,不同请求的结果列表长度往往不相同。当⽐较不同排序引擎的综合排序性能时,不同长度请求之间的DCG指标的可⽐性不⾼。

\\[IDCG@k=\\sum_{i=1}^{|REL|}\\frac{2^{r_{i}}-1}{log_{2}(i+1)} \\]\\(|REL|\\)代表按照相关性排序好的最多到位置k的结果列表。\\[NDCG@k=\\frac{DCG@k}{IDCG@k} \\]

# 当 测试集为(⽤户ID,物品ID)

# 得到的排序之后的候选推荐列表ranklist,列表元素内容为[0,1]之间的数值#此时的NDCG 为 真正的物品ID出现在推荐列表中的位置 的 log值def getNDCG(ranklist, gtItem): for i in range(len(ranklist)): item = ranklist[i] if item == gtItem:

return np.log(2) / np.log(i+2) return 0

8、均⽅误差MAE

对打分数据集进⾏评估。表⽰所有测试集中的预测打分和实际打分的差异。\\[MAE=\\frac{\\sum_{(u,i)\\epsilon E^{U}|y_{ui}-\\hat{y}_{ui}}|}{|E^{U}|} \\]9、均⽅根误差RMSE

\\[RMSE=\\sqrt{\\frac{\\sum_{(u,i)\\epsilon E^{U}}(y_{ui}-\\hat{y}_{ui})^{2}}{|E^{U}|}} \\]

10、MAP

对于AP可以⽤这种⽅式理解: 假使当我们使⽤google搜索某个关键词,返回了10个结果。当然最好的情况是这10个结果都是我们想要的相关信息。但是假如只有部分是相关的,⽐如5个,那么这5个结果如果被显⽰的⽐较靠前也是⼀个相对不错的结果。但是如果这个5个相关信息从第6个返回结果才开始出现,那么这种情况便是⽐较差的。这便是AP所反映的指标,与recall的概念有些类似,不过是“顺序敏感的recall”。AP:平均准确率

\\[\\begin{equation*} AP_u = \\frac{1}{|\\mathcal{I}_u^{te}|}\\sum_{i \\in \\mathcal{I}_u^{te}}\\frac{\\sum_{j \\in \\mathcal{I}_u^{te}}\\delta \\left(p_{uj} \\precp_{ui}\\right) + 1}{p_{ui}} \\end{equation*}\\]

其中,\\(p_{ui}\\)表⽰推荐列表中物品\\(i\\)的排序位置。\\(p_{uj} \\prec p_{ui}\\)表⽰物品\\(j\\)的排序位置在物品\\(i\\)的前⾯.

def AP(ranked_list, ground_truth):

\"\"\"Compute the average precision (AP) of a list of ranked items \"\"\"

hits = 0

sum_precs = 0

for n in range(len(ranked_list)): if ranked_list[n] in ground_truth: hits += 1

sum_precs += hits / (n + 1.0) if hits > 0:

return sum_precs / len(ground_truth) else:

return 0

MAP即为所有⽤户的AP的均值\\[MAP = \\sum_{i=1}^N AP_i \\]

三、⾮准确率指标

\\[H=\\frac{1}{N(N-1)}\\sum_{(i,j)\\epsilon N,i\\neq j}(1-\\frac{c(i,j)}{K}) \\]

其中,\\(c(i,j)\\)表⽰⽤户\\(i,j\\)前k个推荐结果中相同结果的个数,N表⽰所有⽤户数。

汉明距离能够有效衡量两个⽤户推荐列表的差异,该值越⼤越说明⽤户之间的推荐结果越不相同,差异性越⼤。

2、Intrasimilarity 内部相关性

对于⽤户u的推荐列表,如果物品与物品之间的相似度越⼤,说明推荐给⽤户的商品⽐较单⼀,推荐算法越发现不了新的物品;反之,如果该值越⼩,则推荐的物品越丰富,越有利于对⽤户的兴趣进⾏扩展。

\\[I=\\frac{1}{N}\\sum_{u\\epsilon U}(\\frac{1}{K(K-1)\\sum_{\\alpha \\neq \\beta }s_{\\alpha \\beta }}) \\]其中,\\(s_{\\alpha \\beta }\\)表⽰物品\\(\\alpha \\beta\\)的相似度,常⽤余弦相似度。3、Popularity 流⾏度

\\[N=\\frac{1}{N}\\sum_{\\alpha \\epsilon O_{R}^{u}}\\frac{d_{\\alpha }}{K} \\]

其中,\\(O_{R}^{u}\\) 表⽰⽤户u的前k个推荐物品列表,\\(d_{\\alpha }\\)表⽰\\(\\alpha\\) 被多少个⽤户购买过,代表该物品的热度。

流⾏度越⼤,说明推荐算法倾向于推荐“热度”越⼤、越流⾏的商品;反之,则越倾向于推荐⽐较冷门的物品,越能反映出⽤户的兴趣。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务