推荐系统遇上深度学习Deep Learning深度学习-神经网络

推荐系统遇上深度学习(四十七)-TEM:基于树模型构建可解释性推

2019-05-30  本文已影响567人  文哥的学习日记

本文论文的题目为:《TEM: Tree-enhanced Embedding Model for Explainable Recommendation》

论文下载地址为:https://www.comp.nus.edu.sg/~xiangnan/papers/www18-tem.pdf

推荐系统的方法,无论是协同过滤还是一些embedding-based方法,在可解释性上都有一定的欠缺,而本文提出了一种基于GBDT的可解释的推荐模型,我们一起来看一下是怎么做的。

1、背景

现有的推荐方法,如协同过滤和embedding-based的方法,在可解释性上都有一定的欠缺。对于协同过滤模型来说,推荐的理由无非就是你的朋友也喜欢这个或者这个物品和你之前喜欢的某某物品相似;对于一些embedding-based的方法,最简单的如矩阵分解方法,这种方法只能得到一个简单的评分,但感觉无法解释评分的含义,再比如因子分解机FM、NFM、Wide & Deep和DCN等等,这些方法可以充分利用辅助信息side-information,来捕捉一些特征之间的交叉关系,但这种关系一旦使用了神经网络,就感觉是一个黑盒,推荐结果也是相当难以解释的(其实我感觉FM还是具有一定的解释性的)。

因此,本文想要实现一种推荐方法,同时满足以下两个要求:结果准确性accurate推荐结果可解释性explainable

对于准确性,我们希望能够得到与embedding-based的方法相近的性能,对于可解释性,举个简单的例子,比如我们给用户推荐了一个玫瑰金的iphone7,给出的推荐理由类似于20-25岁,收入过万的女性都喜欢粉丝的iphone,而非简单的xxx购买了或者是与你浏览过的xxx物品相似。也就是说,能够准确的识别起关键作用的交叉特征。

那么如何实现上面的两个目标呢?文章提出了Tree-enhanced Embedding Method (TEM)模型。下面我们一起来看一下是如何做的。

2、模型介绍

TEM模型的整体架构如下:

在TEM模型中,对于给定的用户u和物品i,打分结果由下面的公式确定:

其中,x=[xu,xi]分别是用户和物品的特征向量,主要包含一些辅助信息side-information。公式中最重要的是f(u,i,x),我们一步步展开这一部分如何得到。

2.1 构建交叉特征

为了让交叉特征具有良好的可解释性,工业界一种广泛的做法是使用如逻辑回归这样的模型。如果让特征两两的交叉,随着特征增多,计算复杂度呈指数级增长。如果使用人工去选择一些比较靠谱的交叉特征,这需要比较丰富的领域知识,需要对业务特别熟悉。所以像逻辑回归这样的方法同样面临着一些问题。

因此本文提出使用GBDT来进行特征的交叉,GBDT包含一系列的决策树Q={Q1,Q2,...,QS},对于每一颗决策树,都会得到一个one-hot的向量,最终拼接起来就得到一个multi-hot向量。如下图中,有两棵决策树,假设特征x经过两棵树之后分别落在了第一颗树的第三个叶子结点和第二颗树的第二个叶子结点,那么得到的向量如下为[0,0,1,0,0,0,1,0]:

这里我们记最终得到的multi-hot向量为q:

2.2 通过交叉特征进行预测

这里,你是不是想到了我们之间介绍过的FaceBook提出的GBDT+LR的推荐方法。作者这里指出了该模型的一点不足。尽管GBDT+LR的方法可以捕捉一些重要的特征,但是模型一但确定,交叉特征的权重也就确定了,这在一定程度上对模型的准确性是有一定限制的。

