前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Emdedding向量技术在蘑菇街推荐场景的应用

Emdedding向量技术在蘑菇街推荐场景的应用

作者头像
Spark学习技巧
发布2018-06-22 11:32:34
1.9K0
发布2018-06-22 11:32:34
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

花名:越祈

部门:算法中心搜索策略组

入职时间:2017/06/01

主要从事蘑菇街推荐算法相关研发工作

  • 引言

蘑菇街是一家社会化导购电商平台,推荐一直是其非常重要的流量入口。在电商平台中,推荐的场景覆盖到用户浏览行为和交易的各个环节,如搜相似、商品详情页、购物车、订单和支付等。传统的itemCF、关联规则、simirank、swing等推荐相似召回技术也广泛应用于推荐各个场景中。在电商场景,计算商品和商品、用户和商品之间的相似性是一个非常重要的课题,但是受限大部分数据是稀疏,传统的关联规则,simirank等并不能很好的解决。按照前期的经验,在数据充足的头部热门商品上,各相似算法的效果相差不大,但在中部和长尾商品,效果差别明显。并且,受限于计算规模,在关系链上很难建立大于3跳的关系,故商品间的相似性关系表达也受限。

Embedding技术具有实现简单,表达能力强等优点,在一定程度上能有效解决上述问题。目前,团队小伙伴共同尝试了word2vec、node2vec以及基于点击行为的监督式模型。目前,线下评估效果和线上实验效果均有不错提升。其中原生的word2vec,偏向热门商品和类目相似,不符合预期。node2vec对比基线有提升,但是node2vec依赖随机游走的策略,比较耗资源,目前效果不如监督模型。本文重点描述监督式模型的Embedding在商品详情页推荐召回的试验结果。

  • 模型简介

1. 输入数据

(1) 预训练好的商品向量:使用图像向量作为预训练好的商品向量输入模型,商品图像向量为512维,直接放入模型中容易撑爆内存,容易导致模型训练失败。使用sklean.decomposition.TruncatedSVD,首先将512维的图像向量降维到256维,再作为模型输入。

(2) 用户N天点击数据:用户点击商品pair对作为正样本,label为1,随机构造用户未点击商品pair对作为负样本,label为0,正负样本比例为1:3。

2. 基础模型

预训练好的商品向量经过全连接层后维度与用户向量维度相同。经过全连接后的商品向量与用户向量矩阵相乘,并在axis=1维度上求和得到相关分,并加上偏差项。最后经过sigmoid_cross_entropy_with_logits计算得到loss。

整个模型思路简单,训练完成后,可以输出用户向量和商品向量。且后期能在多个环节上进行模型优化,如可以把矩阵相乘变成网络结构进行尝试。此外,用户向量是随机初始化,可以使用用户偏好、用户画像等更好的表示用户向量。

  • 离线评估

1. auc评估

1.1 评估数据

评估数据总共4列,分别为:用户id,用户点击序,详情页推荐场景用户点击/曝光商品,标签label(1为用户点击,0为曝光未点击)

1.2 评估结果

(1)监督模型商品向量比node2vec向量auc评估要高,相对提高约5%;

(2)监督模型商品向量&用户向量,比单独使用商品向量auc评估高,相对提高约1%;

(3)一天未更新向量,监督模型和node2vec商品向量,auc稳定;

(4)一天未更新商品向量和用户向量,由于用户行为变化较大,auc略微下降;

1.3 评估商品向量头部热门、中部和尾部商品auc

(1)监督模型和node2vec模型头部商品向量差距不大;

(2)监督模型在中部和长尾商品向量auc表现更好;

2. 单个case评估item2item

计算每个商品最相似的topN个商品,查看商品相关性,给出3个例子,第一个为主商品,后面为通过商品向量计算的最相似的n个商品。

3.单个case评估user2item

第一为某用户真实的点击商品,第二行为使用用户向量和商品向量计算的改用户用最关的N个商品

case1:

case2:

case3:

4. 图像向量i2i分数相关性

分别使用图像商品向量和监督模型商品向量,计算每个商品的top200相似商品,重合率为31%,pearson相关性为0.685。

5. tsne低维可视化

5.1 商品向量在叶子类目下tsne两两可视化

随机抽取50个叶子类目下的所有商品,tsne可视化结果如下:(左边为监督模型生成商品向量;右边为node2vec模型生成商品向量)

