推荐系统框架上的理解

深度解析京东个性化推荐系统演进史:
https://blog.csdn.net/qq_40027052/article/details/78733365
强推一个博主:【可惜很久没有更博了】【本文主要参考】
https://www.cnblogs.com/redbear/p/8594939.html#3938512

1.概述

推荐系统包括四种推荐方式:

  • 热门推荐:就是热门排行榜的概念。这种推荐方式不仅仅在IT系统,在平常的生活中也是处处存在的。这应该是效果最好的一种推荐方式,毕竟热门推荐的物品都是位于曝光量比较高的位置的。
  • 人工推荐:人工干预的推荐内容。相比于依赖热门和算法来进行推荐。一些热点时事如世界杯、nba总决赛等就需要人工加入推荐列表。另一方面,热点新闻带来的推荐效果也是很高的。
  • 相关推荐:相关推荐有点类似于关联规则的个性化推荐,就是在你阅读一个内容的时候,会提示你阅读与此相关的内容。
  • 个性化推荐:基于用户的历史行为做出的内容推荐。也是本文主要讲述的内容。

  • 其中,前三者是和机器学习没有任何关系的,但却是推荐效果最好的三种方式。一般说来,这部分内容应该占到总的推荐内容的80%左右,另外20%则是对长尾内容的个性化推荐。

2.整体架构

这里写图片描述

3.Online部分

这里写图片描述
核心模块
业务网关,推荐服务的入口,负责推荐请求的合法性检查,组装请求响应的结果。

推荐引擎,推荐系统核心,包括online逻辑,召回、过滤、特征计算、排序、 多样化等处理过程。
数据路径
1、请求的刷新从gateway,经过流量分配模块,传到业务gateway,业务gateway支持http,tcp(使用thirtf协议或者protobuf 协议)等多种类型接口;

2、用户行为数据,从gateway到Flume agent,然后到kafka,为后面online,realtime userprofile部分的提供实时数据,也为offline部分的数据存储系统提供数据。

**推荐引擎主要部分是 召回(粗排序) + 精排序(Ctr预估等)
其实感觉推荐引擎中这两个关键部分有很多重复的地方(我在想甚至用的算法可能都一样,不过特征应该不太一样)只不过一个是粗排序,一个是精排序
而且粗排序时,由于数据量太大【item太多】,使用基于内存的协同过滤时会离线计算好用户/物品相似度矩阵【使用SVD++等方法时直接还原预测出user-item矩阵,离线计算出来之后就存储这个就行了?】,online的时候通过各种召回器生成对应用户的倒排索引,使用其他算法时暂时不明白离线和在线都具体在做什么。总之最后会在线生成召回之后的倒排索引。**

3.1 Recall【召回】

用户请求到recall引擎后,会根据用户行为和相关配置,启动不同的召回器,下发召回任务,用户行为只要是看是否为新用户进冷启动,相关配置可能就是地区,国家等差异。用户的userprofile如果少于几个行为,一般建议为5-10个点击行为,少于这个标准属于冷启动用户,那么在recall manager的队列里只有冷启动召回器和热门召回器。热门召回器是为了保证推荐内容的热门度,而冷启动召回器是保证推荐结果的新鲜度。recall引擎还要负责任务分配,根据推荐场景,按召回源进行任务拆分,关键是让分布式任务到达负载均衡。

在各个召回器返回后recall manager收集返回结果,也就是各个召回器的返回的message_id的倒排队列,然后再进行一次整体的ranking。
这里写图片描述
这里写图片描述
召回阶段,获取候选集,一般从基于用户画像、用户偏好、热门label等维度进行召回,如果是用户画像中点击少于10个会使用冷启动服务进行召回;

【补充:基于内容的召回器,热门类别召回器,实时人工热点召回器,协同过滤(用户行为)召回器等。。。】

过滤阶段,基于人工规则,和政策规则,避免涉黄,避免政治明感等内容,例如最近的未成年孕妇等进行过滤,总之计算保留合法的,合乎运营需要的结果;

特征计算阶段,结合用户实时行为、用户画像、知识图谱,计算出召回的候选集的特征向量;

排序阶段,使用算法模型对召回候选集进行粗排序,因为一般用户请求10条数据,召回样本大概在200-400个所以在召回器的排序内会进行序列重新调整,然后总体ranking时会选取粗排序的前100或前200结果,并非召回结果都是用,避免不必要的计算,增加响应时间。

【recall Manager作用】:生成倒排索引+子策略融合【即融合各召回器的内容】

基于内容的召回

主要是以之前 NLP 得到的内容画像为基础,以item 对应分类/主题/关键词的权重建立召回,依据用户画像的相应权重和内容画像的距离排序召回。

基于用户群

首先我们需要对用户分群,聚类的方案有很多,

  1、对item进行向量化(w2v)然后对item进行聚类,用户对item的行为就可以把item的簇赋值到user身上。

  2、直接对用户进行向量化,比如降维。

总之最终的目的就是将用户embedding成一个向量,然后在对用户向量进行聚类,一般k-means就可以胜任大部分的场景。

倒排链

tag-itemList,对每个用户的tag进行遍历,然后通过倒排链快速找到含有该tag的itemList然后topN抽取。

子策略融合

为了结合不同触发算法的优点,同时提高候选集的多样性和覆盖率,需要将不同的触发算法融合在一起。常见的融合的方法有以下几种:

加权型:最简单的融合方法就是根据经验值对不同算法赋给不同的权重,对各个算法产生的候选集按照给定的权重进行加权,然后再按照权重排序。
分级型:优先采用效果好的算法,当产生的候选集大小不足以满足目标值时,再使用效果次好的算法,依此类推。
调制型:不同的算法按照不同的比例产生一定量的候选集,然后叠加产生最终总的候选集。
过滤型:当前的算法对前一级算法产生的候选集进行过滤,依此类推,候选集被逐级过滤,最终产生一个小而精的候选集合。
目前我们使用的方法集成了调制和分级两种融合方法,不同的算法根据历史效果表现给定不同的候选集构成比例,同时优先采用效果好的算法触发,如果候选集不够大,再采用效果次之的算法触发,依此类推。

3.2 Ranking排序【待更新】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值