一文带你掌握推荐系统( 二 )


这部分内容主要分为整体技术框架,推荐系统架构、推荐引擎架构这几部分 。
它们依次为包含关系,推荐系统是整体技术框架中的一环,推荐引擎又是推荐系统的一环 。
整体技术框架
下图为推荐系统的整体技术框架:

一文带你掌握推荐系统

文章插图
 
从下往上依次为数据的生产、存储、候选集触发,融合过滤重排序 。重排序之后就是输出的推荐结果,然后再供各业务调用,比如猜你喜欢,看了又看,买了又买…
推荐系统架构
整个推荐系统可以看作是一个加工厂,输入用户和物品数据,输出用户可能会感兴趣的物品清单,然后从物品清单中取前若干个作为推荐结果给到用户 。
在这个过程中还需要做一些过滤,排序工作,输出结果的时候最好能让用户知道为什么推荐这个东西,这样用户的接受度会高一些 。
一文带你掌握推荐系统

文章插图
 
比如已经产生了一个用户可能感兴趣物品的Top100,之后需要把用户已经买过的东西过滤掉 。
然后再基于用户的一些历史行为进行排序,比如经常看的东西权重高一些,很久之前看的东西权重低一些,最终排一个名次,再按照排序名次取前10个展示给用户 。
要实现这个效果,就需要依赖于很多推荐引擎,简单理解就是会很多个推荐人,各自负责推荐一些候选结果 。
推荐引擎架构
单个推荐引擎和整体推荐架构没什么特别大的差异,无非是推荐引擎先自己走一遍推荐流程,把输出的推荐结果作为新的输入部分,再走一遍推荐流程 。
推荐引擎整体可以分为四部分,分别是用户特征、物品候选集、用户-物品匹配、过滤、融合和排序 。
一文带你掌握推荐系统

文章插图
 
用户特征部分做的事情主要是将用户的行为数据(点击、浏览、购买等)和属性数据(人口属性、用户关系、兴趣爱好等)转化为对应的特征,供用户-物品匹配部分利用 。
物品候选集就是需要给用户匹配的物品,通常也需要转化为对应的物品特征 。
有了物品特征和用户特征之后,需要做的就是生成用户-物品的初始化推荐列表 。
再之后就是基于初始推荐列表的一些处理,过滤掉一些东西,按照用户的行为反馈、物品属性和一些产品策略再进行列表顺序的调整,生成最终的推荐结果 。
通用推荐流程
上面主要是一些架构相关的东西,这部分主要是如何生成推荐结果 。
理论上推荐流程可以分为挖掘》召回》排序这几部分 。
一文带你掌握推荐系统

文章插图
 
挖掘就是上面说的用户特征和物品特征的生成部分,这部分做好了,后面的推荐结果才会有好的效果 。
召回就是从原始的数据集中基于种种策略先挑选一部分物品,这部分需要尽可能全的覆盖用户需求,通常会把十万甚至百万级的候选集过滤到数百量级 。
排序就是针对召回的数百个物品进行更深层次的加工,优先选择若干个结果推荐给用户,通常数量在数十级 。
以上是理论上的流程,然而实际上每个部分都比较复杂,而且也不仅仅只有一个模型,通常情况下都会有N多模型,不同的模型用到的可能是不同的算法和策略…
一文带你掌握推荐系统

文章插图
 
常见的推荐算法
这部分主要是一些常见算法的简单介绍,篇幅有限不详细展开,之前写过一篇算法相关的文章,感兴趣的可以看一下 。
产品经理必知的推荐算法二三事
基于流行度的推荐
其实就是我们通常说的热门,基于最高评分、最多购买、最多下载、最多观看等维度给用户进行推荐 。
通常情况下可以作为冷启动策略或者兜底的策略,前者是用户刚进来没有任何信息和行为偏好的时候,后者是在其他算法没有推荐结果的时候作为替补策略 。
通常情况下计算规则基本都符合下面这个公式:
  • 热度分=(基础分+加权分+行为交互分)*时间衰减
这里面会有很多变形,比如可能需要按照不同类目、维度给予不同的初始权重,可能会人工干预做一些升降权,不同行为的权重会不同等等…
基于内容的推荐
首先澄清一个误解,基于内容的推荐包含有标签的推荐,但并不等于标签的推荐,标签只是基于内容推荐的一小部分 。


推荐阅读