工业界推荐系统整体架构了解

时间:2024-04-11 17:48:36

工业推荐系统一般分三部分:在线+近线+离线部分

工业界推荐系统整体架构了解
A、在线部分,一般要经历几个阶段:
召回环节: 将给用户推荐的物品降到千以下规模;
粗排阶段:可选阶段。如果召回阶段返回的物品还是太多,可以加入粗排阶段,该阶段通过一些简单排序模型进一步减少往后续环节传递的物品;
精排阶段: 这里可以使用复杂的模型来对少量物品精准排序;
上业务策略: 对某个用户来说,即使精排推荐结果出来了,一般并不会直接展示给用户,可能还要上一些业务策略,比如:去已读,推荐多样化,加入广告等;
展示给用户:形成最终推荐结果,将结果展示给用户。

B、近线部分, 主要目的是实时收集用户行为反馈,并选择训练实例,实时抽取拼接特征,并近乎实时地更新在线推荐模型。这样做的好处是:用户的最新兴趣能够近乎实时地体现到推荐结果里。

C、离线部分
历史用户行为log——》离线模型训练
通过对线上用户点击日志的存储和清理,整理离线训练数据,并周期性地更新推荐模型。
对超大规模数据和机器学习模型来说,往往需要高效地分布式机器学习平台来对离线训练进行支持。

工业界推荐系统整体架构了解

召回的主要职责是什么?

从千万量级的候选物品里,采取简单模型将推荐物品候选集合快速筛选到千级别甚至百级别,这样将候选集合(即给用户推荐的物品)数量降下来,之后在排序阶段就可以上一些复杂模型,细致地对每个候选集进行个性化排序。

为什么要做召回?

在具备一定规模的公司里,对每一个用户,可供推荐的物品是百万到千万级别的,甚至上亿。对每一个用户,如果对千万级别的物品都使用先进的模型进行挨个进行排序打分,明显速度上是算不过来的,资源投入考虑这么做也不划算。所以先做一个召回,先将可推荐的候选物品数量规模降下来。

为什么召回上的是简单模型?排序阶段上的是复杂模型?

召回上简单模型是因为:一,为了保证速度快;二是为了保证泛化能力
因为召回阶段需要计算的候选集合太大,百万千万级别的,所以要想速度快,就只能上简单模型,使用少量特征,保证泛化能力,尽量让用户感兴趣的物品在这个阶段能够被筛选到,被都找回来。【全】
而排序阶段核心目标是要精准,因为它处理的物品数据量小,所以可以采用尽可能多的特征,上比较复杂的模型,一切以精准为目标。【准】

在搜索类问题中,是在保证召回率的情况下,提升准确率; 而比方垃圾邮件检测之类的问题,是要保证准确率的情况下,提升召回率。
这与我们在机器学习中讲到的,在分类任务中常用的性能度量指标之“查全率/召回率”“查准率/查全率”思想相似。

多路召回怎么做?

目前工业界的推荐系统,召回阶段,一般都采用多路召回策略。
下图是一个简化版本的例子,以weibo信息流排序为例:
工业界推荐系统整体架构了解
不同业务召回路数不太一样,但是常用的召回策略,基本都会包含,比如兴趣标签,兴趣topic,兴趣实体,协同过滤,热门,相同地域等,多者几十路召回,少者7/8路召回。 对于每一路召回,会拉回k条相关物料,这个k值是个超参,需要通过线上AB测试来确定合理的取值范围。
会发现这里有些潜在的问题,如果召回路数太多,对应的超参就越多,这些超参组合空间很大,如何设定合理的各路召回数量是个问题。
另外,如果是多路召回,这个超参往往是不太可能用户个性化的,而是对于所有用户,每一路拉回的数量都是固定的,这里明显有优化空间。
不同用户也许对于每一路内容感兴趣程度是不一样的,更感兴趣的那一路就应该多召回一些,所以要是能把这些超参改为个性化配置,就更好了,有什么好办法解决吗?有。【待续】

概念补充:

协同过滤:

是诞生最早较为著名的推荐算法。通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。
分为两类:基于用户的协同过滤算法、基于物品的协同过滤算法。简单的说就是:人以类聚,物以群分

基于用户的协同过滤算法 User-based
简单说,如果a、b两个用户都买了x,y,z三本书,并都给出了5星好评,那么a和b就被认为是同一类用户。可以将a看过的书也推荐给b。
1)寻找偏好相似的用户(用户间的相似度),方法有:欧几里得距离评价(简单评价用户关系);皮尔逊相关度评价(另一种计算用户关系的方法,比欧几计算更复杂一些,但对评分数据不规范时,它能给出更好的结果);皮尔逊相关系数(用户之间联系的强弱程度);2)为相似用户提供推荐物品。
缺陷:冷启动问题。因为这个算法是依靠用户的历史行为数据来计算相关度的,也就是必须要有一定的数据积累(冷启动问题)。对于新网站或者数据量较少的网站,还有一种方法是基于物品的协同过滤算法。

基于物品的协同过滤算法 Item-based
通过计算不同用户对不同物品的评分获得物品间的关系。基于物品建的关系对用户进行相似物品的推荐。
1)寻找相似的物品(商品间的相似度),方法同上;2)为用户推荐相似物品。

A/B测试:

对产品进行测试,可以为同一个优化目标指定两个方案(比如两个页面),让一部分用户使用A方案,同时另一部分使用B方案,统计并对比不同方案的转化率、点击量、留存率等指标,来判断不同方案的优劣并进行决策,从而提升转化率。