2

Learning and Transferring IDs Representation in E-commerce阅读笔记

 2 years ago
source link: https://tfeima.github.io/2019/03/14/ali%20embedding/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

除了用户的隐式反馈,论文还考虑了不同ID类特征之间的连接结构,通过这些连接,在ItemID序列中的信息可以传播到其它类型的ID特征,并且可以同时学习这些ID特征的表示,如下图

hema 的推荐框架

这篇论文是应用在盒马鲜生这个APP中的,在这个APP中,推荐的过程主要分为4个过程:

  1. 准备阶段:离线计算出user-to-trigger和trigger-to-item的评分,并且把结果存储在数据库中。
  2. 匹配:首先根据用户的ID取出他们的triggers,然后基于这些triggers产生一些items的推荐候选集。
  3. 筛选:移除无效和重复的items.
  4. 排序:综合一些评分指标,给这些筛选后的items排序。

学习IDs的表示

用户交互序列的Skip-gram模型

将用户的一个交互会话视作一个documents,形式上来讲就是,给定一个item IDs item1,⋯,itmei,⋯,itemN,skip-gram模型最大化:
J=1NN∑n=11≤n+j≤N∑−C≤j≤Clogp(itemn+j|itemn)
C是上下文窗口的长度。比如文中给的例子,每个用户都有一个序列,第一个用户的梨子就是上面公式中的itemn:

在基本的skip-gram模型中,p(itemj|itemi)​是由softmax函数定义的:
p(itemj|itemi)=exp(e‘Tjei)∑Dd=1exp(e‘Tdei)
其中e‘∈E‘⊂Rm×D,e∈E⊂Rm×D.E‘,E分别是与上下文和目标相关的表示矩阵。m,D是分别是嵌入向量的维度和包含所有item IDs字典的大小。

Log-uniform 负采样

上式中计算∇p(itemj|itemi)的时间复杂度与D成正比,当D很大的时候,上面的模型很难实际使用。所以这篇论文使用负采样的方法代替softmax函数:
p(itemj|itemi)=σ(e‘Tjei)ΠSs=1σ(−e‘Tsei)
负样本是从Pneg(item)的分布采样得到,Pneg(item)最简单的选择是均匀分布,但是对于样本不均衡的情况下,均匀分布并不是一个好的选择,因为往往流行的item IDs都提供了很少的信息,这样的样本在目标样本的上下文窗口中出现多次却提供较少信息,这篇论文中选择了Zipfian分布作为Pneg(item)​.
p(index)=log(index+2)−log(index+1)log(D+1)
首先根据items的频率按照降序排序,然后每个item都对应着一个index,index的范围从0到D-1。累积概率分布为
F(x)=p(x≤index) =index∑i=1log(i+2)−log(i+1)log(D+1) =log(index+2)log(D+1)
令F(x)=r,r为(0,1]之间的一个随机数,那么我们可以随机抽到一个index为
index=⌈(D+1)r⌉−2.

IDs 以及他们他们之间的结构连接

Item ID 以及它的属性IDs

item是交互的核心单位,它有许多属性id,包括product id,store id,brand id,category id等。

User ID

属性IDs的联合嵌入

论文提出了一个层次化的嵌入模型,去联合学习item ID以及它们的属性ID之间的低维表示,如下图

假设K类IDs,令IDs(itemi)=[id1itemi,⋯,idK(itemi)],那么可以得到
$$
p(IDs(item_j) | IDs(item_i))
= \sigma \big(\sum_{k=1}^K (w_{jk}e^{‘}{jk})^T(w{ik}e_{ik})\big) \Pi_{s=1}^S\sigma \big(-\sum_{k=1}^K(w_{sk}e^{‘}{sk})^T(w{ik}e_{ik})\big)
$$

其中 wik 为 idi(itemi) 的权重,计算方法为:

wik=1∑Dj=1I(idk(itemi)=idk(itemj))

定义
p(itemi|ID(itemi))=σ(K∑k=2wikeTi1Mkeik),
其中Mk∈Rm1×mk(k=2⋯K)是为了使ei1变换到eik相同维度的矩阵。然后最大化
J=1NN∑n=1(1≤n+j≤N,j≠0∑−C≤j≤Clogp(IDs(itemn+j)|IDs(itemn))+αlogp(itemn|IDs(itemn))−βK∑k=1‖Mk‖2)
这种方法将Item ID 和属性ID 嵌入到一个同语义空间。

嵌入用户ID

使用简单平均法:
Embedding(u)=1TT∑t=1et
et是itemt的嵌入向量。

利用ID的表示

item相似性度量

sim(itemi,itemj)=cos(vi,vj)=vTivj‖vi‖2‖vj‖2

从已知item迁移到未知item

为了解决冷启动问题,论文提出了一个迁移方法,对新的item ID构建一个近似的嵌入向量。因为即使是一个新的item ID,通常它的属性id也有历史记录,论文的想法是最大化概率
maxp(itemi|IDs(itemsi))
也就是令
p(itemi|IDs(itemsi))→1
所以令
ei1=K∑k=2wikeTi1Mkeik
实际中只使用那些有历史记录的idk.

从不同的领域迁移

本节讲了如何从淘宝用户喜好迁移到盒马平台。

Us,Ut分别表示source domaintarget domain的用户集合,Ui=Us⋂Ut。如上图所示,迁移的过程为

  1. 在淘宝计算出Us的嵌入向量
  2. 基于嵌入向量的相似度,Ui中的用户使用k-means聚类为1000个组
  3. 对于每个组,选择出 top N 个盒马中的item作为候选集
  4. 根据相似性度量,将新用户分配到最相近的组中
  5. 新用户被分配到组中后,组里使用第3步选出来的候选集筛选排序后推荐给他

迁移到不同的任务

可以使用嵌入向量和历史销售作为输入做销售预测任务,使用的模型为全连接神经网络。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK