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

本文来自网易云社区html

 

做者:穆学锋web

 

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


背景 缓存

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

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

系统框架   框架

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

 

从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算法以下:  

 

对算法的两点修正:  

  • FTRL在每一个特征维度上作梯度降低,随着用户行为的累积,频繁更新的特征权重更新步长愈来愈小,趋于一个稳定的值,而实际上用户的关注点会随时间变化,累积的特征并不必定产生正向的效果,所以增长了时间维度,记录每一个维度特征更新的时间,根据时间进行衰减。

  • FTRL具备比较好的稀疏性,可是用户的实时行为会产生大量的特征,仍是会有不少低频特征的权重不为0,保存在用户模型里,一方面使得用户模型太大,另外一方面对效果影响也不大,所以,对FTRL输出的特征再进行一轮筛选:1)最近1小时的特征按时间保留TOP100;2)最近12小时的特征按权重保留TOP100;3)全部特征按权重保留TOP100。

2. UserItemPrefer   模型的实现

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

•       样本:

–      历史user-goods pair

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

•       特征:

–      User-goods pair维度的特征

–      Goods维度的特征

•       机器学习方法:SPARK-LR

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


效果展现

1. FTRL模型

  • demo示例:

这是线上某用户的行为序列:   用户首先搜了“拖鞋”,点击了商品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):  

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

   
 

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

 

  • 测试效果:总共进行两轮迭代,测试时间段分别为:2017-02月初~2017-02月中和2017-05月底~2017-06月初整体增长窄口径UV价值3%

2.  UserItemPrefer   模型

  • 测试方法:搜索内ABTest

  • 测试时间: 2017.05月底~2017.06月初

  • 测试结果:通过11天的线上测试,窄口径UV价值提高2.55%。

3. 补充说明

  • A/B测试:简单来讲,就是为同一个目标制定两个方案(好比两个页面、两个算法),让一部分用户使用 A 方案,另外一部分用户使用 B 方案,记录下用户的使用状况,看哪一个方案更符合设计。其实这是一种“先验”的实验体系,属于预测型结论,与“后验”的概括性结论差异巨大。A/B测试的目的在于经过科学的实验设计、采样样本表明性、流量分割与小流量测试等方式来得到具备表明性的实验结论,并确信该结论在推广到所有流量可信。

  • 关于A/B Test指标增加的说明:各位看官可能以为增加2%有点微不足道,但对于算法模型来讲,已经比较可观了。首先,A/B测试比对的二者是剔除了天然增加、大促等其余因素的,是纯算法带来的增加,比较真实可靠。另外,举个业界的实例:通常淘宝会由几十人组件一个大项目团队,通过一年的算法迭代,在双11大促时拿到5~10%的指标增加。因而可知一斑。

  • UV价值:名词解释,公式上 UV价值=引导的成交额/访问UV,约等于uv转化率*客单价,通常在搜索中所说的引导的成交额指严口径成交额(即点此买此),访问UV是指访问搜索的UV数。所以,以成交额做为考核指标的考拉,采用uv价值更吻合平台kpi。涵义上,UV价值的是指访问搜索的用户的平均价值,是搜索内功的体现。


将来计划

目前来讲实时个性化完成了初版,后续咱们会从以下方面进行深刻探索。

  1. 将用户偏好商品的类似商品也归入进来,在搜索时,也择机展现给用户,提高购物效率

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


参考文献

 

       

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

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

 

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

 

相关文章:
【推荐】 网易云安全DDoS高防全新上线 ,游戏防御实力领先

相关文章
相关标签/搜索