产品经理必知的推荐算法二三事

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

编辑导语:如今在互联网大数据下,很多功能和信息是通过算法进行推荐的,比如每个人的淘宝推荐里,可能都是一些自己感兴趣的东西,这就是根据推荐算法做到的;本文作者说明了产品经理需要知道的推荐算法,我们一起来看一下。

产品经理必知的推荐算法二三事

最近在了解推荐算法相关的东西,翻了一些资料,对常见的推荐算法有了一些基本的了解,就想着和大家分享下。

先来回顾一下互联网诞生到目前为止,我们寻找信息的方式变化——最早期的时候,信息是比较稀缺的,那个时候信息比较分散,寻找的效率也较低,主要是人找信息。

后来信息逐渐丰富起来了,有些人或者公司专门把各种信息聚集在一个地方,人们可以通过类目导航进行查找,典型的公司是三大门户。

再后来信息量越来越大,人工添加的类目已经不能覆盖所有信息了,于是诞生了另外一种信息获取方式——搜索,典型的公司是Google、百度。

再再后来,人与信息的关系从单向的人找信息演变成了现在的双向关系,人找信息,同时信息也在找人,在谈到信息找人的时候,就不得不提到推荐算法了。

本文会简单的说明热度算法、协同过滤、基于内容的推荐和混合方法这几种推荐算法…

鉴于主页君对算法的了解并不是特别多,所以只是简单的原理说明,不涉及到实操。

一、热度算法

说到热度算法有些人可能比较陌生,换个词大家应该就知道了,那就是排行榜。

排行榜按照我们的理解就是一个榜单,按照某种规则给出1到N的排名,我们优先去选择榜单上排名比较靠前的东西。

热度算法也是类似的原理,基于某些规则计算一个热度分,然后取TopN;此外可能还会有一些人工干预的成分,比如加精、编辑推荐等等。

热度算法的计算公式可以简单的参考下面这个基础公式:

热度分=初始热度分+用户行为交互分-时间衰减分

其中初始热度分又可以分为两部分,一部分是基础分值,一部分是加权或者降权。

基础分值指的是本身计算出来的分值,以一篇文章为例,包含了作者信息、文章信息;那相关的元素就有作者等级、是否认证、历史发文情况、历史文章数据表现情况、文章长度、图片数量、关键词等。

基于上面这些相关元素,可以计算出一个基础分值,然后再结合着一些加权或者降权处理就能计算出来一个初始的热度分。

加权项可能有干货类加权,新人投稿加权,运营干预加权等等,降权项可能包含XX过于热门降权、包含XX关键词降权、涉嫌抄袭降权等等。

计算出一个初始的热度分之后,取TopN出来就可以推荐给用户了。

用户行为交互分指的是这个东西推荐给用户之后的一些反馈,常见的反馈主要分为两种,分别是正反馈和负反馈。

正反馈是常见的点击、转发、评论、收藏、赞,基于用户的这些行为表现再对内容重新进行分值计算,这里面各个行为的权重是不同的,具体权重需要结合业务属性进行确定。

负反馈是用户明确表现不来不喜欢推荐的行为,比如减少类似推荐,基于得到的负反馈信息,对分值进行一些减分处理。

时间衰减指的是分值会随着时间进行衰减,避免旧内容的热度分一直很高,新内容无法露出。一般会采用牛顿冷却定律,说人话就是非线性衰减。

产品经理必知的推荐算法二三事

热度算法大致就是上面说的这样,比较容易实现,适合做冷启动用,缺点是千人一面,没办法做个性化的分发,而且新内容比较难露出。

二、协同过滤

协同过滤主要是通过计算人、物之间的相似性来进行推荐,主要包含人与人、物与物和人与物之间的相似性。

常见的协同过滤算法主要有基于人的协同过滤、基于物品的协同过滤和基于模型的协同过滤。

1. 基于人的协同过滤

顾名思义就是通过计算人与人的相似度来进行物品推荐。

比如小A喜欢物品A、物品B,小B喜欢物品C、物品D和物品E;而小A和小B之间是有一定相似度的,所以就给小A推荐小B喜欢的物品C,可参考下面的示意图。

产品经理必知的推荐算法二三事

基于人的协同过滤

这里面有两个关键问题:

  • 要找到和小A兴趣相似的用户集;
  • 要找到这个集合中的用户喜欢且小A没有听说过的东西。

具体实现的步骤是:

  • 首先找到和小A相似的用户;
  • 然后找出相似用户喜欢的物品,并且预测小A对这些物品的评分;
  • 之后过滤掉小A已经消费过的物品;
  • 最后将剩余的物品按照评分进行排序,并返回TopN。

基于人的协同过滤的优点是能帮助用户发现一些比较新鲜且可能会感兴趣的东西,缺点是随着用户数量的增加,计算用户之间兴趣相似度的复杂度会急剧增加,而且对于新物品或者新用户的推荐效果可能都不太好。

2. 基于物品的协同过滤

顾名思义就是基于物品之间的相似度进行推荐。比如小A喜欢物品A和物品B,物品A和物品C之间有着一定的相似度,那就可以给小A推荐物品C,可参考下面的示意图:

产品经理必知的推荐算法二三事

基于物品的协同过滤

这里面的关键问题也是两个:

  • 要计算物品之间的相似度;
  • 要基于物品的相似度和用户的历史行为,给用户生成推荐列表。

具体实现方式是:

  • 分析用户的行为记录,计算物品之间的相似度;
  • 基于物品相似度和用户的历史行为生成推荐列表,和用户历史上感兴趣的物品越相似的其他物品排序会越靠前;
  • 最后是基于相似度矩阵的最大值进行归一化,提升推荐的准确率。

需注意的是这里的相似度不是物品与物品之间的直接相似度,而是它们共同出现在多少用户的兴趣列表中。

比如喜欢物品A的用户中,有多少用户喜欢物品B,两者之间的重复度越高,物品A和物品B的相似度越高。

基于人的协同过滤更多反应的是物品在小圈子里的欢迎程度,而基于物品的协同过滤则考虑了用户的历史行为,相对更个性化一些;但是在物品数量较多的时候,也会面临物品之间相似度计算起来很复杂的问题。

3. 基于模型的协同过滤

顾名思义就是基于一个模型来进行推荐,这里面用到的技术就比较多涉及到机器学习领域,比如关联规则挖掘、聚类、SVD、RBM、图模型等…(反正我也听不懂)。

按照个人的理解就是基于用户和物品之间的感兴趣程度,训练出来一个黑盒模型,基于输入和输出的东西进行不断的优化迭代。

以0-1进行评估,1代表着用户肯定会感兴趣,0代表着用户肯定不感兴趣;这个模型就是计算用户的感兴趣程度,然后优先给用户推荐感兴趣程度较高的东西,最后再结合着用户的反馈来不断优化这个模型。

整体流程就是:

  • 准备训练数据集和测试数据集;
  • 不断的训练模型;
  • 对模型进行评估;
  • 推荐给用户;
  • 优化迭代。

三、基于内容的推荐

基于内容的推荐就是基于内容的推荐,主要是基于内容之间的相似程度。

比如我看了A导演的B电影,其中有C主演,我表现的非常喜欢这部电影。

那理论上来说就可以给我推A导演的其他作品集,或者C主演参演的其他电影,以及B电影的系列电影或者题材类似的其他电影。

这个算法的优点是便于冷启动,而且能够比较好的向用户进行解释,缺点是很难将不同的特征进行组合,比较难带给用户惊喜感,而且用户的属性挖掘不准的话推荐效果会比较差。

四、混合方法

顾名思义就是混合起来用,常见的策略主要包含加权、切换、分区和分层。

加权指的是利用线形的公式将几种不同的推荐算法组合起来,给予不同的权重,比如A算法20%、B算法50%、C算法30%,然后再计算出一个最终推荐结果。

切换指的是在不同情况下用不同的推荐算法,比如冷启动时用热门算法,有了用户行为和数据之后,再切换成其他算法。

分区指的是采用不同的推荐机制,将不同推荐结果分不同的区展示给用户,比如对商品采用基于物品的协同过滤,对文章采用基于内容的推荐。

分层指的是将一个推荐算法的结果作为另一个推荐算法的输入,比如先用基于内容的推荐算法生成一个候选集,然后再利用基于模型的协同过滤从这个候选集中选择内容。

五、One More Thing

首先想说的是关于推荐算法的效果衡量,有一大堆指标来进行衡量,有定性的,有定量的,参见下图:

产品经理必知的推荐算法二三事

素材来源于阿里技术

我没有做过这些东西,没办法详细展开,我们多看看上图就好,在不少地方见到过这个评价体系。

其次想说的是,主页君对这些算法的理解都很浅,感兴趣的小伙伴可以自行了解更多知识;有些知识点万一写错了的话,麻烦指正一下,见谅见谅。

最后,本文在写作过程中主要参考了以下书籍和文章:

《推荐系统实战》——项亮编著

《常用推荐算法》——林肯先生的Blog

《基于协同过滤的推荐方法》——Yanjun

以上,就是本文的主要内容,愿你有所收获;欢迎斧正、指点、拍砖…

#专栏作家#

王家郴 ,微信是chen604841806,公众号:产品经理从0到1,人人都是产品经理专栏作家,喜欢网球和骑行的产品汪,目前奔走在产品的道路上,漫漫产品路,与君共勉。

本文原创发布于人人都是产品经理。未经许可,禁止转载

题图来自 unsplash,基于 CC0 协议

给作者打赏,鼓励TA抓紧创作!

随意打赏

提交建议
微信扫一扫,分享给好友吧。