文 | Nemo@知乎
本文已获作者授权,禁止二次转载

现如今,推荐系统几乎无处不在。

  • 电商购物,有猜你喜欢。

  • 资讯阅读,有个性推荐。

  • 听歌看电影,都能识别你的兴趣。

  • 就连工作社交,也会提示你可能认识的人...

推荐系统火爆的背后,是信息过载的现状下,人们需要通过算法,来帮助自己找到恰当的内容。

每个人的兴趣和需求不同,每个内容的特点也各不相同。如何在内容和用户之间,根据不同的场景环境做出恰当的匹配,也就是推荐系统的核心任务。

举个简单的例子,你平时用美团点餐,它推荐的可能都是你常吃的附近美食,而如果你去了一个新的旅游地,它会给你推荐当地的热门特色餐饮。

精准识别并满足用户不同需求的能力,构成了推荐系统的能力壁垒。

那么,我们该如何量化评估这种差异呢?

单一的衡量标准不存在

推荐得好不好,大家最容易想到的指标,就是点击率。

如果我推荐的内容,就是你满意的,你肯定会点击使用。理论上来说,完美的推荐系统,似乎应该做到100%的点击率。

以资讯产品举例,你每次刷新,刷出来的10条内容你都很喜欢,全都点开看了,这说明我们的推荐非常准。

但这样会带来明显的问题,因为我们追求高点击率,所以会减少冒险尝试,任何不确定的内容,我们都不敢推给用户。结果就是我们只能把用户曾经点过的品类,反复推给他,形成信息茧房,造成用户审美疲劳,然后离开。

这样,尽管我们的点击率上去了,用户留存率却下降了,商业收入也自然而然下降了。

此外,如果我们只关注点击率,就很容易忽略点击质量。举个例子,推荐系统追求点击率的结果,自然就是推荐更多的标题党内容,造成用户点击率很高,阅读时长却非常短。用户被忽悠了两三次以后,很可能愤而离开。

同样的,如果我们只追求阅读时长,可能会推出来大量的长时视频内容,减少短内容的曝光机会。

甚至在产品商业化阶段,我们有时候为了提升广告收益,还愿意牺牲一点点击率、阅读时长等用户指标...

显然,单一的衡量标准,无法确保推荐系统满足我们的需要。

多元的评估方式

推荐系统通常服务于某个具体业务,业务在不同的时间阶段、场景、用户群体下,都有不同的目标,需要灵活考虑。

下面以资讯类APP举例说明:

  1. 不同的阶段:产品发展初期,我们更关注用户的粘性和留存,因此重点会放在用户的点击率、PV、阅读时长上。等到追求商业变现的阶段,更多考虑的就是付费率、广告点击量等商业指标。对应的,推荐系统在不同的阶段也要做相应调整。

  2. 不同的场景:搜索场景考虑的是用户的搜索结果点击排序,追求用完即走。但是feeds流考虑的是用户的CTR、阅读时长、内容多样性。两者完全不同,不可混在一起。因此,对于不同场景,我们可以使用完全不同的推荐模型,将场景隔离开。

  3. 不同的用户:新用户考虑的是快速留存,积攒PV。老用户考虑的是探索兴趣,诱导分享。此外,不同偏好的用户需求各不相同,财经的用户希望内容权威、及时、高效,情感的读者希望内容贴近生活,足够有趣。二者追求的指标显然不需要一致。

考虑到各种不同的诉求,我们的评估方式也要灵活变化。

对不同的场景和用户模型,设定单独的衡量标准。对不同的业务指标,拆解出推荐系统的上线与评估标准。

所谓拆解,其实就是用高频变化的指标,去近似代表我们追求的长期业务指标。

举个例子,在资讯类APP发展早期,我们希望提升日活用户数,提升用户的使用时长。但是只看这些结果指标,并不能指导我们改进业务。

因此,我们可以把这些指标拆解成一些日常容易衡量评估的指标。比如日活用户数等于新增*留存,新增不是推荐系统直接影响的,这里暂不考虑。而留存取决于用户对我们产品的满意度,而满意度又近似等于人均PV(点击)、CTR(点击率)、阅读时长、播放完成率、评论、分享、收藏、点赞等等指标。

由此,我们把推荐系统的评价指标,就拆成了以下这些:

  1. PV:阅读数量,通常我们用人均值代替。对于资讯类APP来说,PV通常意味着用户的使用深度,同时更多的PV也会带来更多的广告曝光和点击,因此PV是对商业模式的一种近似简化,通过灵敏的PV,来间接提升我们的商业收益。用于推荐算法模型训练的素材,其实最关键就是用户对各篇推荐内容点击与否的数据

  2. CTR:点击率,越高代表用户对你的推荐结果越满意。

  3. 阅读时长、播放完成率:阅读时长、播放完成率配合PV,可以规避掉一些无效点击,提升指标的有效性

  4. 评论、分享、收藏、点赞数:这些行为比一般的阅读更重,更能代表用户的偏好,这些指标的加入(权重计分形式),可以让推荐系统更准确把握用户兴趣

  5. 主观评估满意度、新颖性、惊喜度:这三项其实是偏主观的评价,之所以加入,是因为很多用户体验并不能用数据衡量,往往需要用户凭主观感受打分来反映。具体做法有很多种,比如1)给出两篇内容,让用户进行点对点的对比。(2)给单篇内容提供打分选项,建议用户从内容与自身偏好的相关性、内容的信息量等角度给予1~5分的评分。(3)以提出开放性问题的方式来收集用户对自己信息流的反馈

  6. 内容多样性:对用户来说,产品需要经常有新意,不能陷入信息茧房,因此要评估内容多样性指标。比如可以统计用户的展示历史中各种题材、类目、话题的丰富程度如何,丰富度越高代表个体体验的多样性越好。从内容生产的角度,还可以计算基尼系数、推荐覆盖率,来判断各个内容是否都被推出去了。

具体在日常工作中,我们每次迭代推荐系统,通常都会进行AB实验,考虑对以上指标的影响,如果实验整体正向并且效果显著,那么我们会考虑把实验策略推全到全部用户上。

算法侧的评估标准

当然,除了业务指标外,我们还需要考虑算法本身的评估方式。毕竟推荐系统的主体是算法模型,在日常的系统迭代中,有大量的离线场景,需要评估算法效果好坏。

一般而言,算法是用模型去拟合训练数据,然后去预测新数据。它的评估方式也很直接,即预测的准确性。具体来说有召回率、精准率、准确率、F1值、AUC、RMSE...

分类预测类

  1. 召回率:也叫做查全率,全部正样本里,有多少被命中了

  2. 精准率:也叫做查准率,即预测为正的样本里,有多少是真的为正

  3. 准确率:一个综合评价指标,计算的是全部预测项里,有多少是正确的

  4. F1值:综合考虑了召回率和精准率,既考虑是否把全部正样本找出来,也考虑找的这些正样本精准率如何,对不平衡类别非常有效

  5. AUC:综合考虑假正例率和真正例率,得到ROC曲线后,计算曲线下的面积。简单理解,就是0~1之间的值,值越大模型分类效果越好,对不平衡类别非常有效

回归预测类

  1. SSE(和方差)、均方误差(MSE)、MAE(平均绝对误差)、均方根误差(RMSE):这几个都很相似,都是衡量预测值和真实值之间的差别

  2. R Squared:基于方差计算出来的一个比值,取值0~1之间,值越大,模型拟合效果越好

从日常的工作流程上来说,我们会先考核算法模型的AUC,AUC比以往模型有所增长时,我们再做线上AB实验,判断业务指标的增减。

通过灵敏的业务拆解指标,来反映我们对业务目标的迫近。

写在最后

随着业务的发展,推荐系统越大,它的评估复杂度也会跟着提升。

许多新的目标、特殊的场景都需要纳入考虑范围。

比如推荐系统的健壮性(是否容易被攻击)、推荐时效性、推荐地域性、推荐内容质量高低、推荐重复度、用户投诉率等等...

因此,推荐系统的评估方式也需要动态调整。

灵活调整评价体系,让推荐系统更好的服务业务发展,才能让推荐系统永葆生机。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

