推荐系统调研

一、推荐系统的目的:

  1. 快速定位用户兴趣点,辅助决策,提升用户体验
  2. 提高产品转化率
  3. 把冷门的商品卖给想要的用户,发掘长尾价值

业务场景:sku,类目等 推荐;个性化的排行榜;个性化push内容;feed流订阅推荐

二、针对不同场景的通用架构:

基于离线训练的推荐系统架构设计

场景:手机应用市场、音乐推荐、短视频推荐、资讯、购物
常用算法:逻辑回归(Logistics Regression)、梯度提升决策树(GBDT)和因式分解(FM)
推荐系统调研_第1张图片

面向深度学习的推荐系统架构设计

场景:图像处理、自然语言理解、语音识别、在线广告等具有时序行为、多维数据的推荐系统
常用算法:受限玻尔兹曼(RBM)、自编码器(AE)、卷积神经网络(CNN)、深度神经网络(DNN)、宽度学习(Wide&Deep)等
我理解是多一层特征工程?比如单词的向量化,特征的处理,无论是训练模型还是预测时
推荐系统调研_第2张图片

基于在线训练的推荐系统架构设计

场景:广告和电商等高纬度大数据量、实时性要求很高的推荐系统,例如,新闻事件
常用算法:FTRL-Proximal、AdPredictor、Adaptive Oline Learning 和PBODL等
推荐系统调研_第3张图片

面向内容的推荐系统架构设计

场景:新闻资讯,今日头条、抖音、微博、视频音乐、广告购物朋友圈传播资讯、门户网站等
常用算法:NLP自然语言、word2vec、深度学习DNN、OCR等
推荐系统调研_第4张图片

一个完整的电商推荐系统

推荐系统调研_第5张图片
说明:如图一个完整的推荐系统包含两大核心部分:特征数据和算法引擎。其中特征数据可以分成实时特征和离线特征,两者并行但是不同的处理技术;算法引擎又主要包含召回和排序两部分,两者是有前后依赖关系的推理流程

特征数据包括实时和离线
  • 离线:通过一些分布式数据库来实现数据的部署,初级的推荐服务建议直接使用业内比较成熟的MongoDB或者Elasticsearch来作为数据存储介质
    实时:特征主要需要结合流式计算相关技术,例如通过Kafka的流平台,使用Spark Streaming、Flink或者Storm等来进行流式计算,考虑到实时性和数据的吞吐量,存储的方式可以直接使用REDIS这类缓存存储来实现
  • 压缩:除了以上随着数据量的井喷式发展,整个数据量的读写IO压力会越来越巨大,也逐渐成为系统的瓶颈,优化的方式是对数据需要进行压缩,本团队使用的方式是Google的Protobuf技术,总体使用下来压缩后为压缩前存储空间的一半左右,同时Protobuf的解析效率也是非常高的,优于json格式的解析效率
  • 算法引擎
    最核心的两部分是召回(Recall)和排序(Ranking)
    • 召回:是从海量的数据里快速拿到相对少量的数据,要快而准
      召回的算法和形式多样,如基于内容召回、相似召回、相关召回、模型召回等等,形式上偏好召回,标签召回,兴趣召回,相似召回,互补召回,关联召回,其他召回,热门数据。
      常用召回算法:user/item/model-based CF,
      但召回需要具备高并发与快召回的特点。为了在规定的时间内完成数据的快速召回,将形式多样的召回方法或结果建立了大量的倒排索引,直接推入缓存系统,如:相关相似关系(item2item或者user2item)和规则关系召回(rule),为了适应索引灵活更新和服务灵活扩展,底层也使用了MongoDB与Elasticsearch这种可扩展的分布式弹性存储介质来辅助数据存储
      相似相关召回的数据一般是通过用户行为、订单、点击和素材文本信息等数据通过算法离线或者实时处理好生成pair对,直接存储在例如REDIS这类缓存中,吞吐量天然比较高。如:订单数据的 FGP,ALS算法;点击量的W2V,COV算法;商品名使用BM25算法
      规则召回是根据规则来query召回数据,需要选择合理的数据存储,针对千人千面不同的用户不同的query条件可以设计一套拆分Query增加缓存实现的方式来提高整个召回的性能
    • 排序:是从召回的数据中进行模型的精细排序,复杂而需要精确
      排序这部分核心是模型的训练,模型算法常用的LR(简单效果普通);树模型XGB、GBDT,树模型在电商中效果还不错使用广泛,门槛低各种语言都有工具兼容;深度模型DNN,CNN,RNN,一般用tensowflow并通过 tensowflow serving部署模型提供API,深度学习模型过于灵活容易过度拟合需要复杂的特征工程和模型训练;模型融合;FM/FFM;learing to rank。
      推荐系统中的排序是多目标排序, 比如CTR与CVR预估,按照优化方式的不同,也就是learn to rank的三种方式,可分为Pointwise CTR预估、Pairwise bpr Lambed MART、listWise
      Pointwise 对单样本做分类或回归,也就是预测(query,doc)的得分作为排序准则,如lr,xgboost
      Pairwise 考虑两两样本之间的偏序关系关系,转变为二分类问题,如(query,doc1)比(query,doc2)高,则(query,doc1)预测为正,(query,doc2)预测为负
      Likewise 排序整体作为优化目标,通过预测分布和真实排序分布的差距来优化模型,典型模型如ListNet
    • 在系统架构上面主要提两点:不同模型的工程特性和模型的热部署
      热部署:可减少发布量,针对集成在工程中的模型,我们团队使用zookeeper的同步机制来实现模型的在线更新。对于深度模型,tensor serving 已经支持了热部署
