基于神经网络的协同过滤-NCF

news2025/1/12 23:32:52

目录

1、摘要

2、引言

2.1协同过滤

2.2矩阵分解

3.准备工作

3.1学习隐性数据

3.2矩阵分解

​3.3神经协同过滤 

3.4广义矩阵分解 

3.5多层感知器

3.6GMF和MLP的融合-NeuMF(神经矩阵分解)

4.总结 

1、摘要

     尽管最近的一些工作已经把深度学习运用到了推荐中,但是他们主要是用它(深度学习)来对一些辅助信息(auxiliary information)建模,比如描述文字的项目和音乐的声学特征。当涉及到建模协同过滤的关键因素(key factor)————用户和项目(item)特征之间的交互的时候,他们仍然采用矩阵分解的方式,并将内积(inner product)做为用户和项目的潜在特征点乘。通过用神经结构代替内积这可以从数据中学习任意函数,据此我们提出一种通用框架,我们称它为NCF(Neural network-based Collaborative Filtering,基于神经网络的协同过滤)。NCF是一种通用的框架,它可以表达和推广矩阵分解。为了提升NFC的非线性建模能力,我们提出了使用多层感知机去学习用户-项目之间交互函数(interaction function)。在两个真实世界(real-world)数据集的广泛实验显示了我们提出的NCF框架对最先进的方法的显著改进。

2、引言

        尽管MF(矩阵分解)对于协同过滤是有效的,但众所周知,它的性能会受到交互功能(内积)的简单选择的影响。关于关键协作过滤效果的建模,他们仍然求助于MF,使用内部产品将用户和物品的潜在特征结合起来。这项工作通过形式化协作过滤的神经网络建模方法来解决上述研究问题。我们专注于隐性反馈,通过观看视频、购买产品和点击物品等行为间接反映用户的偏好。与显性反馈(即评级和评论)相比,隐性反馈可以自动跟踪,因此更容易为内容提供商收集。然而,利用它更具挑战性,因为没有观察到用户满意度,而且负面反馈自然稀少。在本文中,我们探讨了如何利用DNN对有噪声的隐式反馈信号进行建模的中心主题。

2.1协同过滤

根据用户过去的交互(如评分和点击)对项目的偏好进行建模。

2.2矩阵分解

它将用户和项目投影到共享的潜在空间中,使用潜在特征向量来表示用户或项目。此后,用户对项目的交互被建模为其潜在向量的内积。

3.准备工作

3.1学习隐性数据

 

 3.2矩阵分解

        MF用一个潜在特征向量实值将每个用户和项目关联起来。令Pu和Qi分别表示用户u和项目i的潜在向量;MF评估相互作用Yui作为Pu和Qi的内积:

这里的K表示潜在空间的维度。正如我们所看到,MF模型是用户和项目的潜在因素的双向互动,它假设潜在空间的每一维都是相互独立的并且用相同的权重将它们线性组合。因此,MF可视为潜在因素的线性模型。

 3.3神经协同过滤 

  

        输入分别描述用户u和物品i构成的两个特征向量,由于这项工作侧重于纯协作过滤设置,只使用user和item作为输入特征,将其转换为一个one-hot encoding的二进制稀疏向量,可以很容易的通过content(内容)特征来获取用户表示,以此解决冷启动的问题, embedding层是将稀疏表示投影到稠密向量的全连接层,Neural CF层的每一层都可以定制,用以发现user-item交互的某些潜在结构,最后一个隐藏层X的尺寸决定了模型的能力。最后的输出层是预测分数,通过最小化在目标值yui和yui之间的pointwise loss来执行训练。

3.4广义矩阵分解 

 3.5多层感知器

 3.6GMF和MLP的融合-NeuMF(神经矩阵分解)

 

 