如何评价一个推荐系统的好坏?相关推荐

  1. 如何评价一个算法的好坏

    首先,这个算法必须是正确的 其次,好的算法应该是友好的,便于人们理解和交流,并且是机器可执行的. 这个算法还需要足够健壮,即当输入的数据非法或不合理时,也能适当的做出正确的反应或进行相应的处理 最后它 ...

  2. 评价一个产品好坏的简单准则:NPS

    如何评价一个产品的好坏?我们往往会给出一大批具体的指标,比如UV值,IP值,PV值,PR值,用户转化率,订单支付率,重复购买率等等,这些指标往往是从运营方的角度,依托运营数据分析得出的结论,这些数据能 ...

  3. 如何评价一个产品经理工作做的好坏?

    有很多小伙伴问我,如何给产品经理定KPI?或者说如何考核一个产品经理的工作是ok的?这个问题确实造成很多产品经理的困惑,产品经理的工作目标是满足用户需求,对用户体验的优化:运营的工作是以KPI为导向, ...

  4. 如何开发一个异常检测系统:如何评价一个异常检测算法

    利用数值来评价一个异常检测算法的重要性 使用实数评价法很重要,当你用某个算法来开发一个具体的机器学习应用时,你常常需要做出很多决定,如选择什么样的特征等等,如果你能找到如何来评价算法,直接返回一个实数 ...

  5. 人工智能-强化学习-算法:Critic 【用于评价一个 Actor/Policy π】--> Q-Learning【用于训练出来一个最优 Actor/Policy π,擅长处理离散型 actions】

    一.Critic的作用 Critic就是一个神经网络,以状态 s s s 为输入,以期望的Reward为输出. Critic的作用就是衡量一个Actor在某State状态下的优劣.Given an a ...

  6. 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...

    自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...

  7. 评价股票博客好坏的指标(第11期)

    评价股票博客好坏的指标(第11期) 2006-1-25,作为一个热爱博客的读者和写手,在博客中寻找有参考价值的文章,是我每天例行的生活内容之一.在股票博客中,我十分喜欢假语村言.高人.江枫的文章,因为 ...

  8. 如何评价一个开源项目?是它了

    本文由X-lab开放实验室博士生赵生宇创作  01 背景 从 2015 年开始参与到开源社区,到 2018 年进入阿里开始做开源运营相关的工作,直到今天在 X-lab 已经读博两年,事实上一直在探索如 ...

  9. 评价一个软件的3个角度

    1.功能 2.用户体验 3.实现 这是从一个软件大赛的评审打分比例,自己归纳出来的.原文大致是软件的创意,实用性,完成度,文档,用户界面,实现难度. 这三个角度应该是比较得当的.也的却很难想出更多的角 ...

最新文章

  1. python拿什么做可视化界面好-用python打造可视化爬虫监控系统,酷炫的图形化界面...
  2. MySQL优化关联查询
  3. 大概看了一下《Flash MX 2004 -- 数据库应用开发 - 基于.NET架构》,感觉有点迷惘了!...
  4. linux最基础安装,Linux Nginx最基础的十大安装步骤(2)
  5. JS弹出窗口的运用与技巧(转)
  6. 在word中给公式添加序号
  7. 三维向量变化为角度_物体的三维识别与6D位姿估计:PPF系列论文介绍(四)
  8. php mysql缓存技术_系统的讲解 - PHP 缓存技术
  9. 敏捷开发系列学习总结(5)——这几招搞定团队协同Coding
  10. drools规则引擎中易混淆语法分析_相互触发导致死循环分析
  11. web.xml中配置:通用的用户登录过滤器(SessionFilter)
  12. 解决 sql server 2005 2000 导出 script 脚本 附近有语法错误
  13. ecmall挂件开发实例二(转)
  14. 【Scratch案例教学】Scratch九九乘法表 少儿编程Scratch创意编程案例教学
  15. 为发泄对上司不满,百度95后程序员删库被判9个月
  16. 用Dockerfile构建MySQL镜像并实现容器启动过程中MySQL数据库系统的初始化
  17. 即时通讯 SDK 一对一通讯技术
  18. Linux 远程工具
  19. 界面(1):对话框和菜单 打印和按钮等杂项
  20. linux下下载openwrt源码,OpenWrt下载编译

热门文章

  1. MySQL5.6 PERFORMANCE_SCHEMA 说明
  2. 【Head First Java 读书笔记】(一)基本概念
  3. AjaxControlToolkit AjaxFileUpload 为英文的解决办法
  4. DEV里的XtraGrid的GridView的一个单元格里显示大量的文字怎么办?
  5. ACM PKU 2663 Tri Tiling http://acm.pku.edu.cn/JudgeOnline/problem?id=2663
  6. 仿Jquery链式操作的xml操作类
  7. Adobe和苹果相互推诿 不支持Flash谁之过?
  8. 这届毕业生薪资高,是真的
  9. 快两年的时间,我都干了啥
  10. HT68F30控制GPG96244QS1 TFT液晶屏