另一个完整的电商推荐系统

说明:
这个例子中多个数据分析/加工和存储:
用户画像:用户属性、用户标签、用户行为、用户偏好
物品画像:物品属性、物品标签、物品关系、物品排名
特征工程:特征抽取、特征加工、特征分析、特征管理
底层数据存储:用户数据(姓名,性别,年龄,职业,学历,身高,体重,收入等)、物品数据(名字,类目,价格,尺寸,颜色,生产日期,其他等)、用户行为(登入,购买,收藏,分享,评论,浏览等)、系统上报数据、其他

推荐系统常用组件

数据上报: Kafka
离线存储: HDFS, hive(提供比较完整的SQL功能,底层hdfs)
离线计算: Spark, tensowflow
在线存储: Redis, memcached, RocksDB
模型服务: TensorFlow Serving ( 自动加载新模型、批量处理请求、可水平扩展等 )
实时计算: spark streaming, flink, storm

效果评估

实时性: 如 离线训练推荐系统模型迭代在小时级别以上,仅适用于时效性不高的场景。可使用在线推荐系统架构对特征进行实时提取和实时拼接,适用于捕捉用户短时兴趣
多样性:缺乏多样性会导致结果的同质化,降低用户新鲜感难以激发购物的欲望

评估测试:
一般先通过方法上下线保留更好的方案,同时不断上线新的召回、排序特征等,迭代优化模型,提升线上效果
离线算法评估指标:准确率、覆盖度、多样性和AUC等
在线评估指标:点击率、用户停留时间、广告收入等
短期指标与长期指标相结合,从产品本身、用户体验、业务出发优化推荐系统

第三个例子

推荐系统调研_第6张图片

三、京东推荐部门推荐系统

目标:

在用户的购买链路上(从产生购买意向,到最后下单)的每个过程中,辅助用户决策
挖掘用户潜在购买需求,缩短用户到商品的距离,提升用户的购物体验

发展上从最初的相关、相似的产品推荐过渡到多特征、多维度、用户实时行为、结合用户场景进行的全方位智能推荐:
看了还看,买了还买 -》首页/购物车 猜你喜欢,免运费凑单中的商品推荐,活动、楼层、优惠卷 -〉 京东秒杀,智能卖场,陪伴计划,我的618,好货推荐,东家小院

京东的多类型推荐:推荐类型覆盖到多种类型,如商品、活动、分类、优惠卷、楼层、入口图、文章等。
多屏推荐:是指整合用户在不同屏端信息,提升推荐准确性。点击流系统通过前端埋点手机用户不同屏幕上的行为信息,再通过实时流计算平台计算用户偏好,并根据这些偏好急性重排序,达到个性化推荐效果
整个系统的目标是通过全方位的数据刻画用户购买意图,推荐用户有购买意愿的商品,并提供最好的体验,提升转化率,增加用户粘性:
推荐系统调研_第7张图片
系统对外提供http服务,服务所有终端业务
模型服务:针对不同模型提供的基础服务:用户的有用户的行为服务,用户画像服务;商品的有商品画像服务,地域的有小区画像,特征有特征服务。通过这些基础服务,让个性化推荐更简单、更精准。
机器学习:算法模型训练阶段,尝试多种机器学习模型,结合离线测评和在线A/B,验证不同场景下的算法模型的效果,提高推荐的转化率
数据平台:数据是推荐的源泉,包括数据收集和数据计算。数据虽然是整体推荐架构的最底层,却是非常重要的,因为数据直接关系到推荐的健康发展和效果提升

个性化推荐架构:

在起步初期,推荐产品比较简单,每个推荐产品都是独立服务实现。新版推荐系统是一个系统性工程,其依赖数据、架构、算法、人机交互等环节的有机结合。新版推荐系统的目标,是通过个性化数据挖掘、机器学习等技术,将“千人一面”变为“千人千面”,提高用户忠诚度和用户体验,提高用户购物决策的质量和效率;提高网站交叉销售能力,缩短用户购物路径,提高流量转化率(CVR)。目前新版推荐系统支持多类型个性化推荐,包括商品、店铺、品牌、活动、优惠券、楼层等。新版个性化推荐系统架构如图4所示。
推荐系统调研_第8张图片
不同颜色代表不同的业务处理场景:
推荐平台(蓝色模块),主要体现响应用户请求时推荐系统的各服务模块之间的交互关系。推荐系统核心模块:

  • 绿色:数据处理,包括离线的预处理、机器学习模型的训练,和在线实时行为数据的介入、实时特征计算
  • 蓝色:主要体现响应用户请求时推荐系统的各服务模块之间的交互关系。推荐系统核心模块:
    • 推荐网关:推荐服务的入口,负责推荐请求的合法性检查,请求分发,在线的debug和组装请求的响应结果
    • 调度引擎:负责推荐服务按策略调度和流量的分发,主要根据配置中心的推荐产品配置策略进行分流(按用户分流、随机分流和按参数分流)。同时支持自定义埋点收集实时数据。支持预案功能,通过配置处理一些紧急的情况
    • 推荐引擎:负责推荐服务的在线算法的实现,包括:召回、过滤、特征的计算、排序、多样化处理等
    • 个性化基础服务:用户画像、商品画像、用户行为、 预测服务。用户画像包括:长期兴趣、短期兴趣、实时兴趣,情趣有性别、品牌偏好、品类偏好、购买力等级、自营偏好、尺码颜色、促销敏感度、家庭情况等字段组成。商品画像主要包括商品产品词、修饰词、品牌词、质量分、价格登记、性别、年龄、标签等字段。用户行为主要获取用户近期的行为,包括:用户搜索、点击、关注、加购物车、下单等行为。预测服务主要基于 用户历史行为,用机器学习训练的模型来调整召回的候选集的权重
    • 特征服务平台:负责为个性服务提供特征数据和特征计算。针对特征数据提供声明、管理和提供特征资源共享的能力,支持对不同的特征进行有效的声明(创建)、上线、测试和a/b实现效果对比
  • 橙色:个性化技术:个性化主要通过特征和算法训练模型来进行重排序,达到精准推荐的目的。特征服务平台主要用于提供大量多维度的特征信息,推荐场景回放技术是指通过用户实时场景特征信息反馈到推荐排序,在线学习(Online-Learning)和深度学习都是大规模特征计算的个性化服务。
    个性化推荐系统的主要优势:支持多类型推荐和多屏产品形态;支持算法模型的a/b实验快速迭代;支持系统架构与算法的解耦;支持存储资源和推荐引擎计算的解耦;支持预测召回和推荐引擎计算的解耦;支持自定义埋点功能;推荐特征数据服务平台话;支持推荐场景的回放

