基于图卷积的价格推荐论文(Price-aware Recommendation with Graph Convolutional Networks)

基于图卷积的价格推荐论文概述

ICDE2020非常好的文章 Price-aware Recommendation with Graph Convolutional Networks

paper link:https://arxiv.org/pdf/2003.03975v1.pdf

本文原创作者萌酱还是萌萌子,自己略加修改,用来学习,争做合格的知识搬运工。

其它参考:这篇这篇

一、前言

推荐系统文章中很少有从生产者角度出发的文章(2018RecSys有一篇),也没有过多的与推荐场景关联的实际/现实因素。大多数研究都更关注用户特征和用户与物品之间的交互,以计算点击率之类的相关评估结果。但在电商中,像Price这种真实的甚至有些起决定性作用的因素,却很少出现在科研文章中,这也许可能maybe与公开数据集常常没有这一特征有关吧。

一个好的模型是能够给用户推荐其确实喜欢的物品,用户也确实点击了这些推荐的物品。BUT,若商品价格不符合用户自己的预期,他们就会无情的关掉网页离开。即使点击率提高,转化率依旧不会提高。

所以就有了这篇price-aware在推荐系统中应用的paper

二、关键问题

文章中踢到价格在推荐系统中应用的难度有以下两点:

  • 1)用户到价格意识未知用户对商品价格的偏好和敏感度未知,这仅隐含地反应在用户购买的商品中。也就是说,只能通过用户是否购买来判断该商品的价格是否合适。又因为用户很少声明其对商品价格的偏好和敏感性,因此,要构建数据驱动的方法,必须从用户的购买历史中推断出用户对商品的价格的个性化意识。更具挑战的是我们要考虑相似用户历史中反映的CF效应,以提高推理的准确性。
  • 2)商品类别对用户的价格意识影响很大。商品的价格如何影响用户的意图很大程度上取决于商品的价格。用户对商品价格的感知和承受能力在各个产品类别之间可能会发生显著变化。e.g.,一个女人可能不愿意花1000元买一块手表,但可能愿意发2000元买一条漂亮的裙子(无情==)。而男人可能正好相反。因此考虑商品类别信息可以较为准确的推断用户的价格偏好。

对于第一个难点,作者们对用户跟商品之间以及商品与价格之间的关系进行建模,该方法借鉴了图卷积网络(GCN),核心思想就是利用商品作为桥梁传播价格对用户的影响,进而使得学习到的用户表示具有价格意识。

对于第二个难点,我们将item类别进一步整合到传播进度中,并对可能的成对交互进行建模,以预测用户与item之间的交互。

进一步的分析表明,对价格意识进行建模对于预测用户对未开发类别商品的偏好特别有用。

Consequently,作者proposed一种有效的方法来预测用户的购买意愿,并重点关注推荐系统中的价格因素,命名为PUP模型(Price-aware User Preference-modeling)。

三、The main contributions of this work

在这里插入图片描述

四、Preliminary Study

WTP & CWTP

在这里插入图片描述

​为了理解各个类别之间的不一致敏感性,文章将广泛使用的愿意支付(WTP)扩展到衡量类别愿意支付(CWTP),作为反映用户价格意识的指标,WTP定义为用户愿意支付的商品的最高可接受价格。进一步将CWTP定义为指定用户愿意为给定类别的商品支付的最高价格。因此,对于与多个类别的商品进行交互的用户,将具有多个CWTP值。然后为用户计算CWTP的熵(如下图Fig.1)其中较小的熵值表示用户对各个类别的价格敏感性一致,而较大的值表示用户对不同类别的产品的价格有不同的考虑(计算熵得到的的结果)

偏斜的分布(Fig.1)验证了上述结果,即价格意识与产品类别高度相关,并且不同类别之间的价格敏感度不一致

在这里插入图片描述

随机从数据集中sample出三个用户,并展示他们对不同类别商品的价位接受度热力图如下(Fig.2)
在这里插入图片描述

五、Problem Definition

文中强调,这项工作的重点是利用商品价格来提高推荐的准确性。由于用户的价格意识与产品类别密切相关,所以在设计价格意识推荐系统时,必须将类别考虑在内。

We formulate this recommendation task as follows:

其中,UI表示用户集和物品集,RM×N是用户-物品的交互矩阵,M和N分别表示用户和物品的数量。如果 Rui = 1表示用户u曾经购买了物品i。使用 p = {p1, p2, ..., pn}c = {c1, c2, ..., cn}表示物品的价格和类别。

为了便于建模,我们将价格视为一个分类变量,使用统一量化将价格值离散到单独的水平。例如,假设类别手机的价格范围是[200,3000],我们将其离散到10个价格水平。例如,一部手机的价格是1000元,那么这个手机的价格水平如下:
⌊ 1000 − 200 3000 − 200 × 10 ⌋ = 2 \lfloor\frac{1000-200}{3000-200}\times10\rfloor=2 30002001000200×10=2
最后,将价格感知产品推荐问题表述如下

  • input:交互矩阵R,商品价格p和商品类别c。
  • output:给定用户-商品对儿(u,i)的购买行为的估计概率。

六、提出PUP模型

模型图如下:
在这里插入图片描述

pup模型的整体设计组件:统一的异质图一个图卷积编码器(graph convolutional encoder)和一个基于成对交互的解码器

构建的统一异构图由四种类型的节点组成,其中用户节点连接到商品节点,商品节点连接到价格节点和类别节点。

接下来我们来拆分一下模型的各个组件。

6.1 统一的异构图(Unified heterogeneous graph)

为了显式地建模用户行为和商品属性,作者离散了价格变量,并建立了包含四种类型节点的异构图。为了解决未声明的价格意识问题,作者明确地在图上引入价格作为价格节点,而不是项目节点的输入特征。针对类别依赖影响的难度,我们进一步在图中添加类别节点

对于价格感知的产品推荐任务,我们同时拥有用户与物品的交互数据和物品的价格属性,明确地捕捉用户的价格感知是一项挑战,因为用户与价格没有直接关系。换句话说,用户与价格的关系是建立在用户对商品和商品对价格的传递关系之上的。这样,商品就起到了连接用户和价格的桥梁作用

为了解决将复杂关系转化为统一模型的难题,我们将价格变量离散化,并构建由四种类型的节点用户、项目、价格和类别组成的异构图。

输入的交互数据和属性(类别和价格)可以由无向图G =(V,E)表示。 V中的节点包括用户节点u∈U,物品节点i∈I,类别节点c∈C和价格节点p∈P。 E中的边由三部分组成,分别是:

  • 交互边:(u,i)中Rui = 1的边

  • 类别边:(i,ci)

  • 价格边:(i,pi)

通过引入四种类型的节点,我们将所有的实体、特征和关系表示为一个统一的图,以显式的方式捕获所有的成对关系。如下图所示:
在这里插入图片描述

在图卷积网络中,常用的是使用word2vec提取的某些高级特征向量,如单词嵌入,作为节点的输入特征。同样的,将价格和类别信息编码到用户节点和物品节点的输入特征中似乎是合理的,这使得二分图设计更加简洁。

然而,在本文的工作中,作者明确地将两个重要的属性(价格和类别)作为实体节点,以一种更有表现力的方式捕获依赖于类别的价格感知。这里为类别和价格使用单独的节点类型,而不为(类别,价格)的交叉特征使用单个节点类型,来避免冗余参数。 直观地讲,具有不同价格的同一类别的项目共享功能相似性;同时,来自各个类别的相同价格的商品也反映出相似的价格意识。 因此,单一类型的交叉特征缺少上述两种情况的联系。通过将不同的节点类型应用于类别和价格,可以在图中捕获不同级别的语义相似性。)

通过分配不同的节点,价格和类别被直接和明确地捕获,上述两个价格感知物品推荐的困难得到了缓解。具体地说,未声明的价格感知被转化为异构图上的高阶邻居邻近,这可以被图卷积网络很好地捕获。通过将物品节点连接到价格节点和类别节点,可以减轻依赖于类别的影响问题。

6.2 图卷积编码器 (Graph convolutional encoder)

为了同时捕获协同过滤(CF)效应和价格感知,我们利用图卷积网络作为编码器来学习用户、商品、价格和类别的语义表示。通过在异构图上传播嵌入信息,将价格敏感信息聚合到用户节点来获取用户的价格敏感性。

传统的潜在因子模型LFM(Latent factor model)试图对低维潜在空间中的实体进行编码,是推荐系统中一种广泛使用的机制。但当用户u以价格p购买商品i时,存在潜在的用户价格交互作用(u,p),传统的LFM仅学习用户和物品的表示形式,i.e.,建模用户和物品的表示。

So,本文作者对其进行扩展并尝试学习同一潜在空间中四种类型实体的表示。主要的动机是在图上执行消息传递可以为多个任务(如节点分类和链接预测)生成语义性和鲁棒性的节点表示。其中有一类特殊的算法称为图神经网络,它达到了网络表示学习领域的最新水平。我们采用了一个编码模块,包括一个将独热输入转换为低维向量的嵌入层(Embedding layer),一个捕获CF效应和价格感知的嵌入传播层(Embedding propagation layer ),以及一个建模邻居相似度的邻居聚合层(Neighbor aggregation layer)。

