TEM: Tree-enhanced Embedding Model for Explainable Recommendation

欢迎关注个人微信公众号:大大大碗面,不定期论文解读与开发技术分享
Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

1. 作者介绍

本篇文章发表在WWW 2018上,第一作者是一名新加坡国立大学(NUS)的在读博士,第二作者何向南则是他的导师,同样毕业于新加坡国立大学,曾是新加坡国立大学媒体搜索实验室的博士后研究员,主要研究方法:推荐系统、信息检索、多媒体和自然语言处理。他在SIGIR、WWW、CIKM、IJCAI和AAAI等以及包括TKDE等在内的顶级期刊上发表了超过20篇出版物。如今,他已加入中国科学技术大学(USTC)并担任教授。

2. 前言

在真实的推荐场景中,用户信息(用户画像)往往由一个身份标识(ID:识别哪个特定用户)和一些辅助信息组成(年龄、性别、收入水平等);类似地,一个项目信息(项目画像)也通常包含一个标识(ID:标识哪个特定的项目)和一些属性(类别、标签、价格)。

协同过滤(CF)是建立个性化推荐系统最普遍的技术,它是利用用户对项目的交互矩阵(购买记录、评论、打分)来进行建模,给用户推荐潜在喜欢的项目。可以看出CF仅仅使用了身份信息作用身份信息即用户ID和项目ID,而放弃了其他的辅助信息。因此,可以看出使用CF可以作为推荐的通用的框架,并且这并不需要任何领域的知识。但是它也有缺点它缺乏对推荐的必要推理或者解释(推荐结果的可解释性)。协同过滤的解释机制仅仅因为要么因为您的朋友也喜欢它(即基于用户的CF)或者该项目与你以前喜欢的项目相似(基于项目的CF),这种机制过于粗略,没有充分的说服性(解释性)。

在文章中作者希望能够得到更具体的解释机制,而不是仅仅通过相似性。举个例子:在模型输出的推荐结果中,有我们向某个用户推荐了苹果7玫瑰金版,这是因为我们发现月收入超过5000美元的20-25岁女性通常更喜欢粉色的苹果产品。

为了能够达到上面的效果,我们所使用的推荐模型就需要达到以下两点效果:

  • 推荐模型能够从用户和项目的丰富辅助信息中发现有效的交叉特征(提升推荐性能);
  • 推荐模型能够可以以可解释的方式估计用户-项目匹配分数(提升推荐的解释性);

但是,现有的推荐方法都不能同时满足以上两个条件。

我们之前的论文解读中经常提到的矩阵分解模型(MF),它是推荐系统中最流行的CF方法,它具有很好的性能;而取得良好的性能的原因是:它使用了嵌入的方法(构建了用户和项目的隐空间特征向量),这样在从稀疏的用户-项目关系中进行推广时具有很强大的能力。同时,现在也出现了许多的变体来结合辅助信息。例如:因子分解机(Factorization Machine)、NFM、Wide&Deep,Deep Crossing。这些模型拥有很好的性能,同时可以通过优化方法加速训练,所以在工业中具有广泛的应用。但是作者认为在这些模型中交叉特征只是在学习的过程中以相当隐藏方法被捕获(in a rather implicit
way );更重要的是,这样的交叉特征不能被明确地呈现出来。

所以,作者希望提出这样的一个模型,它既有很高的准确性又有可解释性。具体来说,作者的目标有两个:

  • Accurate: achieve the same level or comparable performance as embeddingbased methods
  • Explainable: be transparent in generating a recommendation & can identify the key rules for a prediction

翻译成中文:

  • 期望所提出的方法与现有的基于嵌入的方法有相同的性能水平;
  • 通过解释,希望所提出的方法在生成推荐时是透明的,并且能够识别预测的关键交叉特征;

在论文中,作者提出了一种新的解决方法,称之为树增强嵌入方法,它将基于嵌入的方法和基于决策树的方法相结合。首先,在用户和项目的side information上建立一个梯度提升决策树,用来获取有效的交叉特征。然后将交叉特征输入进一个基于嵌入的模型。这是一个Attention网络,它根据当前的预测对交叉特征进行加权。也正是因为GBDT提取的显性交叉特征和易于解释的注意网络,整个预测过程是完全透明和可自我解释的。特别是,为了产生推荐的理由,我们只需要根据他们的注意力分数选择最具预测性的交叉特征。

3. Embedding-based Model

  • 矩阵分解

基于嵌入的模型是表示学习的典型例子,它的目的就是从原始的数据中学习特征表示并用于预测。矩阵分解就是一个简单高效的非神经网络的基于嵌入的协同过滤模型,它的预测函数可以表示为:

y^MF(u,i)=b0+bu+bi+puqi\hat{y}_{M F}(u, i)=b_{0}+b_{u}+b_{i}+\mathbf{p}_{u}^{\top} \mathrm{q}_{i}

  • 因子分解机