3. 数据平台

京东拥有庞大的用户数据和用户行为数据(如浏览、加购物车、关注、搜索、购买、评论等)、全品类的商品数据(品牌、品类、描述、价格等)、各种促销活动的数据,是大规模机器学习的基础,也是精确个性化推荐的前提。

3.1 数据收集

用户行为数据收集流程一般是用户在京东平台(京东App、京东PC网站、微信手Q)上相关操作,都会触发埋点请求点击流系统(专门用于收集行为数据的平台系统)。点击流系统接到请求后,进行实时消息发送(用于实时计算业务消费)和落本地日志(用于离线模型计算),定时自动抽取行为日志到大数据平台中心。算法人员在数据集市上通过机器学习训练模型,这些算法模型应用于推荐服务,推荐服务辅助用户决策,进一步影响用户的购物行为,购物行为数据再发送到点击流,从而达到数据收集闭环。

3.2 离线计算

目前离线计算平台涉及的计算内容主要有离线模型、离线特征、用户画像、商品画像、用户行为,离线计算主要在Hadoop上运行MapReduce,也有部分在Spark平台上计算,计算的结果通过公共导数工具导入存储库。团队考虑到业务种类繁多、类型复杂以及存储类型多样,开发了插件化导数工具,降低离线数据开发及维护的成本。数据离线计算架构如图5所示。如下图:
推荐系统调研_第9张图片

3.3在线计算:

在线计算的范围主要有用户实时行为、实时画像、实时反馈、实时交互特征计算等。在线计算根据业务需求,快速捕捉用户兴趣和场景特征,实时反馈到用户推荐结果的排序。在线计算的数据来自kafka集群的消息订阅和jmp的消息订阅,通过storm/spark stream实时消费,推送到redis和hbase集群存储。如下图:
推荐系统调研_第10张图片

4.关键技术

推荐系统涉及的技术点比较多,考虑到篇幅有限,这里重点介绍个性化推荐中比较重要的部分。

  • 推荐引擎
    个性化推荐系统的核心是推荐引擎,推荐引擎的一般处理过程是召回候选集,进行规则过滤,使用算法模型打分,模型融合排序,推荐结果多样化展示。主要使用的技术是机器学习模型,结合知识图谱,挖掘商品间的关系,按用户场景,通过高维特征计算和海量召回,大规模排序模型,进行个性化推荐,提升排序效果,给用户极致的购物体验。

推荐引擎处理逻辑主要包括分配任务,执行推荐器,合并召回结果。推荐器负责召回候选集、业务规则过滤、特征计算、排序等处理。推荐引擎技术架构如图7所示。
推荐系统调研_第11张图片

  • 分配:根据推荐场景,按召回源进行任务拆分,关键是让分布式任务到达负载均衡。
  • 推荐器。推荐引擎的核心执行组件,获取个性化推荐结果,推荐器的实现如图8所示。
    推荐系统调研_第12张图片其中,
    • 召回阶段。获取候选集,一般从基于用户画像、用户偏好、地域等维度进行召回,如果是新用户的召回资源不够,会使用冷启动服务进行召回
    • 规则过滤阶段。对人工规则、一品多商、子母码、邮差差价等进行过滤
    • 特征计算阶段。结合用户实时行为、用户画像、知识图谱、特征服务,计算出召回的候选集的特征向量
    • 排序阶段。使用算法模型对召回候选集打分,根据召回源和候选集的分值,按一定的策略对候选集进行重新排序
  • 合并。归并多个推荐器返回的推荐结果,按业务规则进行合并,考虑一定的多样性。举例来说,京东App首页“猜你喜欢”的实现过程如图9所示。首先根据用户画像信息和用户的近期行为及相关反馈信息,选择不同的召回方式,进行业务规则过滤;对满足要求的候选商品集,提取用户特征、商品特征、用户和商品的交叉特征;使用算法模型根据这些特征计算候选商品的得分;根据每个商品的得分对商品进行排序,同时会丰富推荐理由,考虑用户体验,会对最终排好序推荐结果进行微调整,如多样性展示。
    推荐系统调研_第13张图片

5. 用户画像

京东大数据有别于其他厂商的地方就是京东拥有最长的价值链和全流程的数据积累。京东数据的特征非常全面,数据链记录着每个用户的每一步操作:从登录到搜索、浏览、选择商品、页面停留时间、评论阅读、是否关注促销,以及加入购物车、下订单、付款、配送方式,最终是否有售后和返修,整个用户的购物行为完整数据都被记录下来。通过对这些用户行为及相关场景的分析,构建了京东用户画像,如图10所示。

其中不仅有用户的年龄、性别、购物习惯,更有根据其购物行为分析出的大量数据,例如是否已婚,是否有孩子,对促销是否敏感等。另外,实时用户画像可以秒级分析出用户的购买意图,以及实时兴趣偏好。京东推荐用户画像技术体系如图11所示。

用户画像在京东各终端的推荐产品中都有应用,618推出的智能卖场是用户画像的典型应用场景。智能卖场的产品包括发现好货、个性化楼层、秒杀、活动、优惠券、分类、标签等。以秒杀为例,推荐结果会根据当前用户的用户画像中的画像模型(性别、年龄、促销敏感度、品类偏好、购买力)进行加权,让用户最感兴趣的商品排在前面。

用户画像也是场景推荐的核心基础。以东家小院为例,根据用户的历史行为汇聚出很多场景标签,按当前用户的画像模型,调整场景标签的排序。如用户选择“包治百病”标签,会按用户画像中的性别、年龄、品类、促销敏感度等画像模型进行推荐商品的重排序。
推荐系统调研_第14张图片
推荐系统调研_第15张图片
京东推荐用户画像技术体系

6. 特征服务平台

特征就是一种属性的描述,特征是个性化推荐的基础,常用的特征分为单边特征和双边特征。单边特征是指对象本身的属性描述,如商品的颜色;双边特征是指两个对象交互程度的描述,如某用户最近一小时浏览的品牌与候选集中品牌的匹配程度。从特征生成的场景来说,分为离线特征和实时特征。离线特征是通过算法模型提前生成,实时特征是通过实时计算的方式生成的。特征的质量直接影响推荐的效果、特征计算的性能,同时影响个性化推荐的处理能力。另外,共享和复用特征可以提高算法的迭代速度并节约人力成本。

特征服务管理平台主要针对特征数据和特征计算,进行有效声明和管理,进而达到特征资源的共享和复用。特征服务平台能快速满足针对制定不同的特征进行有效的声明、上线、测试以及A/B实验效果对比的需求,做到特征的可维护、可说明、可验证。特征服务平台的主要功能如下:离线特征的定制化使用,在线特征的定制化使用,由定制化特征产生新的特征,部分特征、模型在线申明,不同特征效果快速A/B。特征服务平台架构如图12所示。
推荐系统调研_第16张图片

场景特征回放技术

推荐的一般处理逻辑是每次请求会召回一批商品,然后根据用户的行为数据和用户模型计算出每个商品的特征。算法模型会根据每个商品的特征计算出每个商品的得分,最后选出得分最高的几个商品推荐给用户。

线上计算特征这种行为是一次性的,不会被记录下来。因此在线下训练模型的时候,如果想利用上述的特征,就需要在线下机器上再次计算一遍这些特征。遗憾的是,线下计算出来的特征往往不能和线上特征完全相同,这就导致了模型训练的效果较差。场景特征回放示意图如图13所示,推荐业务调用推荐引擎,推荐引擎将场景特征通过特征回放服务记录下来,推送至大数据平台,机器学习根据场景特征数据重新训练算法模型,进而影响推荐引擎中的排序,形成一个场景闭环推荐,达到更准确的个性化推荐
推荐系统调研_第17张图片
场景特征回放技术架构如图14所示,场景特征回放技术实现过程如下。线上特征一般是一系列的数值,我们将这些特征按照一定的规则组装成一个字符串,然后将特征使用HTTP的POST方法异步发送到服务端
推荐系统调研_第18张图片

服务端使用Openresty接收这些HTTP请求,并把HTTP请求中的特征数据落地到本地磁盘文件中。Openresty是一种高性能的Web服务器,能够承受很高的QPS,并且具有很高的稳定性,它的这两点特性保障了服务的稳定。

数据抽取系统把服务器集群磁盘上的数据抽取到临时仓库。

数据抽取系统对数据进行压缩和过滤处理,然后推送到Hive表中。不同类型的请求会放到不同的分区中,更加方便算法工程师使用这些数据

四、点评品牌推荐系统

推荐系统调研_第19张图片

  1. 系统目标:功能上根据业务输入的门店信息匹配合适的品牌,主要用于辅助品牌运营同学决策 和 C/B/S三端的门店入录提示
  2. 数据存储:
    a. 品牌数据:品牌(id,品牌名,别名,类目,状态,公司实体,…)
    b. 门店数据:门店(门店id,门店名,类目,地址,经纬度,…)
    c. es集群:主要存储品牌数据(名称,别名,等等),并根据品牌名称进行 IK分词 并建立全文索引
    d. hive 数仓:记录了从在线mysql 通过 databus 同步而来的离线数据
  3. 基础服务:
    a. 品牌基础服务:提供品牌基础数据的查询服务。除此外,该服务中的定时任务模块会遍历品牌数据表,同样使用 IK分词 对品牌名进行分词并在 mysql 中维护一张“倒排索引表”
    b. 门店服务:提供门店数据的查询服务
    c. 品牌搜索:包装自建 es 集群的sdk,可以通过“关键字”模糊匹配查询品牌,并取 top 5 用于品牌推荐候选集召回,es采用默认的 tf-idf 算法计算相关性且将“_score”作为默认排序字段
    d. 特征抽取:离线操作步骤中的一步,根据 hive数仓 中的 品牌-门店 关系表,抽取 人工校验过的品牌-门店关系数据,抽取特征向量用于 GBDT(Gradient Boosting Decision Tree) 决策树集成模型的训练
    其中,主要的特征包括:门店名是否为品牌名开头(0/1),门店名中是否包含品牌名(0/1),门店名中是否包含品牌名核心词(0/1),门店类目与品牌类目的关系(0/0.4/0.6/0.8),等等
  4. 推荐引擎:包括核心的两大块:召回、排序
    a. 召回:召回结果包括:mysql 核心词 召回 + es 关键词检索top5
    b. 推荐,有如下步骤:
    ⅰ. 特征提取:针对候选集中的每个元素,计算当前门店和该元素对应品牌的特征向量(同 3.d)
    ⅱ. 模型二分类:多线程并发的 使用 GBDT 对特征向量 进行分类打分
    ⅲ. 结果解析与排序:主服务线程会 join() 所有的模型打分结果并根据分数从高到低排序取前10,返回给调用端
    c. 模型拟合: 在 3.d 抽取特征的上,通过 matplotlib 观察特征数据关联特性,选择和合适的模型和超参范围,使用 xgboost 10-fold 交叉验证 训练模型并选择最优。将模型部署于项目中一同发布
    注:选择 GBDT 作为学习模型的原因:由于特征值在定义时就是固定阈值(0,0.4,1),且通过 matplotlib 可看出 特征值 和 目标属于“关联关系”,所以采用决策树模型,但决策树模型存在“正交的决策边界”、“对数据旋转敏感”等问题,泛化能力不足,并且根据群体智慧和大数定理,集成多个弱学习器往往可以得到较强的学习器,所以最终决定采用决策树集成 GBDT 作为模型
  5. 推荐系统服务主要通过 http, rpc 的方式对外提供服务