编码模块

  • Embedding Layer: PUP模型由于价格属性和类别属性被拿出来作为节点,因此ID是节点剩下的唯一特征。因此,我们引入一个嵌入层来压缩one-hot ID编码到一个密集的实值向量。用单独的嵌入e’∈Rd表示每个节点,其中d是嵌入大小。

  • Embedding propagation layer : 在GCN中,节点的嵌入传播到它们的一阶邻居,如果应用了一个以上的卷积层,则进一步传播。也就是说,通过增加图卷积的层数一定程度上可以扩大节点的感受野。在本文中的编码器中,嵌入传播层捕获在两个直接连接的节点之间传输的消息,这些节点可以是用户-商品、商品-价格或商品-类别。节点 i 和节点 j 之间的传播的嵌入可以表示为:
    t j i = 1 ∣ N i ∣ e j ′ t_{ji}=\frac{1}{\rvert N_i \rvert}e'_j tji=Ni1ej

    Ni 表示节点 i 的邻居集合, e’j是节点 j 从嵌入层得到嵌入表示。与原GCN相同的是,本文也对每一个节点添加自循环(self-loops),因为它缩小了归一化Laplacian的谱,因此我们将异构图中的每个节点链接到自身,使得节点 i 也出现在 Ni 中。(添加自环对于GCN非常重要,因为它会缩小归一化拉普拉斯算子的频谱,将异构图中的每个节点链接到自身

  • Neighbor aggregation layer: 从网络表示学习的角度来看,图结构中两个节点的邻接关系意味着它们的表示也应该在变换后的潜在空间中接近。通过聚合节点邻居的表示来更新节点的表示。在所有的聚合操作中,[24]、[28]最常用的方法是求和、取平均值和LSTM。在作者提出的编码器中,作者们采用平均池化和利用非线性激活函数来执行消息在图上传递。

在这里插入图片描述

在这里插入图片描述

由于嵌入传播和邻居聚合的内在表达能力,图卷积编码器提取的学习表示可以有效地建模节点及其高阶邻居之间的关系。从直觉上讲,相同价格水平的商品可能比不同价格水平的商品更相似。在构造的异构图中,价格节点链接到该价格级别的所有项目,并且图卷积编码器保证这些项目的输出表示将通过嵌入传播和邻居聚合来吸收嵌入其自身的价格。因此,编码器生成具有价格感知相似性的项目表示。因为类别节点连接到属于该类别的所有项目节点,所以以相同的方式捕获类别感知的相似性。此外,用户的价格意识在很大程度上通过交互过滤和其他用户通过协作过滤的购买历史反映出来。因此,利用商品作为用户和价格意识之间的桥梁至关重要。在PUP模型中,用户的表示形式是从其交互项中明确汇总的,并且这些项直接链接到类别和价格。因此,类别节点和价格节点相对于用户节点是高阶邻居,并且价格意识通过中间项目节点传播给用户。

从推荐的角度来看,本文提出的图卷积编码器能够捕获任意两个节点之间存在路径时的相似性。结合经典的矩阵分解算法,通过优化估计用户-物品交互,隐式获取协同过滤效果。然而,在我们的图卷积编码器中,我们明确地通过聚集一个节点的邻居来合并协作过滤效果。具体来说,与同一物品进行过交互的相似用户是异构图上的2阶邻居。

6.3 基于成对儿交互的解码器 (Pairwise-interaction based decoder)

由于异构图中包含四种节点,这些节点被分解为一个共享的潜在空间,受因子分解机的启发,我们采用了基于成对交互的解码器来估计交互概率。

我们采用两分支设计来估计用户-物品的交互,重点是将价格纳入推荐。全局分支以用户的整体购买力为重点,在大范围内模拟价格效应。而类别分支集中在一个“局部”级别上,在这个级别上,类别因素会影响用户对价格的敏感性。对于每个分支,我们采用基于成对交互的解码器来估计交互概率,并将两个预测分数合并为最终结果。

  • 1)全局分支机构在较大范围内对价格效应进行建模,该价格效应侧重于用户的整体购买力
  • 2)类别分支集中在相当“局部”的级别,其中类别因素会影响用户的价格敏感性

在一个统一的异构图中,我们将用户、商品、类别和价格表示为四种类型的节点,因此对不同类型节点的学习表示共享相同的潜在空间。因子分解机分解了共享潜在空间中的所有特征,并通过取每对特征向量的内积来估计相互作用,受此启发,我们采用了FM模式的解码器。形式上,使用与上一节编码器相同的符号,用户u与c类商品i的估计购买概率和价格p可以表示为:

在这里插入图片描述

