序列推荐综述

A Survey on Session-based Recommender Systems

本文是ACM’18关于session-based recommender systems(SBRS)的综述,文章对SBRS的推荐范式进行了说明,从理论和实践上证明了SBRS的价值;对当前对SBRS进行了系统分类,并从技术及研究的角度对其进行说明;最后总述了SBRS目前的进展及其复杂性和挑战。

推荐系统分类

推荐系统 输入 核心假设 工作机制 优势 劣势
基于内容 user和item content 根据用户的 喜好做推荐 根据item content建模 简单直接 可以解决用户的冷启动 用户兴趣会变化,跟现实场景会有出入
协同过滤(CF) User-item交互数据 根据用户喜好 User-item交互数据建模 有效且相对简单 容易陷入数据稀疏带来的问题, 冷启动问题
上下文可感知的RS User, item, 上下文,user-item交互数据 用户在不同上下文环境下有不同的喜好 对User-item 上下文 交互信息进行建模 User-item交互数据建模 可用数据及数据稀疏的问题
SBRS Session的数据 用户的喜好随着session的变化而变化 推荐出现在相似的session环境中的items 考虑到用户喜好的变化,更好的符合现实场景 会忽略用户长期的更general的喜好

SBRS相关定义及符号表示

定义如下符号表示:

用户:u

用户集合: $U=\left\{u_{1}, u_{2}, \ldots, u_{|U|}\right\}$

物品: i

物品集合:$I=\left\{i_{1}, i_{2}, \ldots, i_{|I|}\right\}$

session: $s=\left\{i_{1}, i_{2}, \ldots, i_{|s|}\right\}$

session集合: $S=\left\{s_{1}, s_{2}, \dots, s_{|S|}\right\}$

待预测/推荐物品为: t

Intra-session context: $C^{I a}$

Inter-seesion context: $C^{I e}$

session的定义: 一段时间内用户消费/收集的一系列事件内的item集合

SBRS定义: SBRS的任务是给定session的部分信息对未知/未来的信息进行预测。

Intra-session context定义: $s_{n}$为当前待推荐session,则$C^{I a}=\left\{i | i \in s_{n}, i \neq i_{t}\right\}$

Inter-session context定义: $s_{n}$为当前待推荐session,$C^{I e}=\left\{s_{n-1}, s_{n-2}, \dots, s_{\left|c^{I e}\right|}\right\}$

session-based recommendation task定义: 给定一个session语境C,session-based recommendation是学习一个从C到t的函数f使得$t: t \Leftarrow f(C)$。在SBRS中,session context是首要的信息,其他如用户或item信息也可以添加到模型中。

Next-items recommendation: 给定当前session $s_{n}$和intra-session context$C^{Ia}$预测$i_{t}$

Next-sessopm(next-basket) recommendations: 给定当前session$s_{n}$和inter-session context $C^{Ie}$预测下一个session的items。

SBRS的意义,复杂性和挑战

  • 意义和价值: SBRS在学术和商业上都具有重要意义。
  • 复杂性:

    • 数据的复杂性

      如下图所示,数据可以分为如下五个等级,SBRS需要的是中间核心的三个(item feature level, item level 和session level)。
      1

  • 挑战: 上图右侧描述了每层的一些挑战,按照层级可以分为 Inner-session,Inter-session, Outer-session的挑战。也可以按照类别分为异质性,共生性,复杂性和相互作用四大类。

Overview of SBRS

SBRS的发展可以分为两阶段: 1990s到2010s的model-free阶段,主要依赖pattern或规则去做。第二阶段是从2010s到现在的model-based阶段,主要采用统计和机器学习算法来做,包括时序相关的马尔可夫链,rnn等。

SBRS的分类和总结

从研究问题的角度做分类

方法 进展 缺点
Item-level dependency modeling patten-based, 马尔可夫链模型, RNN, attention item 不平衡(如热门商品),长尾商品
Session-level dependency modeling 因子分解机, RNN等 长期依赖,上下文感知,inter-seesion依赖
Feature-level dependency modeling 因子分解机, RNN, CNN 特征的异构和依赖
Feature value-level dependency modeling 目前没有进展 特征值的异构和依赖,item-feature-value的交互
Domain-level dependency modeling 目前没有进展 Domain间的互补和交互

从技术的角度进行分类

model-free方法

model-free的方法主要包括:

  • 基于pattern/规则
  • 基于序列pattern

model-based 方法

model-based 方法包括:

  • 基于马尔可夫链的推荐,基于转移概率考虑一阶依赖。
  • 因子分解机,首先将共现矩阵或item-item转移矩阵进行分解,得到item的隐变量,基于隐变量做推荐。
  • 基于神经网络的方法,如考虑序列的RNN等。

model-free方法介绍

