用于文档上下文感知推荐的卷积矩阵分解
- 论文:Kim D H, Park C, Oh J, et al. Convolutional Matrix Factorization for Document Context-Aware Recommendation[C]. conference on recommender systems, 2016: 233-240.
- 实现代码:http://dm.postech.ac.kr/ConvMF 【协同过滤+文档建模】
用户对物品评价数据的稀疏性是影响推荐系统质量的主要因素之一。针对稀疏性问题,研究学者已经提出了几种建议,并考虑了辅助信息,提高了评级预测精度。特别是,当评价数据比较稀疏时,基于文档建模的方法context-aware通过额外使用文本数据(如评论、摘要或概要)来提高准确性。然而,由于词语袋模型bag-of-words固有的局限性,它们在有效利用文档的上下文信息方面存在困难,导致对文档的理解较浅。本文提出了一种新的上下文感知推荐模型——卷积矩阵因式分解(convmf),将卷积神经网络(CNN)与概率矩阵因式分解(PMF)相结合。因此,convmf捕获了文档的上下文信息,进一步提高了评级预测的准确性。对三个真实数据集的广泛评估表明,即使在评级数据非常稀疏的情况下,convmf仍显著优于最先进的推荐模型。这个方法还证明convmf成功地捕获了文档中单词的细微上下文差异。
1. 论文背景分析
电子商务服务中用户和物品数量的激增,增加了用户对物品评价数据的稀疏性。最后,这种稀疏性降低了传统协同过滤技术的等级预测精度。为了提高准确性,研究学者先后提出了几种建议,不仅考虑评级信息,还考虑辅助信息,如用户人口统计、社交网络和物品描述文档。最近,基于文档建模方法(如潜在dirichlet分配Latent Dirichlet Allocation, LDA和堆叠去噪自动编码器Stack Denoise Auto-Encoder, SDAE)的方法被提出额外利用物品描述文档(如评论、摘要或概要)。Wang等人提出了协同主题回归Collaborative Topic Regressio, CTR,将主题建模LDA和协同过滤结合在概率方法中, 提出了CTR的变体,并将LDA集成到协同过滤中,以分析具有不同集成方法的物品描述文档。最近,Wang等人提出了将SDAE整合到概率矩阵分解(PMF)中的协同深度学习(CDL),从而在评级预测准确性方面生成更准确的潜在模型。
然而,现有的集成模型并不能完全捕获文档信息。因为现有方法所依赖的词袋模型忽略了文档的上下文信息,如周围的单词和单词顺序。例如,假设在一个文档中给出了以下两句话:“people trust the man.” “people betray his trust finally.” 因为LDA和SDAE认为该文档是一系列判别词汇的bag,它们无法区分“trust”的场景语义。准确地说,尽管“trust”的每一个出现似乎都有几乎相同的含义,但这些词之间有一个微妙的句法差异——分别是动词和名词。文档中的这种细微差别也是深入理解文档的重要因素,进一步的这种理解有助于提高评级预测准确性。为了解决上述问题,作者采用了卷积神经网络(CNN)。CNN在计算机视觉、自然语言处理和信息检索等各个领域表现出很高的性能。CNN通过对成分建模(如局部感受野、共享权重和子采样)有效地捕获图像或文档的局部特征。因此,CNN的使用有助于加深对文档的理解,并产生比LDA和SDAE更好的潜在模型,尤其是对于由于缺乏评级而诉诸于描述文件的物品。此外,CNN还可以利用预先训练好的单词嵌入模型,如Glove,来加深对物品描述文档的理解。注意,LDA和SDAE并不能利用预训练的单词嵌入模型,因为它们采用了词袋‘the bag-of-word’模型。
然而,现有的CNN并不适合推荐任务,因为2016年之前CNN的目标不同于推荐的目标。具体来说,2016年之前的的CNN主要解决分类任务,即预测单词、短语或文档的标签。相反,推荐的目标被认为是一个回归任务,旨在准确地估计用户对物品的评价。因此,现有的CNN不能直接应用于电子商务中的推荐任务。为了解决这一技术问题,我们提出了一种文档上下文感知推荐模型——卷积矩阵分解(ConvMFC),它利用卷积神经网络(CNN)捕获物品描述文档的上下文信息,进一步提高了评分预测的准确性。准确地说,ConvMF无缝地将CNN集成到PMF中(PMF通常用于推荐任务)。这样的集成推荐模型遵循推荐目标,最终有效地利用了协同信息和上下文信息。因此,即使评级数据非常稀疏,C噢女MF也能准确预测未知评级。
为了证明ConvMF的有效性,作者对三个不同的顶级数据集进行了评估。同时也对评级数据集的各种稀疏数据进行的广泛实验。 结果表明,2016年的时候ConvMF模型显著优于最先进的模型。ConvMF的优越性能验证了ConvMF生成的物品潜在模型能够有效地反映物品描述文档的上下文信息,即使在评级数据非常稀疏的情况下也是如此。此外,文章还定性地证明ConvMF确实捕获了文档中单词的细微上下文差异。以及预训练的单词嵌入模型是有助于提高ConvMF的评分预测精度。
这篇文章的创新点主要由以下几个方面:
- 文章解决了基于词袋模型的方法的局限性,并开发了一种新的文档上下文感知推荐模型ConvMF
- 为了利用评分和物品描述文档,文章在概率视角下无缝地将CNN整合到PMF中
- 文章广泛地展示了ConvMF模型在三个顶级数据集的优越性,并给出了定量和定性结果
2. 最流行的协同过滤技术-矩阵因子分解MF
传统的协同过滤技术分为两类:基于记忆的方法(如最近邻)和基于模型的方法(如潜在因子模型)。一般来说,基于模型的方法可以生成更精确的推荐结果。然而,MF是最流行的基于模型的方法。
MF的目标是在共享的潜在空间中找到用户和物体潜在对应模型,其中用户-物体关系的强度(即用户对物品评分)由内积计算。假设我们有n个用户,m个物品,一个用户-物品评分矩阵是n×m。在MF中,用户i和j的潜在模型表示为k维模型,ui和vj。物品j接受用户i的评分rij,近似于用户i和物体j对应潜在模型的内积。训练潜在模型的一般方法是最小化损失函数L,它由实际评分和预测评级之间的平方误差项,以及尝试避免过度拟合问题的L2正则化项组成,如下所示:
其中,u是指用户向量; v是指物品向量; r表示用户对物品评分矩阵;I是指标函数,如果用户对物品有评分,Ii=1, 否则为0。很明显,I可以描述推荐数据的稀疏性和冷启动问题。
3. 卷积矩阵因子分解法
3.1 ConvMF的概率模型
图1显示了ConvMF概率模型的概述,该模型将CNN集成到PMF中。假设现在有N个用户,M个物品,观测到的评分矩阵用R矩阵表示。然后,我们的目标是寻找用户-物品之间的潜在模型(即U∈k*N; V∈k*M);通过U、V我们可以重建出得分矩阵R。从概率的角度看,观测得分矩阵的条件分布可以计算如下:
N(x|μ,σ)是指高斯正态分布的概率密度函数;I是指标函数,如果用户对物品有评分,Ii=1, 否则为0。很明显,I可以描述推荐数据的稀疏性和冷启动问题。
作为用户潜在模型的一种生成模型,我们将传统的先验,即零均值球面高斯先验,放置在具有方差σU的用户潜在模型上。
然而,与传统PMF中物体潜在模型的概率模型不同,文章假设物体潜在模型是由三个变量生成的:CNN中的内部权重W,Xj代表物体j的文档,以及epsilon变量作为高斯噪声,这能够进一步优化基于物体的潜在评分模型。因此,最终的物体潜在模型是由以下方程式得出的:
对于CNN权重矩阵W中的每一个权重因子wk,文章采用零均值的球状高斯产生,这也是最常用的一种方式。因此,基于物体的潜在模型的条件分布可以表示如下:
其中X是物体的描述文档集。利用CNN模型得到的文档潜在向量作为高斯分布的平均值,利用物品的高斯噪声作为高斯分布的方差,作为CNN和PMF之间的桥梁,有助于全面分析描述文档和评级。
3.2 ConvMF的CNN架构
CNN结构的目标是从物体文档中生成文档的潜在向量,结合epsilon变量用于组成物体的潜在模型。图2显示文章的CNN结构,由四层组成:1)嵌入层embedding layer、2)卷积层convolutional layer、3)池化层pooling layer 和 4)输出层 output layer
- 嵌入层 embedding layer: 嵌入层是将原始文档转换为表示下一卷积层文档的密集数字矩阵。详细地说,文章将文档视为T个单词的序列,通过将文档中的字向量连接起来,将文档表示为一个矩阵。然后通过随机初始化或者采用Glove等预训练的嵌入模型对词向量进行初始化或初始化。通过优化过程对词向量进行了进一步的训练。
- 卷积层 convolutional layer: 卷积层用于提取物品文档上下文特征。
- 池化层 pooling layer: 池层从卷积层中提取具有代表性的特征,并通过池操作处理可变长度的文档,池操作构造固定长度的特征向量。
- 输出层 output layer: 通常,在输出层获得的高级特性应该针对特定的任务进行转换。
3.3 优化方法
为了优化CNN的基于用户的潜在模型、基于物品的潜在模型、权重和偏差变量等变量,文章使用了最大后验概率(MAP)估计,如下所示:
4. 算法的实验论证
4.1 算法验证基本信息
- 数据集
为了证明模型在评级预测方面的有效性,文章使用了从movie-Lens和Amazon-3获得的三个真实数据集。这些数据集包括用户对物品明确评分,评分范围为1到5。Amazon数据集包含对物品的评论,作为物品的描述文档。
- 训练细节
我们使用python和keras库以及Nvidia Geforce Titanx GPU实现了ConvMF。为了训练CNN的权重,文章使用了基于RMSprop的批量训练方法,每个小批量包含128个训练物品。对于详细的CNN架构设置:1)将最大文档长度设置为300。2)随机初始化单词隐含向量,维度大小为200。这些词的潜在载体将通过优化过程进行训练。3)convmf+:通过预训练的单词嵌入模型初始化单词潜伏向量,尺寸为200。这些词的潜在载体将通过优化过程进行训练。4)在卷积层中,使用不同的窗口大小作为共享权重来考虑周围单词的不同长度,每个窗口大小使用100个共享权重。5)使用dropout,将dropout设置为0.2,以避免CNN过度拟合,而不是采用与CNN权重相关的L2正则化。
- 评价方案
为了评估每个模型在真实数据集上的整体性能,我们将每个数据集随机分成一个训练集(80%)、一个验证集(10%)和一个测试集(10%)。训练集至少包含对每个用户-物体的评分,以便PMF处理所有用户-物体。作为评价指标,文章也采用均方根误差(RMSE),它直接关系到传统评级预测模型的目标函数。
文章报告了每个模型的测试错误,这在200次迭代中给出了最低的验证错误,并提前停止。为了保证结果的可靠性,我们从数据分割过程中重复了5次评估程序,并报告了平均测试误差。
4.2 实验结果
- movieLen和Amazon数据集的量化结果
- 结论
文章论述了在物体描述文档中考虑上下文信息,如周围单词和词序,可以加深对描述文档的理解,并开发了一种新的文档上下文感知推荐模型ConvMF,它将cnn无缝地集成到pmf中,以捕获上下文信息. 结果表明,ConvMF显著优于最先进的竞争对手,这意味着ConvMF能够很好地处理上下文信息的稀疏性问题。此外,由于ConvMF基于标准的基于mf的推荐模型pmf,因此ConvMF可以扩展到组合其他基于mf的推荐模型,例如只考虑评级的svd++。作为下一个研究方向,由于深部神经网络的无监督预训练对性能有很大影响,我们试图开发描述文档的卷积自动编码器。通过无监督的方式,使我们不仅可以预处理嵌入层的权重变量,还可以预处理convmf中cnn部分的所有剩余权重变量。我们预计,当评级数据非常稀疏时,AutoEncoder的这种无监督预培训会显著提高推荐的性能。
用于文档上下文感知推荐的卷积矩阵分解相关推荐
- Multi-Armed Bandit--基于时变多臂老虎机的在线上下文感知推荐
Online Context-Aware Recommendation with Time Varying Multi-Armed Bandit 基于时变多臂老虎机的在线上下文感知推荐 摘要 为了预测 ...
- DocuWare平台——用于文档管理和工作流程自动化的内容服务平台详细介绍(上)
DocuWare平台--用于文档管理和工作流程自动化的内容服务平台 成功实现办公自动化所需的一切 DocuWare 是一个先进的平台,可让您集中.快速.有效地管理.处理和利用业务信息. 我们的文档管理 ...
- 基于全文检索系统实现文档系统相关推荐功能
目录 概述 1.搜索推荐 1.1 编辑距离 2.相关推荐 2.1 文档指纹(Simhash算法) 2.2 文档相似度(海明距离) 2.3 海量文档处理技巧 3.基于全文检索系统实现文档系统推荐 3.1 ...
- 推荐算法之--矩阵分解(Matrix Factorization)
文章目录 推荐算法之--矩阵分解(Matrix Factorization) 1. 共现矩阵 2. 矩阵分解(MF) 3. SVD实现矩阵分解(MF) 4. 梯度下降 实现 矩阵分解(MF) 4.1 ...
- LSR:用于文档关系抽取的潜在图结构迭代优化推理方法
每天给你送来NLP技术干货! 来自:AI自然语言处理与知识图谱 大家好,我是大林,今天给大家分享一篇ACL2020文档关系抽取的文章,作者是Brauch. 论文题目: Reasoning with L ...
- 批量文档处理软件推荐,同时处理 Word、Excel、PPT、PDF 等办公文件,支持批量格式转换、重命名和查找替换等
概要:今天给大家带来的这款专门针对 Word.PPT.Excel.PDF 和记事本文本文件批量处理格式转换的软件--我的ABC软件工具箱.它集合了批量修改文件名称.批量修改文件内容.批量设置页眉页脚. ...
- 还在用Swagger生成接口文档?我推荐你试试它.....
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 JApiDocs是一个无需额外注解.开箱即用的SpringBoot ...
- springboot 中文文档_还在用 Swagger生成接口文档?我推荐你试试它
JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...
- 还在用 Swagger(丝袜哥)生成接口文档?我推荐你试试它。。。
作者:小鱼儿511 https://blog.csdn.net/dongbeiou/article/details/106771453 JApiDocs是一个无需额外注解.开箱即用的SpringBoo ...
最新文章
- 每日英语:China's Youth to Employers: I Quit
- python中time库是什么意思_python中time库的time.time()函数的作用是什么
- 编写你的第一个 Django 应用,第 4 部分
- 认识微服务-服务架构演变
- java如何查看调用记录_查看Java记录
- rust石头墙几个c4_石头在景观中的运用
- A股开盘:深证区块链50指数跌0.32%,118只概念股下跌
- java nio 如何使用_Java NIO 系列教程(转)
- 虚拟机linux gedit,Linux系统中把gedit改造成TextMate的方法
- 《剑指offer》第三十三题(二叉搜索树的后序遍历序列)
- 设计一个RC高通滤波器或低通滤波器
- 计算机二级题目之c运算符和表达式练习学习
- 苹果官方付费升级内存_苹果6 Plus升级内存后遇到刷机报错40维修过程【详解】...
- 为佳作喝彩: Google Play 2022 年度中国开发者最佳榜单
- 手把手教你在浏览器(chrom,edge)上安装Tampermonkey(油猴)(附所需所有内容链接)
- 数据库MySQL创库、创表基本命令
- C#开发微信订阅号、服务号视频教程-翟东平-专题视频课程
- 关于解决Android studio:The emulator process for AVD Pixel_4_XL_API_30 has terminated 以及改变AVD存放位置
- 自动调节式防涝井盖设计
- python安装环境配置linux_[Python学习] Linux环境下的Python配置,必备库的安装配置...