Elasticsearch分布式搜索引擎互联网科技Elaticsearch进阶

搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化

2018-09-06  本文已影响10人  网易数帆

本文来自网易云社区

作者:穆学锋

简介:传统的搜索个性化做法是定义个性化的标签,将用户和商品通过个性化标签关联起来,在搜索时进行匹配。传统做法的用户特征基本是离线计算获得,不够实时;个性化标签虽然具有一定的泛化能力,但是其准确性有所不足,不能很好的做精准个性化。本文提出两个创新优化,一是打通实时用户行为的获取流程,并在实时用户流下采用FTRL算法不断的更新用户特征的权重,将用户实时感兴趣的商品加权,达到online training;二是在保证相关性的前提下,采取推荐的思路,避开打个性化标签,结合用户的实时&历史行为,直接预估用户对商品的偏好,并在搜索排序中加权。这两个优化在实际的ABTest结果中表现突出,提升搜索下窄口径UV价值较大,它们都是在用户实时行为的基础上完成的,因此合称为搜索实时个性化模型。


背景

搜索中传统的个性化应用是基于个性化标签来完成的。例如,我们会假设用户在购物时对商品的某些属性有独特的偏好,然后建立属性标签,并基于用户的历史行为构建算法模型将商品上的标签打到用户身上,预估其偏好程度,这就构成了用户在特定类目下对于某属性标签的偏好。模型一旦建立起来,属性标签就构成了一个商品簇,模型的泛化能力会很强。这种方式在用户对某类目的商品行为量巨大时会比较有效,但是一般情况下用户的行为都会比较分散/稀疏,因此模型的准确性一般不高。举个例子,用户A购买了一件有大嘴猴图案的莫代尔T恤,因为是购买行为,是一个表示强偏好的特征,那么模型最后计算出来大概率会显示用户A对于动物图案标签和材质莫代尔标签都有一定的偏好,但实际上呢,可能用户A关心的只是T恤是圆领的。

怎么办呢?一种方法是丰富个性化标签,将领型标签也加入进去,这将是一个很庞大很漫长的profiling构建过程。另一种方法,我们可以转变下思路,用户A对商品B有行为,那么就是A对B有一定的偏爱。因此,我们只要获取用户A所有行为过的商品集合,然后构建模型计算最感兴趣的几个商品,并推给用户。至于,用户是喜欢B的什么特质,什么原因,我们并不用刻画。因为特质太多,我们目前刻画得并不好。

系统框架   

要实现我们的思路解决上述的问题,首先得在搜索中获得实时的用户行为流数据。为此,我们设计并实现了如下的系统结构:

 

从Offline到Nearline再到Online,全方位无死角地获取了用户近期的行为数据,存储到ncr缓存中,行为包括点击、加购、收藏、购买、搜索等等。离线(Offline)任务从hdfs中收集用户在考拉 App端的近期对商品的历史行为数据,计算历史行为特征,每日都dump到缓存中;准实时(Nearline)任务将用户近一小时的行为收集并格式化后也放入NCR缓存;实时(Online)任务直接在Jstorm中解析用户行为日志,梳理需要的行为数据,插入到缓存。这样用户近期的所有行为及其特征都能够在搜索被检索到。

同时,Jstorm在解析用户行为的同时,利用FTRL算法,进行online training,不断的迭代学习用户特征权重;另一方面,离线部分每日会计算一个用户到商品的偏好模型(UserItemPrefer),这两个模型的参数都会存储到NCR中。

用户在考拉APP中对商品的每次行为数据,都会影响FTRL模型和UserItemPrefer模型的参数和特征。当用户来搜索的时候,SR会对NDIR召回的商品集合再重新精排一次,精排时就会从NCR获取个性化标签、UserItemPrefer&ftrl模型的参数,以及用户历史&实时的行为特征,计算一个排序分数。SR按这个分数再加上一些例如无货沉底、重复商品过滤等的业务逻辑,向上层返回排好序的商品列表。用户在当前搜索结果页的行为,都会由这个数据流影响到FTRL模型参数,以及U2I的用户行为特征,从而达到随着用户行为变化,自动学习其个性化偏好的目的。

算法实现

1. FTRL模型的实现

根据用户实时行为,生成相应的特征,使用FTRL模型,实时更新用户的偏好模型。FTRL算法如下:  

 

对算法的两点修正:  

2. UserItemPrefer   模型的实现

• 描述:选择点击、加购、收藏、购买等行为构成特征,预估用户对商品偏好程度

•       样本:

–      历史user-goods pair

–      Target:当日搜索是否有点击

•       特征:

–      User-goods pair维度的特征

–      Goods维度的特征

•       机器学习方法:SPARK-LR

•       训练结果:经调试,AUC 0.73


效果展示

1. FTRL模型

这是线上某用户的行为序列:   用户首先搜了“拖鞋”,点击了商品1464699 ,翻几页之后又搜索了"melissa "这个品牌,最终购买了商品1511276。

2017-06-04 20:41:48 search 拖鞋 iOS  

2017-06-04 20:41:55 click 1464699 iOS  

......  

2017-06-04 21:05:32 cart_page iOS  

2017-06-04 21:05:44 pay 1511276* -  

在搜索结果中商品位置的变化,(红框中的是商品1511276):  

没有用户实时模型的商品排序:  

   
 

增加了用户实时模型的商品排序:  

 

2.  UserItemPrefer   模型

3. 补充说明


未来计划

目前来说实时个性化完成了第一版,后续我们会从如下方面进行深入探索。

  1. 将用户偏好商品的相似商品也纳入进来,在搜索时,也择机展示给用户,提升购物效率

  2. 挖掘用户行为序列中的频繁模式,尝试序列模式推荐


参考文献

       

 原文:搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化

网易云大礼包:https://www.163yun.com/gift

 

本文来自网易云社区,经作者穆学锋授权发布


相关文章:
【推荐】 网易云发布云计算全栈一体机,私有云迎来“航母模式”

上一篇下一篇

猜你喜欢

热点阅读