movielens推荐系统_案例|推荐系统的评估指标

55aa2ab68a1483640284ac227222499a.png

推荐系统能够为用户提供个性化体验,现在基本上各大电商平台、资讯平台都会用推荐系统为自家评价下的用户提供千人千面的服务。平均精度均值(Mean Average Precision,MAP)便是评估推荐系统性能的度量标准之一。

但是,使用其他诊断指标和可视化工具可以让模型评估更加深入,甚至还会带来一些其他启发。本文探讨了召回率、覆盖率、个性化和表内相似性,并使用这些指标来比较三个简单的推荐系统。

Movielens数据集

这篇文章中的例子使用的数据是Movielens 20m数据集。这些数据包含用户对电影的评分以及电影类型的标记。 (为了延长训练时间,该数据被下采样,评分仅包括给超过1000部电影打过分的用户的评分,以及3星及其以上的评分。)

c92e4fbaae6002e605b59dd2e55735cf.png
用户电影评级的示例

模型

本文测试并比较了三种不同的推荐系统:

1.随机推荐(随机为每位用户推荐10部电影)

2.根据流行度推荐(向每位用户推荐最受欢迎的10部电影)

3.协同过滤器(使用SVD的矩阵分解方法)

接下来就让我们深入了解这些指标和诊断图,并比较这些模型!

长尾图

长尾图用于挖掘用户-项交互数据中的流行度模式,例如点击次数、评分或购买行为等。通常,只有一小部分项目具有大量的交互,我们称之为“头部”;而大多数项目都集中在“长尾”中,它们只占交互的一小部分。

da56971a5348b0ea9e959def6d7a5d87.png
长尾图 (Movielens 20m评级数据样本)

在训练数据中会对许多热门项目进行多方观察,因此,推荐系统想要准确预测这些项目并不难。在电影数据集中,最受欢迎的电影是大片和经典老片。这些电影已为大多数用户所熟知,推荐这些电影,对用户来说可能并非是个性化推荐,也可能无法帮助用户发现其他新的电影。相关推荐被定义为用户在测试数据时给予正面评价的项目的推荐。这里的指标用来评估推荐系统的相关性和实用性。

MAP和MAR

推荐系统会为测试集中的每个用户生成推荐的有序列表。平均精度均值(MAP)可以让开发者深入了解推荐项目列表的相关性,而召回率可以让开发者深入了解推荐系统的调试性能,如调试用户给予正向评价的所有项目。MAP和MAR的详细描述如下:

Mean Average Precision (MAP) For Recommender Systems​sdsawtelle.github.io
790b715461721397273a796dc5acaf56.png

覆盖率

覆盖率是指模型能够在测试集上推荐的项目占训练数据的百分比。在此示例中,受欢迎度推荐的覆盖率仅为0.05%,它只推荐了10件物品。随机推荐器的覆盖率接近100%。出乎意料的是,协同过滤只能推荐其训练的项目的8.42%。

三个推荐系统的覆盖率比较:

d14b0b97df9286e219f850bcd5b52854.png

个性化

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

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

b67da0f6305fdad129cf74ddee37c107.png

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

f7fad8a563f21c785a29048bca1176e1.png

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

b67994e4d915d5d02326d837342e9e0b.png

最后,计算余弦矩阵的上三角的平均值。个性化是1-平均余弦相似度。

88417f48b5ff44d5842a37a43465cf53.png

高个性化分数表示用户的推荐不同,这也意味着该模型为每一位用户提供个性化体验。

列表内相似性

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

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

8e0f3b783c3b6278b05b55db0be11903.png

这些电影类型特征用于计算推荐给用户的所有项目之间的余弦相似度。该矩阵显示了向用户1推荐的所有电影的特征。

6b366dd0662c8a27012cccf65a22f681.png

我们可以为每个用户计算表内相似性,并对测试集中的所有用户求平均值,从而得到对模型的表内相似性的估计。

f4ea8aa9d593aa5ace5d42bfba53ce2f.png

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

使用正确的训练数据

我们可以对训练数据进行如下操作,从而快速改进推荐系统:

1.从培训数据中删除热门项目 (这一点适用于用户可以自行找到这些项目,以及发现这些项目不具备实用性的情况)。