其中,最终的预测结合了来自两个分支的超参数预测结果来平衡这两个项。需要注意的是,每个分支都有自己的图卷积编码器,因此计算Sglobal 和Scategory 所使用的嵌入是不同的、独立的。

关于global分支,用户、物品和价格这三个特征被送进一个双路的基于成对交互的FM解码器。在这个分支中,三个内积分别捕捉了用户的兴趣、用户的整体价格效应和产品的价格偏差。在不考虑类别嵌入的情况下,我们估计了相互作用的概率,因此类别节点仅作为正则化项在图上,使同一类别的项彼此靠近。由于类别信息隐藏在全局分支的解码过程中,与类别相关的价格的局部效应被推出了学习的潜在空间。而反映用户整体购买力和可承受性的全局价格影响,则被强大的图卷积编码器保留在潜在空间中

七、模型训练

为了训练提出的PUP模型,在编码阶段,利用GCN来学习所有四种类型节点的表现力和鲁棒性表示。在解码阶段,由于预测用户-物品交互是推荐的主要任务,因此仅专注于在异构图上重建用户-物品边缘,并省略物品-价格和物品-类别边缘。为了了解用户对不同物品的偏好,采用贝叶斯个性化排名(BPR)作为损失函数。 BPR损失导致模型将阳性样本(交互项)的排名高于阴性样本(未观察到交互)

实现

  1. 图卷积编码器可以利用稀疏矩阵生成有效地实现;
  2. 由于在基于成对交互的解码器中,采用每对特征的内积,因此计算复杂度较高。 但可使用文献12的FM中首次引入的技巧将计算降低为线性复杂度;
  3. Dropout是防止神经模型过度拟合的有效方法, 在特征级别采用Dropout,这意味着以概率p随机丢弃输出表示,p是我们方法中的超参数。借助Dropout技术,作者提出的PUP方法在统一异构图上学习了更鲁棒的节点表示;

八、Experiment

数据集

利用两个真实世界的数据集进行比较:Yelp和Beibei,上表总结了这两个数据集的统计信息。

  1. Yelp:采用Yelp2018开放数据集,其中将餐厅和购物中心视为项目。选择顶级类别餐厅下的所有子类别。在此数据集中,每个餐厅的价格显示为美元符号的数量不同,范围从1到4。因此,在实验中,直接将美元符号的数量用作价格水平。最后,利用10核心设置,这意味着仅保留具有至少10次互动的用户和物品;
  2. Beibei:这是从中国最大的电子商务平台之一收集的数据集。在此数据集中,所有项目都具有特定的类别和价格信息。由于此数据集中每个项目的价格都是连续价格,因此使用统一量化将连续价格离散化为10个价格水平,并使用10核设置来保证数据质量;
  3. 对于每个数据集,首先根据时间戳对记录进行排名,然后选择前60%作为训练集,选择中20%作为验证集,最后选择20%作为测试集。 对于每个用户,未被用户交互的项目都被视为否定样本。 执行负采样以构成正负样本对以进行训练。 为了评估top-K推荐的有效性,我们使用的指标有:Recall和NDCG

对比方法

ItemPop、BPR-MF、PaDQ、FM、DeepFM、GC-MC、NGCF

九、Conclusion

在这项工作中,作者强调了将价格纳入推荐的重要性。

为了解决价格整合的两个难点,即未声明价格意识和类别依赖影响,我们提出了一种基于gcn的方法PUP,并采用了一个专门设计来分离价格意识的全局和局部影响的双分支结构。我们在真实数据集上进行了大量的实验,证明我们提出的PUP可以提高现有方法的推荐性能。通过获取价格意识,可以进一步了解如何缓解冷启动问题。虽然我们的模型是专门为建模价格敏感性而设计的,但是我们提出的模型在特征工程方面具有很大的普遍性,其他特征可以很容易地集成到我们提出的方法中。

类别依赖影响,我们提出了一种基于gcn的方法PUP,并采用了一个专门设计来分离价格意识的全局和局部影响的双分支结构。我们在真实数据集上进行了大量的实验,证明我们提出的PUP可以提高现有方法的推荐性能。通过获取价格意识,可以进一步了解如何缓解冷启动问题。虽然我们的模型是专门为建模价格敏感性而设计的,但是我们提出的模型在特征工程方面具有很大的普遍性,其他特征可以很容易地集成到我们提出的方法中。

随着越来越多的研究从服务提供者的角度聚焦于价格因素,如何将价格意识推荐扩展到价值意识推荐是一个有趣而重要的研究课题。此外,对价格动态建模也是一个很有前途的方向。

猜你喜欢

转载自blog.csdn.net/weixin_43901214/article/details/108712626