推荐系统-召回阶段-EGES模型【Enhanced Graph Embedding with Side Information】

EGES算法是一种解决大规模电商推荐系统中扩展性、稀疏性和冷启动问题的方法。它基于用户行为构建商品图谱,利用DeepWalk生成商品嵌入,并结合商品侧信息优化嵌入过程。通过加权聚合处理类别属性,以缓解平均聚合的不足,提高推荐精度。
摘要由CSDN通过智能技术生成

EGES算法实在论文《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》,主要用于商品推荐中。这篇论文的一作是阿里巴巴团队的,实验部分说该算法应用在了淘宝中。本人最近刚入职某公司,从事推荐算法的工作,因此后续会分享一下推荐相关的算法或者心得。

一、研究动机

   1. 扩展性。现有的大部分推荐系统可以运用在一百万的用户和商品中,但无法运用在拥有十亿的用户和二十亿商品的淘宝中。

   2. 稀疏性。用户往往只和少量的商品交互,因此很难去训练一个精确的推荐模型。

   3. 冷启动。淘宝上每小时会有百万级的新商品被上传。由于这些商品没有用户行为的信息(点击、购买等),因此很难预测用户对这些商品的喜爱程度。

    作者设计了一个两阶段的推荐框架:匹配(或召回)和排序。这也是一般推荐模型的框架。作者在这篇文件主要是解决了匹配阶段的问题,通过用户行为计算商品间两两的相似性。相似性topK的商品输入到排序阶段。接下来是算法流程。

                                                                         图1 

二、通过用户行为构建Item图

     统一将商品称为Item。用户的点击行为往往是序列化的,比如图1(a)中的用户U1,我们经常点击商品D后,再浏览之后点击A ,再点击B。因此我们将用户的历史行为数据作为一个序列数据。由于时间和空间的复杂度以及用户兴趣的变化,作者选择了一个小时内用户的行为,该行为被称为session。(疑问:作者选择了最近一小时的用户行为数据?还是选择最佳某个时间段的数据,然后按一小时划分?)

    获得了用户的session数据后,我们构建有向图了(是否可以构建无向图看看结果?)。如果两个item是在序列中连续出现的,前面的item会连接到后面的item,例子见图1(b)。构建的有向图是有权的,权重等于在序列数据中出现次数。在抽取数据时,作者也过滤了一些无效或者异常的数据:停留时长小于一秒;过于活跃的用于;相同ID但不同的商品。

三、Base Graph Embedding(BSE)

    构建完了加权有向图后,接下来而已使用DeepWalk产生Item的嵌入向量了。大家可以去阅读一下DeeWalk的原论文,这里大概讲一下方法。1)计算每个节点跳到每个邻居的概率,也对边归一化,然后通过随机游走产生多个节点序列;2)使用skip-gram方法最大化中心节点对文本节点(w窗后内)的相似度(参考word2vec方法)

    为了计算方便,论文采用了负采样的方法:

    节点j时正样本,节点t是负样本。

四、Graph Embedding with Side Information(GES)

     为了解决冷启动问题,作者加入了商品的附属信息,比如商标、类别等。让W表示节点潜入矩阵,w^0是节点自身的嵌入向量,w^s是第s类附属信息的嵌入向量。最终节点的向量为自身向量和所有附属信息向量的平均,所有的嵌入向量都有相同的维度。

五、Enhanced Graph Embedding with Side Information (EGES)

     GES的问题是平均聚合了所有向量,忽略了不同类别的属性为节点的影响。作者提出了一种加权聚合附属属性的方法,示例图如下:

                                                                             图2

      SI0表示每个Item,SI1...SIn表示每个类别的附属信息。稀疏特征通常为one-hot特征,因此模型首先对每一个类别学习一个密集向量,用W表示。模型还会学习一个权重矩阵A\in R^{|V| * (n+1)},|V|表示Item个数。每个Item都有一个不同的类别权重分布。

      最终Item的嵌入向量H通过上面公式加权聚合得到。上面的归一化实际上是用了一种softmax归一化,可以保证每种类别的权重大于0。损失函数定义如下:

       y是标签符号,等于1表示正样本,0表示负样本。v是中心节点,u是采样到的文本节点。H是我们需要得到的嵌入向量,Z是节点文本向量(作为副产物会被模型学习到)。   

六、算法流程

     在算法1中,我们会首先采样出一个节点序列(第4步采样),每个节点序列会被用于更新模型参数(第5步更新模型参数,调用算法2)。在算法2中,每个节点的左右窗口k内的节点作为正样本,先试用正样本更新参数(算法2的第14步到20步)。然后随机采样#ns个负样本去更新模型参数。更新的公式在论文中有推导。

以上是整个EGES的算法流程,关于实验部分大家可以看看论文。

EGES算法全面解读_afterbug的博客-CSDN博客_eges

推荐系统之EGES_张先生-您好的博客-CSDN博客_eges 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值