2.按照用户的值来放大项目评级,例如平均交易值。这样做有助于模型推荐能够带来忠诚度或高价值客户的项目。

结论

一个好的推荐系统能够生成兼具实用性和相关性的推荐结果。

使用多个评估指标来评估模型,能够更加全面地衡量一个推荐系统的性能。

原文链接:Evaluation Metrics for Recommender Systems

以上内容由第四范式先荐编译,仅供于学习交流,版权归原作者所有。


相关阅读:

如何解决推荐系统中的冷启动问题?

推荐系统:混合过滤

推荐系统:协同过滤及其利弊

推荐系统过滤技术:基于内容的过滤及其利弊

推荐系统的工作流程

用Python搭建推荐系统的最佳开源包

如何用Python搭建一个简单的推荐系统?

想要了解推荐系统?看这里!(2)——神经网络方法

想要了解推荐系统?看这里!(1)——协同过滤与奇异值分解

入门推荐系统,你不应该错过的知识清单

推荐系统相关术语知多少
如欲了解更多,欢迎搜索并关注先荐微信公众号(ID:dsfsxj)


本账号为第四范式智能推荐产品先荐的官方账号。账号立足于计算机领域,特别是人工智能相关的前沿研究,旨在把更多与人工智能相关的知识分享给公众,从专业的角度促进公众对人工智能的理解;同时也希望为人工智能相关人员提供一个讨论、交流、学习的开放平台,从而早日让每个人都享受到人工智能创造的价值。

先荐_智能推荐系统_个性化推荐专家​www.tuijianxitong.cn
ae0a324091a0e597dbbc3abd5386e470.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql群集配置_CentOS7 - 建立一个MySQL集群

Standing up a MySQL cluster此配方将指导您完成设置MySQL群集的过程。 通过跨多个系统划分数据并维护副本以避免单点故障,群集数据库可以应对可伸缩性和高可用性的挑战。集群的成员称为节点。 MySQL集群中有三种节点类型:数据节点,API节点和…

叮!您收到一份超值Java基础入门资料!

Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家Java基…

jop怎么读音英语怎么说_“春晚”英语怎么说?

大家都说近年来的春节年味越来越淡,每年陪老人一起看春晚、上网吐槽春晚,应该算是最有年味的一件事了吧!你期待今年的春晚吗?在春晚即将开播之际,先和我一起了解一些有关“春晚”的英语知识吧!01、“春晚”…

2019 年软件开发人员必学的编程语言 Top 3

这篇文章将探讨编程语言世界的现在和未来,这些语言让新一代软件开发者成为这个数字世界的关键参与者,他们让这个世界变得更健壮、连接更加紧密和更有意义。开发者要想在 2019 年脱颖而出,这三门语言一定要关注。 作为软件开发者,…

小数据量计算最大lyapunov代码_Software | 计算Lyapunov指数的GUI工具箱及函数包汇总...

二十年前读书时用过的Lyapunov Exponents Toolbox,推荐给做非线性动力学入门的同学们。那个时候不会编写程序,做分支图、算连续或者离散系统的Lyapunov指数,极其困难,还好有这个工具箱,慢慢看源程序学会写一点改进的程…

git 小乌龟 更新分支_git常用操作

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式&a…

web 服务器 内存 影响_C/C++服务器开发常用的7大开源库,让你在同行中脱颖而出...

C/C服务器开发7大常用开源库,在这里简单介绍一下。1、OpenSSLOpenSSL是一个开放源代码的安全套接字层密码软件库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,应用程序可以使用这个包来进行安全通信,避免窃听&…

pandas 更改单元格的值_懂Excel轻松入门Python数据分析包pandas(二十四):连续区域...

此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的)经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得…

产生式是蕴含式_独栋别墅~下沉式庭院设计

遇见美. 发现美创造美. 成就美有趣、有情奢享生活.创艺空间设计项目概述:这是一套婚房,从设计到装修完毕,历经三年。这是一生幸福开启的地方。一层为会客厅、室内花园、餐厅、茶室、老人房。原始房屋整体空间不够方正,空间利用率低…

在前端中如何在表格中最后一行加入输入框_UI设计进阶干货 — 如何制定UI规范...

APP为何要制定设计规范作为UI设计师,整理设计规范也是设计能力的一种体现。但很多小公司的设计师都觉得, 整个公司只有自己一个设计师, 所有的设计稿都是自己一个人做的, 风格肯定都是统一的, 所以没必要花那么长时间去做一个没有用的东西。但其实规范的本身并不是只…

如何用三元组表表示下列稀疏矩阵_盘一盘 Python 系列特别篇21之:SciPy 稀疏矩阵...

引言和稠密矩阵相比,稀疏矩阵的最大好处就是节省大量的内存空间来储存零。稀疏矩阵本质上还是矩阵,只不过多数位置是空的,那么存储所有的 0 非常浪费。稀疏矩阵的存储机制有很多种 (列出常用的五种):COO (Coordinate List Format)…

六西格玛dfss_向六西格玛质量水平进攻!

为提高设计质量,提升研发团队整体作战能力,2019年初,技术中心确定了大力推进先进质量管理方法DFSS(六西格玛设计)的工作目标。一年来,在DFSS小组的策划组织和通用黑带大师的倾力支持下 ,技术中心各区域工程师积极地学习…

c字符串中包含双引号_必须知道的C语言知识细节:单引号和双引号正确用法

C语言中ACSII码字符单引号和双引号"在程序中经常出现,很简单,但却是十分重要的语法标点符号,初学者容易混淆使用。单引号在字符常量时使用,表示单个字符。例如:char c;c a;c 1;c A;当在单引号中出现两个及以上…

计算机组成原理哈工大期末_浅谈计算机组成原理(三)

1、第二章:存储系统通过下面的思维导图来依次分享「存储系统」里面重要知识点。2、第一节:存储器的结构1. 主存储器:简称主存,又称内存储器(内存),用来存放计算机运行期间所需的大量程序和数据,CPU可以直接…

网页中竖的目录怎么改成横的_怎么学习手绘插画?小白也能入门哦

怎么学习手绘插画?小白也能入门哦!在回答这个问题之前,我们先来认识一下什么插画?相信很多人对插画这个概念是很笼统的。插画在中国被人们俗称为插图。发展至今其应用范围很是广泛包括;出版物配图、卡通吉祥物、广告、…

python自动测试v_python下selenium自动化测试自我实践

周末实验自动化提交数据时,本来没打算写记录的,不过遇到一些问题,觉得可以提提。基本操作就不用写了,搜索过程中都发现了两个博客都出了seleniumpython的书,说明操作一搜一大把。 1. 等待页面加载完成 本来用的sleep()…

graphpad细胞增殖曲线_肿瘤干细胞?居然被这两个新加坡人轻松干掉了?

近日,著名医学期刊《自然•医学》上发表了一篇关于肿瘤干细胞的文章。来自新加坡的研究团队发现,人类非小细胞肺癌的肿瘤干细胞需要大量的蛋氨酸,以维持自身组蛋白的甲基化,这对于肿瘤干细胞的生长和致瘤作用至关重要。同时&#…

isight参数优化理论与实例详解_案例1(ISIGHT集成ADAMS CAR方法实现)

本文字数1304字25图,建议阅读时间7分钟强调一下是ISIGHT,不是INSIGHTINSIGHT是ADAMS内置的一个试验设计模块,它提供了一组统计工具,用于分析仿真结果,辅助优化和改进系统ISIGHT是功能强大的计算机辅助优化平台&#xf…

修改图片src_【学习园地】企业SRC搭建

xSRC-企业SRC搭建腾讯xSRC 开源版是腾讯安全应急响应中心(TSRC)面向合作伙伴推出的安全应急响应中心(SRC)建站软件,软件源代码开放,可支持合作伙伴轻松构建SRC平台,省去大量开发运维工作,并支持个性化功能及页面设置,企…

2 数据源配置_论多数据源(读写分离)的实现方案

好的,作为一个合格的bug生产者,我们直接进入主题,多数据源和读写分离实现方案。首先多数据源和读写分离什么时候我们才需要呢?多数据源:一个单体项目过于复杂,需要操作多个业务库的时候,就需要多…