从两图中可视化效果可以看出,监督模型在叶子类目上的区分度更明显,效果更好.

监督模型

非监督模型

5.2 商品向量在店铺下tsne两两可视化

随机抽取50个店铺下的所有商品,tsne可视化结果如下:(左边为监督模型生成商品向量;右边为node2vec模型生成商品向量)

从图中可视化效果可以看出,监督模型在店铺上的区分度更明显,效果更好

监督模型

非监督模型

6. 评估总结

此外,还有一些与线上真实数据的召回率、命中率、准确率等评估指标,在此不一一给出。

在商品向量覆盖上,基于图像向量的监督模型,基本能覆盖蘑菇街平台上所有商品,而node2vec只能覆盖样本中用户有行为的商品。故监督模型embedding生成商品向量无论在各项离线苹果指标上,还是商品覆盖上,均提升明显。

  • 线上a/b测试效果

商品详情页推荐场景召回阶段目前主要有两个召回策略,一个是传统相似算法融合模型,另一个是使用商品向量进行扩召回。传统相似算法融合模型召回的商品曝光占比约为70%,使用商品向量扩召回的商品曝光占比约为25%,其他5%。

线上整体提升效果为,pv点击率提升约3%,uv点击率提升约1.2%,gmv分天波动较大,平均提升约4%,且根据以往经验,gmv的提升需要更长的a/b测试时间,才能看出稳定效果。

对比node2vec模型和监督模型的商品向量,进行扩召回策略,在策略维度上,整体pv点击率提升25%,uv点击率14%。

此外整体效果上和分策略效果上,曝光/点击去重商品数,以及曝光/点击叶子类目数均提升明显。

详细分析实验数据,监督模型能在商品详情页推荐召回中召回更多相同叶子类目下的商品。详细数据、指标和分析过程,由于比较敏感,在此不详细给出。

目前,还仅将商品向量应用于线上,用户向量暂时还未进行小流量实验,后续会逐步验证线上效果。

  • 总结

目前只是在召回层使用Embedding向量,更多的成本在系统改造上,商品量离线全量计算cosine相似度问题已经解决,但线上实时计算,成本较大,目前正在逐步优化改进。商品详情页同店商品推荐场景,由于同店商品候选集较少,线上实时计算目前rt可接受,故能应用于商品详情页。工程系统改造后,可应用于其他推荐场景。后续也准备在排序阶段,以及搜索排序等多个场景加入Embedding向量的应用。

在多项离线数据评估指标和线上实验数据分析结果中,也发现node2vec模型,无论是在工程上还是样本构造,和一些小的trick上,效果上有更大的优化空间。目前,团队小伙伴也在node2vec模型上进一步优化,后续可继续对比离线和线上指标效果。

在embedding技术实践于蘑菇街推荐场景过程中,其离线评估指标的建立,非常重要,能一定程度上减少线上ab小流量实验测试的成本。细致的数据分析也能为后期迭代优化提供思路。

团体同学目前尝试的宽模型,在搜索排序场景提升明显。团队还有小伙伴正在尝试序列匹配模型应用于排序,进行在线打分,工程系统上正在逐步支持和完善,目前还在ab测试期间,离线评估提升较大,也期待实际线上效果。此外,结合宽模型和深度学习模型,应用于线上,也是后续考虑的重点方向。

embedding技术的应用,还有很大空间可以进行尝试,一方面可以尝试更多的Embedding技术,如基于文本数据、基于图结构模型、self-attention机制、多目标优化等,另一方面,可以尝试更多实体的Embedding,如用户向量化表示和意图识别等。下图也包含团队当前已经完成的部分工作和后续工作的重点方向。

Item2Vec是由O Barkan,N Koenigstein在他们2016年的论文“Item2Vec: Neural Item Embedding for Collaborative Filtering“[3]中提出的。论文把Word2vec的Skipgram with Negative Sampling (SGNS)的算法思路迁移到基于物品的协同过滤(item-based CF)上,以物品的共现性作为自然语言中的上下文关系,构建神经网络学习出物品在隐空间的向量表示。论文中还比较了Item2Vec和SVD在微软Xbox音乐推荐服务和Windows 10商店的商品推荐的效果,结果显示Item2Vec效果有所提升。该论文关注公众号输入:论文,即可获得。

点击原文阅读,有github,基于item2vec的python实现分享。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
流计算 Oceanus
流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档