除了ID之外,用户和项目中蕴含丰富的的辅助信息,这些辅助信息可能包含用户对项目偏好的相关信号。特别地对于其中的分类变量,通常的做法是通过one-hot编码。用xux_uxix_i分别表示用户uu和项目ii的特征向量。为了预测yuiy_{ui},典型的解决方法是连接xux_uxix_i,即x=[xu,xi]Rnx=[x_u, x_i] \in \mathrm{R^n},然后输入进预测模型。

y^FM(x)=w0+t=1nwtxt+t=1nj=t+1nvtvjxtxj\hat{y}_{F M}(\mathbf{x})=w_{0}+\sum_{t=1}^{n} w_{t} x_{t}+\sum_{t=1}^{n} \sum_{j=t+1}^{n} \mathbf{v}_{t}^{\top} \mathbf{v}_{j} \cdot x_{t} x_{j}
可以看到FM将每个特征与嵌入相关联,通过嵌入内积来模拟每两个(非零)特征的交互。如果仅适用用户ID和项目ID作为特征,那么FM则变为MF。

  • 神经网络方法

随着深度学习的发展,神经网络方法也被用来建立基于嵌入的模型。例如Wide&Deep、Deep&Crossing,通过在非零特征嵌入的拼接之上放置多层感知器来学习特征之间的交互。

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

4. Tree-based Model

和表示学习相反的是,基于树的模型不学习用于预测的特征。它们是通过从数据中学习决策规则来进行预测。我们将树模型的结构表示为:Q={V,E}Q=\{\mathcal{V}, \mathcal{E}\}V\mathcal{V}E\mathcal{E}分别表示树的节点和边。树的节点有三种类型:根节点v0\mathcal{v_0}、内部节点(决策节点)VT\boldsymbol{V}_{T}和叶子节点VL\boldsymbol{V}_{L}。下面的图表示一个有两个决策树的决策模型。

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

在图中,节点vtv_{t}将特征进行分割为两边。对于连续数字特征(例如时间),它是选择一个阈值aja_{j}将特征分为两部分[xt<aj]\left[x_{t}<a_{j}\right][xtaj]\left[x_{t} \geq a_{j}\right],而对于二值特征(one-hot编码之后的类别特征),它将样本分成[xt=aj]\left[x_{t}=a_{j}\right][xtaj]\left[x_{t} \neq a_{j}\right]两部分。

从根节点到叶子节点的路径就形成了决策规则,这个可以看成是一种交叉规则。举例子,在上图中叶子节点vL2v_{L_{2}}表示[x0<a0]&[x3a3]&[x2a2]\left[x_{0}<a_{0}\right] \&\left[x_{3} \geq a_{3}\right] \&\left[x_{2} \neq a_{2}\right],每一个叶子节点vLiv_{L_{i}}都有一个权值wiw_i,表示根据响应决策规则得到的预测值。给定一个特征向量X\mathbf{X},基于树的模型首先将特征向量映射到叶子节点上,然后将叶子节点的值作为预测:

y^DT(x)=wQ(x)\hat{y}_{D T}(\mathbf{x})=w_{Q(\mathbf{x})}

我们可以看到,在这样的预测机制下,叶节点可以被视为预测中最突出的交叉特征。因此,基于树的模型本质上是可自我解释的。由于一棵树可能不足以表达数据中的复杂模式,因此可以构建一个森林。例如梯度增强决策树(GBDT),通过利用多个树的结果相加来进行预测:

y^GBDT(x)=s=1Sy^DTs(x)\hat{y}_{G B D T}(\mathbf{x})=\sum_{s=1}^{S} \hat{y}_{D T_{s}}(\mathbf{x})

其中SS表示树的数量,y^DTs\hat{y}_{D T_{s}}表示第ss棵树的预测。我们可以看到模型是使用DBDT学习到的SS个决策规则来预测给定特征向量的目标值。

5. Tree-Enhanced Embedding Method

整个模型的系统框架如下:

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

5.1 预测模型

作者所提出的模型的预测函数如下:对于给定的用户uu和项目ii,他们的特征向量表示为[xu,xi]=xRn\left[\mathbf{x}_{u}, \mathbf{x}_{i}\right]=\mathbf{x} \in \mathbb{R}^{n},将其输入进TEM中:

y^TEM(u,i,x)=b0+t=1nbtxt+fΘ(u,i,x)\hat{y}_{T E M}(u, i, \mathbf{x})=b_{0}+\sum_{t=1}^{n} b_{t} x_{t}+f_{\Theta}(u, i, \mathbf{x})

公式的前面两项类似于FM,后面的fΘ(u,i,x)f_{\Theta}(u, i, \mathbf{x})则是TEM对交叉特征的建模。

5.1.1 构造交叉特征