4.总结 

        在这项工作中,我们探索了用于协同过滤的神经网络结构。我们设计了一个通用框架NCF,并提出了三种实例:GMF,MLP和NeuMF,以不同的方式模拟用户-项目交互。我们的框架简单而通用; 它不仅限于本文提出的模型,它对深入学习推荐方法的也具有指导意义。这项工作补充了主流浅层协同过滤模型,为深入学习推荐研究开辟了新途径。

         在将来的工作中,我们将研究NCF模型在成对学习中的应用,并将NCF扩展到建模辅助信息,如用户评论,知识库和时间信号。现有的个性化模式主要集中在个人身上,为用户群体开发模型将会是一个有趣的发展,这有助于社会团体的决策。此外,我们特别感兴趣的是建立多媒体项目的推荐系统,这是一个有趣的任务,但在推荐社区中受到相对较少的关注。多媒体项目(如图像和视频)包含更丰富的视觉语义,可以反映用户的兴趣。 要构建多媒体推荐系统,我们需要开发有效的方法来学习多视图和多模态数据。 另一个新出现的方向是探索循环神经网络和散列方法(hashing methods)的潜力,以提供有效的在线推荐。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【mysql性能调优 • 一】mysql企业级安装部署(保姆级别教程)

前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系…

k8s 认证基础

0x00 前言 要想研究一个东西是不是存在安全问题,那么就要知道这个东西是什么,怎么用的,如何认证,认证方式等问题,了解这些才能更好的去解释学习安全问题。 0x01 访问控制 首先是k8s用户k8s用户分为service account以…

涨点技巧:Yolov5/Yolov7引入CVPR2023 Demystify Transformers Convolutions ,提升小目标检测精度

Demystify Transformers & Convolutions in Modern Image Deep Networks 论文:https://arxiv.org/pdf/2211.05781.pdf 视觉转换器最近的成功激发了一系列具有新颖特征转换范例的视觉主干,这些范例报告了稳定的性能增益。尽管新颖的特征转换设计通常被认为是收益的来源,…

0302Prim算法-最小生成树-图-数据结构和算法(Java)

文章目录1 Prim算法1.1 概述1.1.1 算法描述1.1.2 数据结构1.1.3 横切边集合维护1.2 延时实现1.2.1 实现代码1.2.2 性能分析1.3 即时实现1.3.1 分析1.3.2 实现代码1.3.3 性能分析结语1 Prim算法 1.1 概述 1.1.1 算法描述 算法描述: 初始化最小生成树,只…

Java classLoader

一. 什么是类加载器 类加载器 classLoader 类加载器:负责将.class文件(存储在硬盘上的物理文件)加载到内存中,是类加载器把类的字节码文件加载到内存当中的。二. 类加载的过程 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,…

vue项目Agora声网实现一对一视频聊天Demo示例(Agora声网实战及agora-rtc-vue使用,新增在线预览地址)

最终效果 在线预览地址 一、声网简介---->请查看官网 二、声网注册---->请自行百度(创建音视频连接需要在Agora注册属于您的appid) 三、具体实现视频聊天步骤 1、 实现音视频通话基本逻辑 1、创建对象 调用 createClient 方法创建 AgoraRTCCli…

ELK 日志系统收集K8s中日志

容器特性给日志采集带来的困难 • K8s弹性伸缩性:导致不能预先确定采集的目标 • 容器隔离性:容器的文件系统与宿主机是隔离,导致日志采集器读取日志文件受阻。 日志按体现方式分类 应用程序日志记录体现方式分为两类: • 标准…

最大似然估计法和Zero Forcing算法的思考

文章目录一、Zero Forcing 算法思想二、MMSE三、MIMO检测中 Zero Forcing 算法比 Maximum Likelihood 差的思考本篇文章是学习了B站UP主 乐吧的数学 之后的笔记总结,老师讲的非常好,大家有兴趣的可以关注一波!一、Zero Forcing 算法思想 那…

Linux应用编程(文件IO基础)

