京东的个性化推荐系统
1.这里面涉及到较为复杂的用户购物状态的推理和判定,如果不借助人工输入,比如通过产品设计提供用户筛选接口,让用户人工输入限制项,典型的比如过滤器,负反馈,则对目前的机器算法是一个非常大的挑战。而推荐天然就是一个被动信息消费的产品,不适合做很重的意图探索交互,因此,这是目前电商平台上的推荐系统面临的一个较大的挑战。
2. 推荐的优化目标,局部与全局的指标权衡。无论承担了多少的角色定位,电商平台的个性化推荐一个万变不离其宗的任务就是达成成交,毕竟,这是一个交易平台,首要目标是最大化GMV(Gross Merchandise Volume)。然而,单纯的优化成交类指标是有局限性的。首先从全局来看,推荐流量上做gmv最优,与全站gmv最优存在不一致性。用户从产生购买意向,到经历购买决策的整个过程,到最后下单,推荐可以作用于任何一个购物链路上的节点,如果推荐系统的优化目标是GMV,那就意味着推荐在做最后的收割,这里收割的gmv是来自于其他模块的培育与引导的结果,而这些gmv即使不被推荐流量所收割,也大概率的会在其他场景被收割,比如购物车,收藏夹或搜索等。因此,推荐单纯做gmv的优化,未必能成就全局的gmv最大化。那么推荐就需要往购物链条的前端去做,做平台gmv的增量,这就引出了一系列的问题,如何使推荐在各个节点的作用可度量,优化目标怎么定,与gmv的关系怎样平衡。
3. 用户体验的考量。用户体验反映了一种感受,既然是种感受,那它是一个非常主观,很难量化的东西。一旦不能量化,就成了算法最大的挑战。做推荐的同学应该都深有感触,会收到各种关于体验类的抱怨,比如内容不相关,多样化不够等等。在做商品的推荐时,我们常常被抱怨的体验问题包括买了还推,推荐商品品类单一,没有让人眼前一亮的商品能满足一下发现的惊喜等等不一而足。往往这些体验问题的解决都需要人工规范的干预,但凡有规则的介入比如加入购买过滤,类目打散展示等策略,都会造成交易类指标的下降,平衡两者之间的关系对推荐系统是一个现实的挑战。
下面向大家介绍一下京东的个性化推荐系统的主要模块以及用到的主要算法。核心模块包括offline pipeline的数据生产;recall部分;预测打分(prediction service),系统框架如下图所示系统框架与传统的推荐系统类似,这里重点介绍下针对电商业务下,各个模块的逻辑和策略。在召回部分,用精准用户画像,通过倒排索引的方式实时的召回。应用协同过滤,及通过神经网络求解每个商品隐层embedding的表示,应用于召回。有点要提的是由于推荐系统会支持电商平台上各种频道,人群场景以及为你推荐模块内部商品的个性化,也支持店铺,活动等不同粒度的个性化展现,因此,召回的资源池会多种多样,不仅有不同选品标准的商品池,还有店铺池,活动池,优惠券池,我们通过实时消息通知和定期全量同步两种机制来保证。内容同步过来后,会有pipeline抽取内容中的特征。在排序阶段,应用业界领先的深度神经网络(DNN),及大规模线性模型,支持十亿级别的特征维度。应用强化学习的方法,实时的捕获用户和环境的交换及反馈,提升推荐效果。
总结来说,我们在推荐系统的效果优化上做了以下几点得到了效果的较大提升。(1) 实时性,系统对用户行为的反应是实时的。(2) 用户画像的精准性,找到用户真正感兴趣的类别,属性及价格区间。使得推荐更精准。(3) 利用知识图谱,丰富商品属性,挖掘商品间的关系,改善用户体验。(4) 通过大规模排序模型,应用海量的特征,提升排序效果。
提升效果的同时,也面临着一些特殊问题的解决,如冷启动、冷门类目的曝光,这个问题在开始也提到过。对于新品和渗透率低的品类,我们通过基于内容的sku关系挖掘,使得新品也可以被推荐出来。对于完全的新用户,我们会通过强利益点商品的推荐,得到一些反馈。对于某些类别下的新用户,我们会通过其他类别下的反馈,通过cross-domain推荐和迁移学习等技术进行推荐。
下面介绍下算法使用的特征体系:用户画像和商品画像。
用户画像是根据用户人口统计学信息、社交关系、偏好习惯和消费行为等信息而抽象出来的刻画用户的标签化系统。用户画像分为多个维度,如长期用户画像,中期用户画像,实时用户画像。长期用户画像用来推断性别,年龄,地理位置等标签。这部分应用分类算法完成。中期用户画像通过1个月的用户行为,推断出用户近期感兴趣的cid3,价格,属性等。这部分考虑了浏览的停留时间过滤了无效点击;商详页内是否看评论图片等细节信息。实时用户画像是基于浏览session的,可以实时推断用户每次新的行为后,感兴趣的商品。短期,长期和实时用户画像共同构成了对用户的精准表达。
商品画像是刻画商品的标签化系统。商品标签大致分为两部分:商品的自然属性(比如价格,品牌,销量,产地等),另一类是有共性的人群属性(比如购买此商品的人的购买能力,城市,年龄等等)。基于这些标签就可以刻画出商品之间的各种关系。知识图谱就是一种目前常用的刻画关系的方法,目前被谷歌等公司广泛使用。在推荐系统领域,由于它可以方便的组织知识(比如sku,品牌,产品词,店铺)之间的各种关系,形成各种合理的推荐理由,从而有效的提升推荐结果结果的可解释性。目前我们已经建立了基于商品之间,品牌之间,以及商品与品牌之间的数十种关系的知识图谱。
不同推荐位和场景会采用不同的算法。召回和排序部分都有所不同。比如app首页猜你喜欢偏逛的推荐位,会有更丰富的召回,包括长期中期的兴趣,模型也会应用推荐位的反馈训练的。比如购物车和商详页的推荐,会以购物车中的商品及商详页的主商品为种子商品,根据知识图谱建立起来的商品间的关系召回更多商品,也会有自己的排序模型和特征。
最后一部分,介绍下618个性化大促会场。今年的618,京东取得了不俗的战绩。个性化会场,也称智能卖场在其中发挥了不小的作用。“智能卖场”实现了活动会场的个性化分发,大大提高了流量效率和用户体验,从而达到商家和用户双赢,不仅带来gmv的明显提升,也大幅降低了人工成本。
为了进一步提升用户购物体验,“智能卖场”还融入到用户的整个购买流程中。智能卖场会在购买路径上发现用户需求并推荐热点产品,以便提高购买效率;从加入购物车到确定购买产品、准备结算这一阶段,很多用户会形成一个过渡期,如果其间商品出现无货或者下架的情况,智能卖场将会根据产品价格、内容指数等给用户推荐相应的替代品;在提交订单环节,如果订单结算时无货,而后续有其他用户订单取消,通过大数据计算,智能化地推荐给信誉度较高的用户
这里面我们实现了不止是传统的商品排序,还实现了楼层、活动、品牌、类目、优惠券及店铺等各种会场元素的算法排序,根据每个人的个人兴趣,给用户展现出其最感兴趣的活动、商品等,而不是像以往一样,所有人是千篇一律的一样的促销活动。
京东用的spark mllib做的推荐吗?还是自己写的?
有应用spark milib,也有用xgboost
另外在用户画像这一块,有考虑将用户profile向量化吗?
用户画像我们有用神经网络学习一个隐式的向量表示
用户的行为链条会用rnn建模吗?
会用lstm建模