登录
原创

价格导向的图卷积推荐(一)

发布于 2020-12-03 阅读 303
  • 人工智能
原创

顶级数据挖掘会议ICDE 2020发布了一种最新的推荐模型,它基于商品的价格完成基于GCN的推荐,值得学习一下~ ~

模型架构

这项工作的重点是利用商品价格来提高推荐的准确性。如上所述,由于用户的价格意识与产品类别密切相关,所以在设计价格意识推荐系统时,必须将类别考虑在内。我们将此建议任务拟定如下。架构图如下所示
image.png

PUP模型的整体设计组件如下:统一的异质图,一个图卷积编码器(graph convolutional encoder)和一个基于成对交互的解码器。构建的统一异构图由四种类型的节点组成,其中用户节点连接到商品节点,商品节点连接到价格节点和类别节点

注:这里是一个trick,通过新建两种其他类型的节点(价格、类别)来学习到用户和物品与这些side information之间的联系

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

其中, <math><semantics><mrow><mi>U</mi></mrow><annotation encoding="application/x-tex">U</annotation></semantics></math>U<math><semantics><mrow><mi>I</mi></mrow><annotation encoding="application/x-tex">I</annotation></semantics></math>I 表示用户集和物品集,<math><semantics><mrow><msub><mi>R</mi><mrow><mi>M</mi><mo>∗</mo><mi>N</mi></mrow></msub></mrow><annotation encoding="application/x-tex">R_{M*N}</annotation></semantics></math>RMN是用户-物品的交互矩阵,M和N分别表示用户和物品的数量。如果 <math><semantics><mrow><msub><mi>R</mi><mrow><mi>u</mi><mi>i</mi></mrow></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">R_{ui}=1</annotation></semantics></math>Rui=1 表示用户u曾经购买了物品i。使用 <math><semantics><mrow><mi>p</mi><mo>=</mo><mo>[</mo><msub><mi>p</mi><mn>1</mn></msub><mo separator="true">,</mo><msub><mi>p</mi><mn>2</mn></msub><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><msub><mi>p</mi><mi>N</mi></msub><mo>]</mo></mrow><annotation encoding="application/x-tex">p =[p_1,p_2,...,p_N]</annotation></semantics></math>p=[p1,p2,...,pN]<math><semantics><mrow><mi>c</mi><mo>=</mo><mo>[</mo><msub><mi>c</mi><mn>1</mn></msub><mo separator="true">,</mo><msub><mi>c</mi><mn>2</mn></msub><mo separator="true">,</mo><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mo separator="true">,</mo><msub><mi>c</mi><mi>N</mi></msub><mo>]</mo></mrow><annotation encoding="application/x-tex">c =[c_1,c_2,...,c_N]</annotation></semantics></math>c=[c1,c2,...,cN] 表示物品的价格和类别。

为了便于建模,我们将价格视为一个分类变量,使用统一量化将价格值离散到单独的水平。例如,假设类别手机的价格范围是[200,3000],我们将其离散到10个价格水平。例如,一部手机的价格是1000元,那么这个手机的价格水平就是 (1000-200)/(3000-200)*10 = 2 。(价格标准化

最后,我们将价格感知产品推荐问题表述如下:

  • input:交互矩阵 <math><semantics><mrow><mi>R</mi></mrow><annotation encoding="application/x-tex">R</annotation></semantics></math>R ,物品价格 <math><semantics><mrow><mi>p</mi></mrow><annotation encoding="application/x-tex">p</annotation></semantics></math>p和物品类别 <math><semantics><mrow><mi>c</mi></mrow><annotation encoding="application/x-tex">c</annotation></semantics></math>c
  • output:给定用户-商品对(u,i)的购买行为的估计概率。

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

异构图构建

对于价格感知的产品推荐任务,同时拥有用户与产品的交互数据和产品的价格属性,明确地捕捉用户的价格感知是一项挑战,因为用户与价格没有直接关系。换句话说,用户与价格的关系是建立在用户对商品和商品对价格的传递关系之上的。这样,商品就起到了连接用户和价格的桥梁作用。为了解决将复杂关系转化为统一模型的难题,此工作将价格变量离散化,并构建由四种类型的节点用户、项目、价格和类别组成的异构图。

输入的交互数据和属性(类别和价格)被一个无向图 <math><semantics><mrow><mi>G</mi><mo>=</mo><mo>(</mo><mi>V</mi><mo separator="true">,</mo><mi>E</mi><mo>)</mo></mrow><annotation encoding="application/x-tex">G = (V,E)</annotation></semantics></math>G=(V,E)表示。V中的节点包括用户节点、物品节点、类别节点和价格节点,分别用 <math><semantics><mrow><mi>u</mi><mo separator="true">,</mo><mi>i</mi><mo separator="true">,</mo><mi>c</mi><mo separator="true">,</mo><mi>p</mi></mrow><annotation encoding="application/x-tex">u,i,c,p</annotation></semantics></math>u,i,c,p 表示。E中的边由三个部分组成,分别是:

  • 交互边 :<math><semantics><mrow><mo>(</mo><mi>u</mi><mo separator="true">,</mo><mi>i</mi><mo>)</mo></mrow><annotation encoding="application/x-tex">(u,i)</annotation></semantics></math>(u,i)中的<math><semantics><mrow><msub><mi>R</mi><mrow><mi>u</mi><mi>i</mi></mrow></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">R_{ui}=1</annotation></semantics></math>Rui=1 的边
  • 类别边: <math><semantics><mrow><mo>(</mo><mi>i</mi><mo separator="true">,</mo><msub><mi>c</mi><mi>i</mi></msub><mo>)</mo></mrow><annotation encoding="application/x-tex">(i,c_i)</annotation></semantics></math>(i,ci)
  • 价格边: <math><semantics><mrow><mo>(</mo><mi>i</mi><mo separator="true">,</mo><msub><mi>p</mi><mi>i</mi></msub><mo>)</mo></mrow><annotation encoding="application/x-tex">(i,p_i)</annotation></semantics></math>(i,pi)

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

image.png

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

将价格和类别信息编码到用户节点和产品节点的输入特征中是合理的,这使得二分图设计更加简洁。然而,在此工作中,明确地将两个重要的属性(价格和类别)作为实体节点,以一种更有表现力的方式捕获依赖于类别的价格感知。基于四种节点的异构图的显式设计,符合因子分解机的思想,可以直观有效地建模任意特征之间的两两交互。

本文首先介绍ICDE论文的第一部分—异构图的构建,后面分两篇文章介绍模型的另外两个组件—图卷积编码器、基于成对交互的解码器。

评论区

哎嘿

0

0

0

举报