推荐系统评价指标

1.评分预测
预测准确度:
均方根误差(RMSE):
平均绝对误差(MAE):
关于这两个指标的优缺点,Netflix认为RMSE加大了对预测不准的用户物品评分的惩罚(平方项的惩罚),因为对系统的评测更加苛刻。研究表明,如果评分系统是基于整数建立的(即用户给的评分都是整数),那么对预测结果取整会降低MAE的误差。

2.Top N推荐:给用户一个个性化的推荐列表,预测准确率一般通过准确率和召回率度量。
令 R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表。
那么,推荐结果的召回率定义为:

推荐结果的准确率定义为:
为了全面评测Top N推荐的准确率和召回率,一般会选取不同的推荐列表长度N,计算出一组准确率/召回率,然后画出准确率/召回率曲线。
3.覆盖率
覆盖率(coverage)描述了一个推荐系统对物品长尾的发掘能力,覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。假设系统的用户集合为U,推荐系统给每个用户推荐一个长度为N的物品列表R(u),那么:

覆盖率为100%的推荐系统可以将每个物品都推荐给至少一个用户。热门排行榜的推荐覆盖率是很低的,它只会推荐那些热门的物品,这些物品在总物品中占的比例很小。一个好的推荐系统不仅需要有比较高的用户满意度,也要有较高的覆盖率。
但是上面的定义过于粗略。覆盖率为100%的系统可以有无数的物品流行度分布。为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有的物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。可以用物品在推荐列表中出现次数的分布描述推荐系统挖掘长尾的能力。如果这个分布比较平,那么说明推荐系统的覆盖率较高,而如果这个分布比较陡峭,说明推荐系统的覆盖率较低。有两个比较著名的指标可以用来定义覆盖率。
第一个是信息熵: ,其中p(i)是物品i的流行度除以所有物品流行度之和。
第二个指标是基尼系数(Gini Index): , 是按照物品流行度p()从小到大排序的物品列表中第j个物品。
评测推荐系统是否具有马太效应的简单办法就是使用基尼系数,如果G1是从初始用户行为中计算出的物品流行度的基尼系数,G2是从推荐列表中计算出的物品流行度的基尼系数,如果G2>G1,就说明推荐算法具有马太效应。
4.多样性
为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。多样性推荐列表的好处用一句俗语表述就是“不在一棵树上吊死”。尽管用户的兴趣在较长的时间跨度中是不一样的,但具体到用户访问推荐系统的某一个刻,其兴趣往往是单一的,那么如果推荐列表只能覆盖用户的一个兴趣点,而这个兴趣点不是用户这个时刻的兴趣点,推荐列表就不会让用户满意。反之,如果推荐列表比较多样,覆盖了用户绝大多数的兴趣点,那么就会增加用户找到感兴趣物品的概率。因此给用户的推荐列表也需要满足用户广泛的兴趣,即具有多样性。
多样性描述了推荐列表中物品两两之间的不相似性。假设 定义了物品i和j之间的相似度,那么用户u的推荐列表 的多样性定义如下:

而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:

不同的物品相似度度量函数 可以定义不同的多样性。如果用内容相似度描述物品间的相似度,我们就可以得到内容多样性函数,如果用协同过滤的相似度函数描述物品间的相似度,就可以得到协同过滤的多样性函数。
5.新颖性
新颖的推荐是指给用户推荐那么他们以前没有听说过的物品。在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站在对其有过行为的物品从推荐列表里过滤掉,当然最好是把在其它网站有过行为的物品也过滤掉。
评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就越有可能有比较高的新颖性。但是,用推荐结果的平均度度量新颖性比较粗略,因为不同用户不知道的东西是不同的。因此,要准确地统计新颖性需要做用户调查。
通过牺牲精度来提高多样性和新颖性是很容易的,而困难的是如何在不牺牲精度的情况下提高多样性和新颖性。
6.惊喜度
如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过和这个推荐结果。(具体参考Guy Shani的论文。)
7.信任度
同样的推荐结果,以让用户信任的方式推荐给用户就更能让用户产生购买欲,而类似广告形式的方法推荐给用户就可能很难让用户产生购买的意愿。
提高推荐系统的信任度主要有两种方法。首先需要增加推荐系统的透明度(transparency),而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。这是因为用户一般对他们的好友一般都比较信任,因此如果推荐的商品是好友购买过的,那么他们对推荐结果就和比较信任。
8.实时性
在一些网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效性时就将他们推荐给用户。
推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。很多推荐系统都会在离线状态每天计算一次用户推荐列表,然后于在线期间将推荐列表展示给用户。这种设计显然是无法满足实时性的。与用户行为相应的实时性,可以通过推荐列表的变化速率来预测。如果推荐列表在用户有行为后变化不大,或者没有变化,说明推荐系统的实时性不高。
实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户,这主要考验了推荐系统处理物品冷启动的能力。对于新物品推荐能力,我们可以利用用户推荐列表中有多大比例的物品是当天新加的来预测。
9.健壮性(Robust,鲁棒性)
衡量一个推荐系统抗击作弊的能力。
在实际系统中,提高系统的健壮性,除了选择健壮性高的算法,还有以下方法:
(1) 设计推荐系统时尽量使用代价比较高的用户行为。比如攻击购买行为的代价远远大于攻击浏览行为。
(2) 在使用数据前,进行攻击检测,从而对数据进行清理。
10.商业目标
设计推荐系统时需要考虑最终的商业目标,而网站使用推荐系统的目的除了满足用户发现内容的需求,也需要利用推荐系统加快实现商业上的指标。
11.推荐系统评价指标简表

–《推荐系统评价指标综述》朱郁筱,吕琳媛


[1]: 项亮《推荐系统实践》

项亮《推荐系统实践》读书笔记1-推荐系统评价指标相关推荐

  1. 推荐系统实践读书笔记-01好的推荐系统

    推荐系统实践读书笔记-01好的推荐系统 在研究如何设计推荐系统前,了解什么是好的推荐系统至关重要.只有了解了优秀推荐系统的特征,我们才能在设计推荐系统时根据实际情况进行取舍.本章分3个步骤来回答这个问 ...

  2. 推荐系统实践读书笔记-08评分预测问题

    推荐系统实践读书笔记-08评分预测问题 本书到目前为止都是在讨论TopN推荐,即给定一个用户,如何给他生成一个长度为N的推荐列表,使该推荐列表能够尽量满足用户的兴趣和需求.本书之所以如此重视TopN推 ...

  3. 推荐系统实践读书笔记-02利用用户行为数据

    推荐系统实践读书笔记-02利用用户行为数据 为了让推荐结果符合用户口味,我们需要深入了解用户.如何才能了解一个人呢?<论语·公冶长>中说"听其言,观其行",也就是说可以 ...

  4. 推荐系统实践读书笔记-05利用上下文信息

    推荐系统实践读书笔记-05利用上下文信息 本章之前提到的推荐系统算法主要集中研究了如何联系用户兴趣和物品,将最符合用户兴趣的物品推荐给用户,但这些算法都忽略了一点,就是用户所处的上下文(context ...

  5. 推荐系统实践读书笔记-06利用社交网络数据

    推荐系统实践读书笔记-06利用社交网络数据 自从搜索引擎谷歌诞生后,大家都在讨论互联网的下一个金矿是什么.现在,几乎所有的人都认为那就是社交网络.根据尼尔森2010年的报告,用户在互联网上22%的时间 ...

  6. 推荐系统实践读书笔记-04利用用户标签数据

    推荐系统实践读书笔记-04利用用户标签数据 推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介.GroupLens在一篇文章中表示目前流行的推荐系统基本上通过3种方式联系用户兴趣和物品. ...

  7. 推荐系统实践读书笔记

    最近大概复习了一下这本书,了解了较早的推荐系统的一些方法,记录如下,以便大家对本书内容有个快速地了解.略去了第一张,详细的代码和细节可以参考其他博客.需要关注的地方直接标出了页码. 书里面的代码不是很 ...

  8. 《深度学习推荐系统》读书笔记之推荐系统的进化之路

    来源:https://zhuanlan.zhihu.com/ p/138446984 作者:一块小蛋糕 编辑:深度传送门 最近读完了王喆老师的新作--<深度学习推荐系统>,拿到书之前,期待 ...

  9. 读书笔记 | 《推荐系统》

    读书笔记 | <推荐系统> 引言 协同方法背景下常见问题如下 1.如何发现与我们要推荐的用户有着相似偏好的用户? 2.如何衡量相似度? 3.如何处理还没有购买经历的用户? 4.如果只有很少 ...

  10. python基础学习[python编程从入门到实践读书笔记(连载一)]

    写在前面:本文来自笔者关于<python编程从入门到实践>的读书笔记与动手实践记录. 程序员之禅 文章目录 02变量和简单数据类型 03 列表简介 04 操作列表 05 if语句 06 字 ...

最新文章

  1. Python3 数字(Number)
  2. C语言quick sort快速排序的算法(附完整源码)
  3. Java2Days 2012:Java EE
  4. LPCTSTR和CString的关系
  5. python地理位置聚类_python – 用于聚类地理位置数据的DBSCAN
  6. java oql_深入理解java虚拟机(八):java内存分析工具-MAT和OQL
  7. U盘文件系统无法识别,数据怎么恢复?
  8. 利用栈和队列将队列中的元素逆置☆
  9. Asp .Net Mvc在DeBug模式下设置自定义IP
  10. Lost and Found(结对项目)功能实现
  11. input text 输入即可识别
  12. 802.11帧间隔与无线用户加入网络过程
  13. 写一个含数字,拼音,汉字的验证码生成类
  14. 毕业论文详细--校园网组建
  15. git把一个分支的commit merge到另外一个分支
  16. c语言已知斜率 求倾角,直线与方程(一)倾斜角与斜率
  17. 小程序登录账号 提示系统繁忙,请稍后重试
  18. 创建表 编码_创建没有编码的专业商业网站
  19. 如何把Eclipse修改为黑色主题
  20. 游码编程之Python代码应用

热门文章

  1. 移动APP之专项测试
  2. ibm x3650 服务器安装系统安装,IBM服务器X3650安装操作系统步骤
  3. 百度豆丁文档免费下载神器
  4. Waveform Audio 驱动(Wavedev2)之:WAV API模拟 1
  5. 2008 r2 server sql 中文版补丁_sql2008 sp4补丁
  6. linux chmod 777 r,chmod -R 777 的3种补救办法,附有linux chmod命令语法和结构详解
  7. 2021-4月最全停词表(1893个),速取
  8. 查询和追踪快递单的流向有这么难吗?用VFP其实太简单
  9. VS提示error C2011: “timespec”:“struct”类型重定义
  10. visio软件接口流程图_用Visio制作最专业的技术流程图教程