基于pattern/规则的推荐系统主要分三阶段:1.最高频的pattern挖掘,session匹配和item推荐。

常见的基于高频pattern的挖掘有Apriori,FR-Tree及相关变形。
基于session pattern的方法和高频pattern 的挖掘相似,但是有一下两个不同点:1.主要考虑inter-seesion的信息而不是intra-session的信息。2.是对序列信息进行挖掘的。

model-based 方法介绍

基于马尔可夫链的推荐方法

马尔可夫链模型可以描述为$\left\{S T, P_{t}, P_{0}\right\}$,其中ST为状态空间,$P_{t}$为状态转移矩阵,$P_{0}$为初始状态概率,一阶状态转移概率为:

$P_{t}(j, k)=P\left(i_{j} \rightarrow i_{k}\right)=\frac{f r e q\left(i_{j} \rightarrow i_{k}\right)}{\sum_{i_{t} \in I} f r e q\left(i_{j} \rightarrow i_{t}\right)}$

由上述公式我们可以得到$\{i_{1}\rightarrow i_{2} \rightarrow i_{3}\}$的概率为:
$P\left(i_{1} \rightarrow i_{2} \rightarrow i_{3}\right)=P\left(i_{1}\right) P\left(i_{2} | i_{1}\right) P\left(i_{3} | i_{2}\right)$

通过上述公式我们可以计算给定session 部分序列时某一item的概率从而做推荐。

除了上述基本的模型外,有其他一些变形,包括结合一阶二阶马尔可夫的模型,有结合隐马尔可夫的概率模型,还有结合因子分解做一些工作。

基于因子分解机的推荐方法

由上述可知,根据观测数据可以计算转移概率,从而形成转移概率矩阵$A^{u}$,需要注意的是上述转移概率矩阵是某一个用户的,因此所有用户的概率转移矩阵为$\mathfrak{A}^{|U| \times|I| \times|I|}$,最基本的因子分解模型是基于Tucker降维:

$\hat{\mathscr{H}}=C \times V_{U} \times V_{I_{j}} \times V_{I_{k}}$

其中C为核张量,$V_{U}$为用户特征矩阵,$V_{I_{j}}$,$V_{I_{k}}$分别为当前item的特征矩阵和下一个item的特征矩阵。

基于神经网络的推荐方法

基于神经网络的推荐方法主要分两大类:基于embedding的浅层的神经网络推荐模型和多层的深度神经网络推荐模型。

浅层神经网络

主要是受到word2vec的启发,这种方法将item序列理解为句子,item为词,使用同word2vec的方法可以学习得到高维空间中item的表示,从而item embedding的距离可以表示为他们的关系,基于此做推荐。其他的变形包括加入item feature或其他相关feature做embedding,或加入attention机制,都是自然语言中常见的几种方法。

深层神经网络

深层神经网络主要从2016年开始,主要包括基于RNN的,基于DNN的和基于CNN的。

  • 基于RNN: 更好得捕捉序列关系

    最基础的是GRU4REC模型,输入item序列,输出item的概率分布(同最基础的语言模型)。为提升GRU4REC的效果,Tan提出数据增广和embedding dropout两种策略训练GRU4REC模型,同时提出一个generalised distillation framework;Quadrana提出层次RNN结构来捕捉跨session 的信息;Tim Donkers提出结合用户属性的user-based GRU来产生用户个性化推荐。

    除了基于GRU4REC的推荐模型,还有基于RNN的一些变形模型,如Dynamic REcurrent bAsket Model (DREAM),通过每个时刻的隐状态学习用户变化的表示。

    其他的一些进展包括:1.RNN结合变分推断解决稀疏数据的不确定性和降低模型规模[2,3];2.结合更丰富的信息如上下文信息,位置,item feature等来提升模型的效果[4,5,6];3.加入attention机制7;4.结合传统的FM或KNN等模型

  • 基于DNN:常用于当一个session中无序列关系时,如一个购物车中的物品。

  • 基于CNN:同样适用于无严格序列关系的session数据,并且具有更强的局部特征的捕捉能力,可以跨区域捕捉RNN常常捕捉不到的联合依赖关系。

参考文献

  1. A Survey on Session-based Recommender Systems

  2. Recurrent Latent Variable Networks for Session-Based
    Recommendation

  3. A Variational Recurrent Neural Network for Session-Based
    Recommendations using Bayesian Personalized Ranking
  4. Latent Cross: Making Use of Context in
    Recurrent Recommender Systems
  5. Parallel Recurrent Neural Network Architectures for Feature-rich Session-based Recommendations
  6. Incorporating Dwell Time in Session-Based Recommendations with Recurrent Neural Networks
  7. Interacting Attention-gated Recurrent Networks for Recommendation