在构造交叉特征这一步中,与以往特征工程不同的是,作者使用GBDT来构造特征。传统的特征工程需要领域内的专家来进行构造,并且特征维度有可能很大。但是使用树模型可以自动生成各种交叉特征,因此作者使用GBDT来进行特征的选择,将树的叶子结点看做有用的交叉特征。然后将这些叶子节点用one-hot编码表示,多棵树的叶子节点拼接一起,就形成了multi-hot的vector,例如在基于树的模型章节中的GBDT的图中,假设样本最后落在第一课树的第2个叶子节点,落在第二棵树的第3个叶子节点上,那么最终的向量可以表示成[0,1,0,0,0,0,0,1],分别是[0,1,0,0,0][0,0,1]通过concatenation的得到。

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

5.1.2 利用交叉特征来进行预测

在Facebook 2014年的CTR预估的论文中,文中的作者也是使用GBDT来构造特征,然后将其直接feed进LR模型中,它的框架如下:

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

在本文中,作者指出,Facebook的这项工作并没有考虑到user-item对之间的不同,也就是说对于不同的user-item,这些交叉特征的权重应该是不同的。

为了保留模型的可解释性,作者利用Embedding和Attention机制来代替原本的全连接层。通过实验,作者指出,虽然这是一个浅层的模型,但是TEM通过引入Embedding和Attention仍然具有很好的建模能力。

  • Embed them into user-item latent space

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

Embedding是一种常用的表示技术,它有两点好处:

  1. 通常特征向量是维度很大的稀疏向量,使用Embedding可以在一定程度上减缓数据稀疏的问题;
  2. seamlessly integrate cross features with embedding-based CF;
  • Attention Network

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

作者使用两种方式来得到交叉特征的最终输出的Embedding,即avg和max pool:
{eavg(u,i,V)=1VvlVwuilvlemax(u,i,V)=maxpoolvlV(wuilvl)\left\{\begin{array}{l}{\mathbf{e}_{a v g}(u, i, V)=\frac{1}{|V|} \sum_{v_{l} \in V} w_{u i l} v_{l}} \\ {\mathbf{e}_{\max }(u, i, V)=\max _{-} p o o l_{v_{l} \in V}\left(w_{u i l} v_{l}\right)}\end{array}\right.
而其中对于(u,i)(u, i)的第ll个交叉特征的权重参数wuilw_{u i l},这是一个可训练的参数。但是如果直接训练的话,对于那些没有出现过的(u,i)(u,i),模型是无法估计的,同时参数空间也是一个问题。所以,作者退一步将wuilw_{u i l}看作独立函数,具体学习过程如下:

{wuil=hReLU(W([puqi,vl])+b)wuil=exp(wuil)(u,i,x)Oexp(wuil)\left\{\begin{aligned} w_{u i l}^{\prime} &=\mathbf{h}^{\top} \operatorname{Re} L U\left(\mathbf{W}\left(\left[\mathbf{p}_{u} \odot \mathbf{q}_{i}, \mathbf{v}_{l}\right]\right)+\mathbf{b}\right) \\ w_{u i l} &=\frac{\exp \left(w_{u i l}^{\prime}\right)}{\sum_{(u, i, \mathbf{x}) \in O} \exp \left(w_{u i l}^{\prime}\right)} \end{aligned}\right.

这一部分的模型框架为:

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

5.2 Final Prediction

最终模型的预测函数如下:

y^TEM(u,i,x)=b0+t=1mbtxt+r1(puqi)+r2e(u,i,V)\hat{y}_{T E M}(u, i, \mathbf{x})=b_{0}+\sum_{t=1}^{m} b_{t} x_{t}+\mathbf{r}_{1}^{\top}\left(\mathbf{p}_{u} \odot \mathbf{q}_{i}\right)+\mathbf{r}_{2}^{\top} \mathbf{e}(u, i, \mathcal{V})
其中r1Rk\mathbf{r}_{1} \in \mathbb{R}^{k}r2Rk\mathbf{r}_{2} \in \mathbb{R}^{k}是最后LR层的权重参数。

5.3 损失函数

文中作者是将推荐问题看成一个二分类的问题,使用pointwise的log loss形式的损失函数。损失函数定义如下:

L=(u,i,x)Oyuilogσ(y^ui)(1yui)log(1σ(y^ui))\mathcal{L}=\sum_{(u, i, \mathbf{x}) \in O}-y_{u i} \log \sigma\left(\hat{y}_{u i}\right)-\left(1-y_{u i}\right) \log \left(1-\sigma\left(\hat{y}_{u i}\right)\right)

当然也可以使用Pointwise regression loss或者Pairwise Ranking loss。在训练过程中,采用分布训练的方式,先训练一个GBDT模型,然后利用得到的交叉特征来训练接下来的预测模型。

6. 实验部分

  • RQ1: 与最先进的推荐方法相比,我们的TEM能达到相当的准确度吗?

作者对比了常见的推荐模型,通过表格可以看出,作者所提出的模型可以打到相当的推荐准确度。

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

  • RQ2: 能通过使用交叉特征和注意力网络使推荐结果易于理解吗?

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

  • RQ3: 不同的超参数设置(例如树的数量和嵌入大小)如何影响TEM?

Tree-enhanced Embedding Model for Explainable Recommendation阅读笔记

相关文章: