资源技术动态推荐系统的评价标准

推荐系统的评价标准

2019-10-16 | |  68 |   0

原标题:推荐系统的评价标准      来源:AI研习社

链接:https://www.yanxishe.com/TextTranslation/1296


由于推荐系统能够对每一个用户作出更个性化地推荐,所以它在电子商务中变得越来越流行。MAP@K(Mean Average Precision at K)是一种评价推荐系统性能的典型指标之一。然而在某些时候,额外的评价标准和可视化的使用能够对模型性能提供更好的指导。本文讨论了MAR@K(Mean Average Recall at K )、覆盖面、个性化以及列表内相似度这三个指标,并使用这三个指标去比较三个简单的推荐系统。


我已经将这些功能全部封装到一个python库 — recmetrics,如果你想使用以上的任何一个评价指标或者本文讨论的任何一个技术点,你只需要在命令行执行以下命令即可安装:

$ pip install recmetrics


Movielens数据集


我们在例子中使用的数据来自于流行的Movielens 20m数据集。这些数据包括用户的电影评分和电影类型。(为了增加训练时间,我们会对数据集进行修剪,只包括那么评价电影超过1000部的用户的评分,并且评分低于3分的会被去掉。)

1543395662333010.png

                        用户电影评分样例

模型


三个不同的推荐系统将会被测试和比较。

1. 随机评价模型(对每个用户随机推荐10部电影)

2. 流行度推荐模型(对每个用户推荐10部最流行的电影)

3. 协同过滤模型(使用SVD进行矩阵分解)

 让我们开始用这些评价标准和诊断图来比较这些模型吧!


长尾图


我喜欢通过看长尾图来开始每一个推荐项目。该图用于探索用户项目交互数据中的流行模式,如点击、评价或购买。通常,只有很小一部分的物品有大量的交互作用,这被称为“头部”。大多数项目都在“长尾”中,但它们只占很小比例的交互作用。


1543395662460517.png

长尾图(Movielens 20m样例的评价数据)


由于在训练数据中存在许多对流行项目的观测,因此推荐系统并不难学会准确预测这些项目。在电影数据集中,最受欢迎的电影是大片和经典。这些电影对于大多数用户来说已经是众所周知的,并且它们的推荐可能不会提供个性化体验或者帮助用户发现新的、相关的电影。相关建议被定义为用户在测试数据中积极评价的项目的建议。这里确定的度量提供了评估推荐的相关性和有用性的方法。


MAP @ K和MAR @ K. 


推荐系统通常为测试集中的每个用户产生推荐的有序列表。 MAP @ K可以为你提供信息,让你了解了解推荐项目列表的相关性,然而,MAR @ K可以深入了解推荐者能够如何在用户在测试集中回忆用户评价的所有项目。我不会详细描述MAP @ K和MAR @ K,因为可以在这里找到很好的描述: 


推荐系统的平均精度(MAP) (这里有一个双关语)既然你正在读这篇文章,你可能刚刚遇到“平均平均精度”这个词,或者...... sdsawtelle.github.io


MAP@K 在ml_metrics库中可以获得,我在recmetrics里也准备了MAR@K 。

1543395662384924.png

通过MAR @ K,协同过滤器能够比其他模型更好地为用户调用相关项目。


覆盖率


覆盖率是模型能够在测试集上推荐的训练数据中项目的百分比。在这个例子中,流行度推荐者只有0.05%的覆盖率 ,因为它只推荐了10个项目。随机推荐器的覆盖率接近100%。令人惊讶的是,协同过滤器只能推荐其训练的项目的8.42%。  


1543395662744165.png

个性化

个性化是评估模型是否向不同用户推荐许多相同项目的好方法。用户的推荐列表之间存在差异(1-余弦相似性)。一个例子将最好地说明如何计算个性化。  

1543395663419133.png

3个不同用户的推荐项目示例列表。

  1543395663884885.png

首先,每个用户的推荐项目表示为二进制指示符变量(1:向用户推荐该项目.0:不建议用户使用该项目)。

1543395663396956.png

然后,跨所有用户的推荐向量计算余弦相似度矩阵。  

1543395663515345.png

Finally, the average of the upper triangle of the cosine matrix is 最后,计算余弦矩阵的上三角的平均值。个性化是1 - 平均余弦相似度。 高个性化分数表示用户的推荐不同,这意味着该模型为每个用户提供个性化体验。

列表内的相似度


列表内相似度是推荐列表中所有项目的平均余弦相似度。该计算使用推荐项目(例如电影类型)的特征来计算相似度。通过示例也可以最好地说明该计算。  

1543395663553729.png

针对3个不同用户的电影ID的示例推荐。  

1543395662333010.png

这些电影类型特征用于计算推荐给用户的所有项目之间的余弦相似度。此矩阵显示用户1的所有推荐电影的功能。 可以为每个用户计算列表内相似性,并对测试集中的所有用户求平均,以获得对模型的列表内相似性的估计。  

1543395663524553.png

如果推荐系统向单个用户推荐非常相似项目的列表(例如,用户仅接收浪漫电影的推荐),则列表内相似性将很高。  


使用正确的训练数据


这儿有一些小技巧可以用于快速改进推荐系统。

1. 从训练数据中删除流行项目。(这对于在用户可以自己发现这些条目,并且可能不会发现这些建议有用的情况是适当的)。

2. 按用户的价值,例如平均交易值。这可以帮助一个模型学会推荐项目,去引导忠诚度或高价值的用户。


结论


一个好的推荐系统既有相关的建议,也有有用的建议。通过使用多个评估度量的组合,我们可以开始通过不仅仅是相关性来评估模型的性能。如果您想使用这些度量和绘图来评估您自己的推荐系统,请使用我的python库。


发起:王立鱼 校对:酱番梨 审核:酱番梨

参与翻译(2人):酱番梨、曾祥极

英文原文:Evaluation Metrics for Recommender Systems

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:如何让机器像人一样听声音

下一篇:深度学习文本分类实战报告:CNN, RNN & HAN

用户评价
全部评价

热门资源

  • 应用笔画宽度变换...

    应用背景:是盲人辅助系统,城市环境中的机器导航...

  • GAN之根据文本描述...

    一些比较好玩的任务也就应运而生,比如图像修复、...

  • 端到端语音识别时...

    从上世纪 50 年代诞生到 2012 年引入 DNN 后识别效...

  • 人体姿态估计的过...

    人体姿态估计是计算机视觉中一个很基础的问题。从...

  • 谷歌发布TyDi QA语...

    为了鼓励对多语言问答技术的研究,谷歌发布了 TyDi...