1.1、个简单的文件 IO 示例 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(void) {char buff[1024];int fd1, fd2;int ret;/* 打开源文件 src_file(只读方式) */fd1 open("./src_file",…

差分矩阵算法

前言&#xff1a;我们熟悉一维数组的前缀和和差分数组的相关操作和原理&#xff0c;但是对于二维数组也就是矩阵来说&#xff0c;它的差分和前缀和又会有什么不同之处呢&#xff1f;下面我们一起来研究&#xff0c; 1.二维数组的前缀和 首先&#xff0c;我们一般规定二维数组的…

【RocketMQ】主从同步实现原理

主从同步的实现逻辑主要在HAService中&#xff0c;在DefaultMessageStore的构造函数中&#xff0c;对HAService进行了实例化&#xff0c;并在start方法中&#xff0c;启动了HAService&#xff1a; public class DefaultMessageStore implements MessageStore {public DefaultM…

Vue2-黑马(六)

目录&#xff1a; &#xff08;1&#xff09;element-ui search搜索 &#xff08;2&#xff09;element ui Cascader级联选择器 &#xff08;3&#xff09;Router-路由配置 &#xff08;4&#xff09;Router-动态导入 &#xff08;1&#xff09;element-ui search搜索 我…

日撸 Java 三百行day21-22

文章目录说明day21 二叉树的深度遍历的递归实现1. 二叉树的遍历2. 二叉树深度&#xff0c;结点数3. 代码day 22 二叉树的存储1. 思路2.层次遍历代码3.代码说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把…

《程序员面试金典(第6版)》面试题 10.02. 变位词组

题目描述 编写一种方法&#xff0c;对字符串数组进行排序&#xff0c;将所有变位词组合在一起。变位词是指字母相同&#xff0c;但排列不同的字符串。 注意&#xff1a;本题相对原题稍作修改 示例: 输入: ["eat", "tea", "tan", "ate&quo…

Python接口自动化测试实战详解

接口自动化测试是指通过编写程序来模拟用户的行为&#xff0c;对接口进行自动化测试。Python是一种流行的编程语言&#xff0c;它在接口自动化测试中得到了广泛应用。下面详细介绍Python接口自动化测试实战。 1、接口自动化测试框架 在Python接口自动化测试中&#xff0c;我们…

资源覆盖-overlay机制

1. SRO–Static resource overly(静态替换)2. RRO–Runtime resource overlay (运行时替换) 静态 RRO 1.写配置文件 以下代码显示了一个示例 AndroidManifest.xml。 <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"com.exa…

【Redis】Redis基础命令集详解

文章目录【Redis01】Redis常用命令一、基础命令1、ping&#xff08;心跳命令&#xff09;2、get/set&#xff08;读写键值命令&#xff09;3、select&#xff08;切换数据库&#xff09;4、dbsize&#xff08;查看key数量&#xff09;5、flushdb&#xff08;删除当前库中所有数…

用starter实现Oauth2中资源服务的统一配置

一、前言 Oauth2中的资源服务Resource需要验证令牌&#xff0c;就要配置令牌的解码器JwtDecoder&#xff0c;认证服务器的公钥等等。如果有多个资源服务Resource&#xff0c;就要重复配置&#xff0c;比较繁锁。把公共的配置信息抽取出来&#xff0c;制成starter&#xff0c;可…

【案例实践】Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践应用

查看原文>>>Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践应用 目录 第一章、理论基础 第二章、开发环境搭建 第三章、遥感大数据处理基础 第四章、典型案例操作实践 第五章、输入输出及数据资产高效管理 第六章、云端数据论文出版级可视化 随…

图片懒加载及Vue自定义图片懒加载指令

文章目录监听滚动的方式IntersectionObserver方式自定义图片懒加载vue指令1自定义图片懒加载vue指令2lazyLoadImage.jsmain.js中注册指令组件中使用学习链接&#xff1a;前端必会的图片懒加载vue自定义指令实现图片懒加载监听滚动的方式 img的src先都用一张默认的图片&#xf…