论文这里举了一个简单的例子,假设有两个正样本(u,i,x)和(u',i',x'),如果x和x'相同的话,那么GBDT+LR方法得到的top的交叉特征是相同的,也就是说,向u推荐i和向u'推荐i'的理由也是相同的,但实际中可能并不是这样的。因此,对于不同的用户-物品对,不同的交叉特征的权重应该是不同的。计算不同的权重,我们自然而然想到了attention机制。没错,这里也使用attention机制。

首先对于GBDT得到的multi-hot特征q,其中为1的位置数量是确定的,即GBDT中决策树的个数,假设为t。这里对GBDT中所有的叶子结点赋予一个对应的embedding向量,那么我们一共可以得到t个embedding向量。假设得到的embedding向量集合为V={vl}(ql<>0),而用户和物品对应的embedding分别为pu和qi。那么交叉特征的权重计算公式图示和公式如下:

在得到权重之后,作者这里提出了两种方式,一种是avg-pooling,一种是max-pooling,公式分别如下:

采用不同的pooling方式,对于结果的解释是不同的,咱们在后面详细讨论。

因此最终的预测公式表示如下:

2.3 模型学习

这里使用logloss来指导模型学习:

值得一提的是,TEM模型包含两个级联的模型,这两个模型使用的是同样的logloss。在实际中,我们同样先训练GBDT,在训练好GBDT之后,通过其得到每个样本的交叉特征,再通过batch梯度下降Adagrad来优化剩余部分的模型参数。而每个batch中有正样本和负采样得到的一批负样本。

3、可解释性分析

前面在得到attention的权重后,使用两种不同的方式对embedding进行处理。一种是avg-pooling,一种是max-pooling,我们分别记作TEM-avg和TEM-max。这两种方式对结果的解释是不同的。

对于TEM-avg,我们可以直接使用得到的权重wuil来得到重要性最高的几个交叉特征。对于TEM-max,得到的最终向量的每一维可能来自不同的特征,假设embedding是K维,那么max-pooling后的向量最多可能来自k个不同的embedding向量,如下图所示:

上图中,每一行是乘上权重后的embedding,即wuil * vl,共有14个交叉特征,此时选择重要程度最高的特征,就不能单单看权重wuil了,还要看其对max-pooling后结果的贡献。

4、实验分析

这里作者提出了三个问题

1)TEM模型可以达到与目前state-of-the-art的推荐模型相同的预测效果么?
2)TEM模型得到的推荐结果能够方便地通过交叉特征和attention来进行解释么?
3)超参数的设定是如何影响TEM模型的呢?

4.1 性能分析

作者在两个数据集上进行了对比试验,结果如下:

可以看到TEM-max的效果最好,其次是TEM-avg。

4.2 可解释性案例分析

其实我在看论文的时候一直有个疑问,模型最后得到预测输出的时候,还接了一层可以说是全连接的神经网络,那么是否是可以直接用attention得到的权重wuil来对结果进行解释。比如使用TEM-avg的时候,第l个交叉特征对模型预测结果贡献的最终结果是wuil * rT * vl,而并非wuil,二者需要具有一定的一致性,我们才可以近似用wuil来代表特征的重要程度。作者通过case studay验证了这一点:

而对于TEM-max方式,其预测性能是最好的,但是作者这里没有给出相应的case study。感觉TEM-max可以通过交叉特征对max-pooling结果的贡献来确定其重要性,因为最后再乘上 rT,这个并不影响max-pooling结果的每一维来自于哪一个交叉特征。

因为 rT * max-pooling(wuil * vl) = sum(max-pooling(wuil * multiply(r ,vl))

可能我说的比较晦涩,通过下面可以理解下,假设我们把 r放在max-pooling之前,先和vl对位相乘,并不改变最终结果的每一维来自哪一个交叉特征对应的embedding:

而两边最终结果也验证了我们公式的正确性。

4.3 超参数学习

这里主要验证了下树的数量S和embedding的size对模型结果的影响,结果如下:

关注小编的公众号,后台回复“进群”,一起来交流学习吧!

上一篇下一篇

猜你喜欢

热点阅读