五、淘宝

推荐系统调研_第20张图片

  1. 应用场景:浏览了还浏览,收藏夹弹出层推荐,购物车弹出层推荐,已买到宝贝你可能感兴趣,淘宝无线应用,EDM(重复购买提醒),各个垂直频道,个性化list排序,
  2. 系统组成
    • 数据:
      • explicit(显式):能准确的反应用户对物品的真实喜好,但需要用户付出额外的代价。如:用户收藏、用户评价
      • Implicit(隐式):通过一些分析和处理,才能反映用户的喜好,只是数据不是很精确,有些行为的分析存在较大的噪音。如:用户浏览、用户页面停留时间、访问次数
    • 推荐管理后台:提供统一的平台管理各个推荐模块
    • 离线计算:存储云梯(hadoop)上对用户、商品等原始数据分析的结果。云梯周期性同步线上数据,无实时更新
  3. 算法与模型
    • 基础算法:聚类算法,预测算法,分类算法等,主要用于产生基础知识库
    • 分类算法:朴素贝叶斯,商品性别判断(男性,女性,中性),用户性别判断
    • 聚类算法:人群,用户细分,用于降维
    • 推荐算法:content-based,collaborative-based,Association Rules
  4. 效果评测
    • Offline: 给定输入输出,验证系统的输出
    • Online : ABTest (衡量指标:CTR GMV 转换率)

六 美团推荐

