如何评价一个推荐系统的好坏?_人工智能

文 | 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实验,判断业务指标的增减。

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

写在最后

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

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

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

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

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


如何评价一个推荐系统的好坏?_算法_02