查看原文
其他

评论文本信息对推荐真的有用吗?SIGIR20论文告诉你答案

张小磊 机器学习与推荐算法 2022-04-27

目录

  • 前言
  • 结论
  • 实验设置
  • 对比方法
  • 实验结果
  • 讨论
  • 写在最后

前言

前段时间分享了一篇《基于评论文本的深度推荐系统总结》的文章,该文系统的总结了近年来利用深度学习技术结合评论文本信息来提高传统推荐性能的方法。根据对评论信息的处理不同,主要分为了基于Document的建模方法和基于Review的建模方法。并且将该类问题梳理成以下流程框架,即通过编码层来从用户/商品评论中抽取用户/商品的有效表示,进而将两者进行融合,最后通过评分预测层来产生预测评分。最后通过大量的实验表明所提出的深度学习方法的合理性与有效性。
然而,评论文本信息对于推荐系统的性能提升真的是有效且合理的吗?是实验设置过程中的取巧还是深度学习框架本身带来的性能提升,这让我们产生怀疑。今年SIGIR2020的一篇文章《How Useful are Reviews for Recommendation? A Critical Review and Potential Improvements》从实验的角度带我们直观的回答了以上问题。

结论

通过调研近年来利用评论信息辅助推荐的工作发现,通常,这些论文认为,既然评论“解释”了用户的评分,那么它们就应该有助于推断预测的评分或是否购买商品。通过研究发现,利用评论信息的方案主要是两种方式,一种是简单的正则化技术,另一种是神经网络方法。通过对实验进行复现,揭示了一些与报道结果中的差异现象。首先,该文尝试进行全面的分析以解决这些歧义,进一步的调查讨论有关用户评论的“重要性”等相关问题。通过这项工作,旨在评估这一领域的发展方向,并鼓励进行有力的实证评估。作者通过设置一系列的实验说明了一些问题,为了一睹为快,所以先给出结论:
  • 在数据相对稀疏的数据集上,仅利用偏置的方法(bias-only)和矩阵分解(MF)的MSE相差不大。
  • 最近发表的方法(DeepCoNN、NARRE、MPCN等)在大部分数据集上都无法胜过简单的矩阵分解(MF),这与文献中的预期形成鲜明对比。
  • 最近发表的基于神经网络的方法(例如NARRE和DeepCoNN ++)能带来效果提升的原因更多的是引入了用户和项目偏差项,而并不是其网络结构本身。
  • 与原始设置相比,当隐藏掉评论文本信息时,令人惊讶的是,基于深度学习的方法在性能上产生的变化很小。

实验设置

接下来介绍一下该论文中实验相关的细节,包括对于数据集的选择、文本的预处理以及实现的细节说明。
  • 数据集
对于数据集的选择,本文利用了Amazon评论数据中的六类数据(Clothing、Toys、Video、Pet、Baby和Instant Video)和BeerAdvocate数据集。这些数据集中代表着不同的稀疏程度,其中Amazon数据集最稀疏,BeerAdvocate数据集最稠密。并将数据集按照8:1:1的比例划分为训练集/验证集/测试集,其中训练集用来训练模型,验证集用来调整模型超参数,测试集用来测试模型性能。
另外,根据用户-项目交互数量的不同分为了0-core子集和5-core子集。0-core子集表示用户对于项目的交互至少为0个,也即包含冷启动用户;5-core子集表示用户对于项目的交互至少为5个。显然,0-core子数据集的难度更高。
  • 文本预处理
按照NARRE论文中的设置,维护了一个50K的常用词的词汇表,不删除停用词。为了提高性能,我们使用Gensim来训练64维的Word2vec向量。为了遵循相应方法的原始实现方式,对于DeepCoNN,我们将用户/项目文档的长度限制/填充为1000个tokens,对于其他方法,我们将每个评论的长度限制/填充为前2个百分位数, 和固定评论数的操作类似。请注意,训练期间,所有测试和验证集的评论均已删除。
  • 实现细节
该论文从网上找到对比模型的实现,同时自己也实现了一遍,并从两者的实验结果中挑选最好的结果作为最终结果。另外,为了实验的公平性,在所有方法中进行参数选择,隐特征的维度在[1、4、8、25、50]中搜索,L2正则项在[]中搜索,dropout在[0.2、0.4、0.6、0.8]中搜索。

对比方法

为了评估推荐中评论信息的效用,在这项工作中,我们考虑了不同类型的代表性方法。这些方法的范围从传统的MF方法到简单的基于评论的正则化方法,到最后四种“最新”的利用深度学习来处理评论的推荐方法。现在,我们列出并简要讨论我们在实验中使用的方法(按发布日期的时间顺序):
  • Bias only:
假定用户和项目是独立的,是一种认为没有相互交互的简单基线方法。形式上,我们学习标量的用户和项目偏置,用户偏置 β 和项目偏置 β 以及全局偏差 。评分预测公式为:ββ
  • Matrix Factorization(MF):
经典的矩阵分解模型,不多说。
  • Hidden Factors and Topics(HFT):
HFT在传统的MF基础上,增加了评论正则项,该正则项使用LDA对语料库进行建模。
  • Deep Co-operative Neural Network(DeepCoNN):
该方法是第一个应用神经网络来处理评论信息的推荐方法。该模型通过CNN来对用户/项目评论进行建模。该论文中又提出个DeepCoNN++方法来引入用户和项目的偏置项。
  • Neural Matrix Factorization(NeuMF):
通过利用神经网络来建模用户-项目的交互信息,以此来提升传统的矩阵分解性能。该文中把该方法当作较强的非评论方法的baseline。
  • TransNets:
该方法除了使用用户u和项目i的评论文档信息提取潜在特征外,还使用当前评论信息进行正则化。
  • Neural Attentive Rating Regression(NARRE):
该方法可以看作在DeepCoNN的基础上增加了Attention技术来学习特征表示。
  • Multi-Pointer Co-Attention Networks for Recommendation(MPCN):
基于与NARRE相同的直觉来引入深层架构,即并非每个评论都同样重要,并尝试动态地推断出此重要性。与NARRE的注意力机制不同,MPCN提出了一种基于review-by-review的指针学习方案,以推断出评论的重要性。

实验结果

接下来将通过实验结果来验证上述结论。
  • 不同算法在不同数据集上的性能表现
从以下表格中发现,1)bias-only的方法在0-core数据集上要好于MF;2)简单的正则化方法HFT要优于复杂的神经网络的方法;3)带“++”版本的性能要比他们的原始版本要好,这也说明性能的提升来自于用户和项目的bais。
  • 随着稀疏度的不同的性能表现
随着稀疏程度越来越小,即用户评论数越来越多,大部分算法的性能也逐渐得到提高。其中随着稠密度的增加,HFT方法相对来说变得更差,这也说明了基于特征的方法的有效性。
  • 什么时候评论有用?
该实验结果反应了评论信息对于什么程度的项目稀疏度有用。我们根据训练集的出现次数对项目进行分组,并比较不同方法与bias-only的方法相比来观察MSE的改善(越高越好)。正如我们所观察到的,基于文本的方法在较冷的项目(x轴的左侧)上的差异最大。很明显,HFT在0-core数据集上的性能优于其他基于特征提取的方法。可见,基于正则化的评论文本推荐方法对于冷启动问题更有效。
  • 评论到底有多大用?
为了衡量评论的重要性,我们提出了一个简单的实验,我们随机将数据集中x%的评论替换为空/空字符串。在此修改后的数据集上,我们根据不同的x来训练所有方法。在下图中,我们观察到仅依赖于评论的方法诸如DeepCoNN和MPCN之类的方法会在我们随机删除评论时急剧退化。另一方面,诸如DeepCoNN ++和NARRE之类的方法往往没有受到影响。我们推测这种现象是由于DeepCoNN ++和NARRE中的用户和项目的bias分量而产生的。

讨论

  • 重现性和正确性
大多数论文中提到的官方结果都使用了较为稠密的数据集版本,在某种程度上违背了这一研究的原始动机(缓解冷启动和数据稀疏问题)。我们还注意到,尽管更改了数据预处理策略,但许多论文都直接复制了竞争对手方法的结果。另一个问题是超参数搜索不完整,最近的所有论文都显示了基于MF的方法和基于评论的方法之间的巨大差距,但该论文的实验结果却不支持这一说法。
  • 过拟合
我们推测,在未处理的现有评论数据集上使用高度复杂的模型时,过拟合是主要障碍。通过实验也能发现这一点,DeepCoNN++相对于其他方法的提升是在稠密度增加的基础上(训练样本减少)实现的。
  • 评论用作正则项更好
在数据相对稀疏的情况下,我们认为评论更适合于对潜在特征进行正则化,而不是从中提取特征。我们的发现得到了以下事实的支持:像HFT这样的简单模型在较稀疏的物品上比DeepCoNN(++),NARRE和MPCN表现更好。需要强调的是,我们的假设仅在相对较稀疏的条件下成立,而随着数据密度的增加,诸如DeepCoNN++之类的方法表现得相对更好。

写在最后

通过分析结合评分和评论的推荐模型,我们得出结论,评论文本信息可能很重要,但是需要重新考虑当前的发展方向。其中所提到的文献结果表示的不一致以及不切实际的数据设置可能会阻碍总体进度。我们希望通过这项工作能够鼓励社区进行明智而详尽的实证评估。
最后,we need benchmark!

推荐阅读

[0].基于评论文本的深度推荐系统总结
[1].推荐系统之矩阵分解家族[2].社会化推荐浅谈[3].当推荐系统邂逅深度学习[4].推荐系统领域中那些巧妙运用的idea
喜欢的话点个在看吧👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存