推荐系统调研_第21张图片

  1. 应用场景:
    • 猜你喜欢:美团最重要的推荐产品,目标是让用户打开美团 App的时候,可以最快找到他们想要的团购服务。已经做了2年多,交易额占比从最初的0.7%提高到7~8%
    • 首页频道推荐:若干频道是固定的,若干频道是根据用户的个人偏好推荐出来的。这个区域为美团 app带来40%以上交易额。
    • 今日推荐个性化推送:美团的个性化推送的产品,目的是在用户打开美团 App前,就把他们最感兴趣的服务推送给他们,促使用户点击及下单,从而提高用户的活跃度。
    • 品类列表的个性化排序:美团首页的那些品类频道区,点进去的列表的智能排序,也是我们进行个性化优化的重要位置。相对于搜索,这个位置用户的意图不是非常明确,个性化程度较高;但是相对于首页的猜你喜欢,这个位置用户的意图则要强一些,个性化程度稍低一些。
  2. 系统目标:
    • 为消费者快速找到“高品质,低价格”的服务
      • 衡量指标:推荐结果的下单转化率
    • 同时也希望推荐出来的结果包含多个品类的结果,即推荐结果有多样性,不过目前重点还是转化率
  3. 模块说明
    • 顶层:显示的是推荐系统对外的服务接口。由于不同展位的输入输出参数差异较大,因此这一层没有做过多的抽象,每个展位有自己特定的接口形式
    • 接口层会调用 ab测试 配置模块,对接入的流量按照uuid、城市等维度进行分流量的配置。 abtest 对于推荐系统是很重要的基础模块,美团对这个模块的要求,是可以有友好的配置界面,灵活根据不同不同维度进行分流量配置,并且立即生效,无需重启服务
    • Abtest 配置模块之下,是推荐候选集的生成,排序和业务处理模块。候选集生成和排序模块,除了针对不同展位有不同逻辑以外,对同一展位的不同策略也有不同的逻辑。abtest 模块在配置流量策略的时候,可以根据需要单独配置候选集策略和排序策略。业务规则处理模块,则有统一的处理逻辑,也有每个展位独特的逻辑,而同一展位的不同策略,通常来说在这一层处理逻辑不会有区别。
    • 重新从接口层开始换个方向来看这个框架。在响应请求的同时,会打印一些必要的日志,记录这次请求的一些必要的上下文信息以及用户及item相关的特征信息,以便生成训练数据。这些日志通过flume传输到HDFS上面。除了推荐系统以外的美团App其他后台服务,也会把各自的日志传递给HDFS,以方便后续进行数据挖掘。借助Hadoop、Hive、Spark等平台以及美团自己实现的一些机器学习/推荐通用算法,对原始日志进行处理,从而得到需要的各种数据及模型:包括用户的profile信息,用户之间的相似度,item之间的相似度,后续我们将要重点介绍的地理位置与item之间的关联关系,以及转化率预估模型。
    • 这些数据及模型在刚才介绍的候选集生成模块,排序模块,业务处理模块会被使用到。
    • 在推荐系统的候选集生成这一块,美团重度使用了传统的user based,item based协同过滤算法。这里面需要注意的是,美团引入了时间衰减的因子,从而使新的行为起的作用大于老的行为,从结果来看,这确实对于效果会有提升。同时,美团尝试了不同的相似度计算方式,发现基于llr(Log-likelihood ratio)的相似度计算比cosine相似度计算的最终效果要好一些。在首页的猜你喜欢这个展位上,美团发现user based算法比item based效果要好很多。原因和user based算法更容易推荐出有一定新颖性的item有关。
  4. 模型
    • 目前美团的推荐系统的排序模型主要是Additive Groves模型,另外也在探索FTRL这样的在线学习模型。AG模型是一种决策树类型的模型,属于非线性模型。这种非线性模型的特点,是一定程度上能够自动进行特征组合的工作,不需要人工进行大量这类工作。
    • 建模方法和传统的ctr预估建模方法一样,是point wise的模型。每一个item对一个用户的每次展示可以作为一个样本,这个item是否被点击或者是否被下单作为标记。美团会为这些样本抽取一些item特征,用户特征,上下文特征,item与用户的交叉特征。
  5. 特征工程
    • 特征工程是排序模型的最重要工作,排序带来的效果提升。不断地去接触和理解业务数据,试图从中挖掘出和用户转化相关的特征。美团使用的主要特征包括:
      • 上下文特征:如时间,地理位置(商圈),天气,温度等
      • item特征:如团购服务的价格,销量,用户评分等很多,但是没完全公开
      • 用户特征:用户的属性特征,如年龄,性别,婚育状态,品类偏好,价格偏好等
  6. 效果评估
    • 美团进行策略效果对比所使用的方法是abtest。abtest的好处是能够对多个策略的效果差异给出定量的评估,但是也存在一些问题,比如,如果两个策略的效果差异较小,abtest容易给出波动较大的结果,需要较长时间(一般是一周)才能判断结果,会导致效果迭代速度较慢。为了解决这个问题,美团采用interleaving效果评估方式作为补充。Interleaving方式的好处是所需流量较小,灵敏度较高,一般24小时之内可以给出结论,但是它只能给定性结论而不能给定量结论。Interleaving的基本思想是把两个策略的结果混合在一起,通过统计分析用户选择哪个策略的概率更大。具体列表混合的实现方式有多种。比较简单的一种叫Balanced方式。

七、总结

个性化推荐系统是一个系统工程,依赖产品、数据、架构、算法、人机交互等进行场景推荐,本节重点从这几个维度阐述了京东的个性化推荐系统。

推荐系统随着业务发展和社会生活方式的改变而进行不断升级,经历了从PC时代到移动互联时代,从关联推荐走向个性化推荐,从纯商品推荐到多类型推荐的转变。个性化推荐系统已经实现了千人千面。诚然,个性化的效果也有待提升,有些体验类的问题也在逐步完善。

目前正在进行或有待提高的方面包括:算法方面丰富知识图谱、深度学习广泛应用;推荐系统方面会更好地支持海量召回、高维特征计算、在线学习,推荐更实时,更精准;产品方面已向“满屏皆智能推荐”方向迈进。最后,希望个性化推荐系统能让购物变得简单,变得更人性化、更丰富、更美好

你可能感兴趣的:(推荐系统,推荐系统)