Learning Heterogeneous Temporal Patterns of User Preference for Timely Recommendation

Cho J., Hyun D., Kang S. and Yu H. Learning heterogeneous temporal patterns of user preference for timely recommendation. WWW, 2021.

本文探讨时序信息的利用, 既考虑了流行度的影响, 又考虑了个性化的因素.

符号说明

  • \((u, i, t)\), (user, item, timestamp);
  • \(U_u\), user embedding for \(u\);
  • \(I_i\), item embedding for \(i\);
  • \(E_{Month}(t)\), month embedding for \(t\)

TimelyRec

  • TimelyRec 主要包括 MATE 和 TAHE 两个部分, 前者提取是时间相关的个性化 embedding, 后者主要针对历史交互序列.

Multi-aspect Time Encoder (MATE)

  • 这部分我们以月份 (month) 为例来说明如何提取和月份信息相关且个性化的 embedding.

  • 首先, 我们通过如下方式得到:

    \[E_{Month}^u(t) = (W_{Month} U_u) \circ E_{Month}(t) \in \mathbb{R}^d, \]

    其包括 personalized period information. \(W_{Month} \in \mathbb{R}^{n \times n}\) 为可训练的权重矩阵.

  • 出了一些规律的周期性的 pattern 外 (比如流行度), 每个用户都会呈现出一些不规律的 pattern, MATE 通过把时间范围拓宽到 \(t\) 之外来捕获这些信息. 如下图所示:

  • 具体地, 我们定义时刻 \(t\), 邻居范围 \(j\) 的 embedding 为:

    \[T_{Month}^{'u}(t, j) = \left \{ \begin{array}{ll} E_{Month}^u(t) & j = 0 \\ \frac{\sum_{n=-j}^j E_{Month}^u (\Delta_{Month}(t, n))}{2j + 1} & j \not = 0. \end{array} \right . \]

  • 接着, 我们通过 attention 来重加权这些 embeddings:

    \[a_i = \frac{\exp(E_{Month}^u(t) \cdot T_{Month}^{'u}(t, i)/ \sqrt{d})}{\sum_{i'=0}^{r_M} \exp(E_{Month}^u(t) \cdot T_{Month}^{'u}(t, i')/ \sqrt{d})}, \\ T_{Month}^u (t) = \sum_{i=0}^{r_M} a_i T_{Month}^{'u} (t, i). \]

  • 当然了, 除了月份, 我们还有 DayOfWeek, Date, Hour 等时间信息, 对于每个我们都可以类似地计算 embedding, 最后的 embedding 为:

    \[C = \{Month,DayOfWeek,Date,Hour\} \\ b_i = \sigma(WU_u \cdot T_i^u(t)) \text{ for } i \in C \\ T^u(t) = \sum_{i \in C} b_i T_i^u (t). \]

Time-aware History Encoder (TAHE)

  • MATE 输出的 embedding 隐含了用户的个性化信息和当前时刻的时间信息, 接下来, 我们把用户的历史交互信息通过 TAHE 融入进来.

  • item embedding: 首先, 我们有 item embedding \(I_i\), 我们希望注入位置信息让模型知晓千欧关系, 这里通过常见的 sinusoidal positional encoding 来实现:

    \[TE(t, j) = \left \{ \begin{array}{ll} \sin( \frac{t / 3600}{10000^{j / d}} ), & \text{ if } j \text{ is even} \\ \cos( \frac{t / 3600}{10000^{j / d}} ), & \text{ if } j \text{ is odd} \\ \end{array} \right ., \\ TE(t) = [TE(t, 0), TE(t, 1), \ldots, TE(t, d-1)]^T, \\ I_i(t) = I_i + \alpha TE(t) \in \mathbb{R}^d. \]

  • 现在我们有一串序列 \([(i_1, t_1^u), \ldots, (i_j, t_j^u), \ldots, (i_l, t_l^u)]\), TAHE 通过如下的方式编码:

    \[H^u(t) = \sum_{j=1}^l c_j^u(t) I_{i_j^u}(t), \\ c_j^u(t) = \frac{\cos(T^u(t), T^u(t_j^u)) + 1}{2}. \]

Prediction

  • 最后的预测融合 4 部分的属性:

    \[x_{uit} = [U_u, I_i(t), T^u(t), H^u(t)], \]

    然后

    \[\hat{y}_{uit} = \sigma(\text{MLP}(x_{uit})). \]

  • 通过 BCE 进行训练.

代码

[official]

posted @ 2023-09-17 14:01  馒头and花卷  阅读(64)  评论(0编辑  收藏  举报