如果你想学习推荐系统相关的技术,那么本文将是一个比较好的demo,这也是根据我之前的工作经验利用开源技术栈搭建的一个小型推荐系统,希望对你有所帮助;
通常情况下,我们谈起推荐系统脑袋里能想到的就是各种算法,协同过滤、DNN、FM等......但在实际工业界里,一个完整的推荐系统远不止算法那么简单,甚至在很多数据量较小的情况下,我们根本都不会使用算法,大部分情况下我们都是在讨论数据如何采集、商品如何找回等等,因此本文将基于一个实际的商品推荐(相关性推荐)case,来看看一个完整的推荐流程里都有哪些东西。
推荐流程
- 初始化
主要用来获取本次请求的上下文信息,如转化实时上下文特征、用户特征向量化等工作 - 召回
通过各种召回策略捞取候选物品。常见的主要分为两类,一类是实时召回,目前比较常见的是基于向量通过搜索引擎进行匹配召回;另一类是离线召回,即通过各种算法在离线平台进行清洗后回流生产DB进行查询,此类一般都是各种X2I算法策略,比如U2I(用户->物品item)、U2G2I(用户->聚类人群->物品item)等; - 打分排序
在这一环节,一般都会经过我们常见的各种算法模型,对召回的整个物品item进行精细化排序,这其中会使用到各种特征工程,也是整个推荐环节非常重要的一环。在该环节,我们可能跟各种特征中心系统、画像系统以及在线预测系统等进行交互。 - 人工干预
推荐本质上就是要寻找一个平衡,为什么这种说呢,是因为算法是没有人工情感的,纯粹的通过算法进行判定在很多情况下是不符合预期的,比如说纯粹的通过CTR进行预测,那么可能会造成一些低俗的内容进行频繁的曝光(符合人性),或者某些热门商户的商品大范围曝光,同时在某些重要场景下,我们可能需要对某些重要信息或物品进行置顶宣传,因此人工干预环境是必不可少的,常见的干预规则主要包括以下几类:- 固定位置曝光
- 疲劳度过滤
- 多样性打散
- 竞对黑名单过滤
- 置顶、置底等
业务场景
现在我们拥有100W的电商数据信息,需要构建一个实时的推荐系统,能够根据用户兴趣特征的变化实时推荐用户感兴趣的商品,推荐的原则就是CTR优先;
此处先实现一个纯粹的推荐场景,然后慢慢的把上面提到的一些功能添加上去
技术选型
ElasticSearch+Blink+TensorFlow + HBASE+Hadoop+REDIS
- ElasticSearch
作为搜索引擎以及向量化召回的主要媒介; - Blink
采集用户的实时点击、浏览数据等,构建用户的实时用户兴趣特征 - TensorFlow
排序算法的编程框架 - HBASE、HADOOP、REDIS
商品内容存储平台
网友评论