摘要:用户时序行为建模在推荐系统中是一个很重要,同时富有挑战性的任务。时序行为建模为模型求参增加了困难,同时时序数据建模意味着更大的数据量需求。本文作者提出了一个两层次的深度学习框架,首先将新闻文本表示成doc2vec词向量,然后利用这些doc2vec词向量以及用户阅读历史生成用户画像。使用用户画像以及和用户对应的大量正样本、负样本训练模型。训练好的模型在真实数据集上进行了实验,与一些优秀的baseline进行比较,发现推荐的效果好于几个baseline。同时作者还对哪些点击量比较少的用户进行了推荐,作者发现,提出的模型对于解决item冷启动问题也有很好的效果。
1、引言
推荐系统在新闻系统、电子商务网站、在线电影网站中有着很大的作用。在推荐系统中,有两种主流的推荐方法,一个是协同过滤推荐,这种推荐方法使用用户与物品之间的交互记录来预测用户最有可能喜欢的物品。还有一种方法是基于内容的推荐,这种方法通过计算用户属性与物品属性之间的相似性来为用户推荐物品。在众多协同过滤方法中,矩阵分解是较为流行的方法。矩阵分解方法将用户和物品映射到一个潜在特征空间中,使用潜在特征向量表示用户和物品。因此,用户向量和物品向量的内积就可以表示用户与物品之间的交互关系(这里的交互关系一般是指用户对物品的打分)。
为了能够提供高质量的推荐,协同过滤推荐首先需要大量用户与物品的交互信息。对于一个刚刚建立的新闻网站,用户和新闻有很少的交互信息,这时候使用协同过滤方法进行推荐达不到好的效果。这也就是冷启动问题。但实践证明,基于内容的推荐能够很好地解决冷启动问题。
在新闻推荐领域,一个比较重要的问题是如何能捕捉到用户的兴趣变化。而创建一个能够表示用户长期兴趣和短期兴趣的用户画像是一个解决办法。
最近,在文献[5]的作者提出了神经协同过滤框架。他们通过使用深度神经网络来学习用户和物品之间复杂的交互关系。
在本文中,作者把推荐问题转化为一个二分类问题。通过使用用户与新闻之间的交互关系以及新闻的内容来捕捉用户与新闻之间的相似性。本文中,作者没有使用用户的显性信息(如姓名、年龄等),只是使用了一些隐性信息,比如是否阅读了某条新闻。在阅读的过程中,作者认为,越是用户最近阅读的新闻越是能够代表用户的短期兴趣,所以用户的阅读的新闻序列的先后隐含着用户的兴趣变化。为了从用户的阅读序列中挖掘出用户兴趣,作者采用了几下几个步骤:
1)首先,将每一个新闻文本使用doc2vec向量表示
2)然后,为每一个用户选择确定数目的新闻阅读记录
3)将用户阅读记录中的新闻的doc2vec向量进行结合,得到用户画像。在结合的时候,考虑到新闻的时序关系。

之后,为了捕捉到用户和新闻之间的相似性,需要将用户和新闻映射到同一个潜在空间中。本文的作者采用了DSSM(Deep Structured Semantic Model)框架。DSSM框架首先提出来时是为了解决web文本排序问题。在本文中,作者对其进行改进来解决新闻推荐问题。
本文的贡献如下:
1)使用doc2vec向量表示新闻文本,从而可以将新闻向量进行结合得到用户画像,新闻向量的时序关系隐含着用户的兴趣变化。
2)利用深度神经网络框架进行新闻推荐,不仅使用用户与新闻的交互信息,而且使用新闻文本内容,来对用户和新闻的隐特征进行建模
3)作者使用实验证明了此模型用于新闻推荐的有效性。同时作者也通过实验证明,此模型对于那些拥有较少阅读记录的用户也能达到较好的推荐效果。
4)此模型也能够很好地解决item冷启动问题。
2、相关工作
A 传统推荐方法
主要分为系统过滤推荐和基于内容的推荐。其中协同过滤推荐又可以分为基于模型的协同过滤和基于近邻的协同过滤、混合的协同过滤等
B 基于神经网络的新闻推荐
这里的突出代表是NCF神经协同过滤,使用多层感知机来学习用户和item之间的复杂交互关系
C user-item projection
将用户和item投影到同一个向量空间,然后根据用户和item的相似性为用户推荐item。DSSM模型就是能够实现这一投影的模型,只是DSSM模型中计算的是搜索词与文本之间的相似性。
3、模型框架
首先介绍用户画像,然后介绍DSSM模型,最后介绍模型的训练准则。图1介绍了模型框架。
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News RecommendationA 用户画像
首先定义一些标识来更好的理解用户画像的产生过程。
使用R来表示用户阅读历史中的新闻数目。用户阅读历史中每条新闻的doc2vec向量使用rhr_h来表示,其中1<=h<=R1<=h<=R。每一个doc2vec向量的长度是300。用户画像使用U来表示。
之前也说过,将用户阅读历史中的新闻结合起来得到用户画像,用户兴趣变化体现在新闻的时序信息中,所以接下来作者讨论了3中不同的新闻结合方式。
1)平均结合
U=1Rh=1RrhU=\frac{1}{R}\sum_{h=1}^Rr_h
这种结合方式实际上并没有考虑用户阅读历史中新闻的时序信息。
2)打折(discounting)
U=1Rh=1Rrh2RhU=\frac{1}{R}\sum_{h=1}^R\frac{r_h}{2^{R-h}}
这种方式下,越是用户最近阅读的新闻,越是保留了更多的信息。3
3)指数衰减
U=1Rh=1RrheRhU=\frac{1}{R}\sum_{h=1}^R\frac{r_h}{e^{R-h}}
这种方式下,新闻信息衰减地更快
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation
由上图可以看出两种两种衰减地速度区别。
B .Deep Structured Semantic Model
DSSM模型首先是为了解决排序问题而提出的。原始的DSSM模型由两部分组成。模型结构如下:
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation

图中最左侧的Q代表的是搜索词条query,D代表的是文档,每一个input经过多层神经网络,转化成低于输入维度的向量。最下面的term vector是将query和document做词袋模型展开,形成一个很长的稀疏向量,作为模型的输入。这里,因为英文单词量很大,这样做词袋模型的话,维度太大,输入数据很稀疏,因为为了解决这个问题,用了一个hash trick来解决这个问题,叫做WordHashing。就是上图的倒数第二层。词hash其实就是把一个英文单词,利用n-grams把单词切开,比如把good用tri-gram切,切完就是(#go,goo,ood,od#),然后按切好的tri-gram对整个query或者doc做词袋模型。这样就能显著降低输入特征的维度。就和中文一样,中文其实字的数量并不多,可能几万个字就能覆盖很多的场景了,但是一旦扩展的词的量就会很大。
C.Modified DSSM
在本文中,作者对DSSM模型在两个方面进行了改进
1)使用doc2vec向量表示输入向量,而不是使用letter-tri-gram
2)左侧输入的是用户阅读历史R.将用户阅读历史进行结合生成用户画像
3)右侧输入部分由1个正例(被用户阅读过的新闻)n个负例组成。这n个负例是随机采样得到的。
D. learning
在训练过程中,作者的目标是最小化如下函数:
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation
其中:
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation
代表给定一个用户,一个item为正例的概率。
4、实验
实验主要是回答以下几个问题:
1)不同的用户画像方法对与推荐效果提升的作用如何?
2)作者提出的模型与现有的优秀的模型相比如何?
3)作者提出的模型在为那些只有少量阅读历史的用户推荐时效果如何?
4)提出的模型在推荐那些从未被任何用户读过的新闻时效果如何?(也就是对与item冷启动效果如何?)
A. 实验设置
使用CLEF NewsREEL 2017提供的新闻数据集。
抽取出用户的阅读序列。对于每一篇新闻,将新闻标题和新闻正文进行拼接,然后使用gensim学习doc2vec向量。向量的维度设置为300。在给定的数据集中,几乎77%的用户阅读的新闻少于3条。所以作者选择那些阅读量在[10,15]之间的用户进行训练和测试。
在测试模型为那些只有少量阅读的用户推荐效果如何时,作者选择那些历史阅读量在[2,4]之间的用户进行测试。
1)评价指标
本文采用留一法进行测试。将用户最新阅读的一条新闻作为测试集中的正例,将其余的作为训练集。测试集中的负例则是随机选取100条用户没有阅读过的新闻。推荐时推荐K个新闻,也就是topK推荐。
使用的评价指标有两个,一个时HR(Hit Ratio),其实就是相当于召回率。这一个指标是用来评价测试集正例在推荐列表中出现的概率。另一个指标时NDCG,归一化折损累计增益,如果测试正例出现在推荐列表中靠前的位置,则赋予较高的值。关于NDCG的理解可以参考博客
2)参数设置
模型使用keras实现。就像前面所说,对于每一个新闻阅读量在[10,15]的用户,选择用户最新阅读的新闻作为测试集,其余的作为训练集,接下来按照如下步骤设置标签:
a)标记用户的阅读历史为R
b)对于每一个用户,使用阅读历史中R条新闻进行用户画像。留出最新阅读的1条新闻做测试,其余的新闻正例在训练时使用。
c)对于用户的每一个正例,另外再随机选择n个负例。(负例是指那些用户没有点击的新闻)。一个正例和n个负例同时作为模型右侧的输入。在本文中,n的值设定为4.

对于设定好标签的数据集,按照4:1的比例划分为训练集和验证集。调参时使用交叉验证方法。损失函数为:推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation
B.性能比较
表一显示了不同的用户画像方法对推荐效果的影响。
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation
其中discounting方法效果最好,可能是因为衰减率更接近用户真实的兴趣变化。

图三和图四显示了推荐列表的长度从1到10变化时,评价指标HR和NDCG的变化。(这里本文的模型选择的是使用discounting进行用户画像的模型)从图中可以清晰地看出,本文地模型,明显由于其他相比较地模型。原因可能是本文不见考虑了用户地一般兴趣,还考虑到了用户地兴趣变化,这一点是其他模型没有考虑的。
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation
在item冷启动推荐上,在选择的数据集中,有74个用户阅读了哪些首次出现的新闻,也就是在之前的阅读记录中这些新闻没有出现过。对于这74个用户进行item冷启动测试,在top10推荐中,[email protected]大约是33%。也就是模型能够适应冷启动问题。

对于那些阅读量在[2,4]之间的用户,[email protected]大约为47%,模型对于这种场景的推荐也有不错的效果。图5、图6中cold user指的就是当用户点击量很少时的推荐。当然这并不是很严谨的用户冷启动推荐,这里作者不严谨地使用了此名词。
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation
这两种推荐情况在NDCG指标下效果如图6所示:
推荐系统论文阅读:User Profiling based Deep Neural Network for Temporal News Recommendation

相关文章: