群组推荐模型---AGREE(Attentive Group Recommendation)

2023-12-17 08:52

本文主要是介绍群组推荐模型---AGREE(Attentive Group Recommendation),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

群组推荐模型---AGREE

  • AGREE简单概述
  • 基于注意力的群组表征学习(Attentive Group Representation Learning)
  • NCF(Neural Collaborative Filtering)

AGREE简单概述

群组推荐领域比较经典的论文便是AGREE(Attentive Group Recommendation),此文的主要贡献如下:(1)利用神经注意力网络从数据中动态学习聚合策略的群体推荐系统。进一步整合了用户-项目交互,提高了群组推荐的性能.(2)有效缓解项目推荐的用户冷启动问题。(3)在一个自建数据集和一个公共数据集上进行了大量的实验,以证明方法有效性。
群组推荐可以大致分为四个模块:偏好获取群组划分偏好融合预测推荐。首先,在推荐算法中一般将偏好定义为用户对两个及以上项目的排序关系。其次对于群组划分,本文中使用的为开源真实数据集(Mafengwo和CAMRa2011),数据集中群组已经划分完毕,因此不再需要利用其他手段进行群组划分。如若需要构建其他数据集中的虚拟群组,可以利用聚类算法完成群组划分。在偏好融合层面,利用注意力机制学习群组成员权重替代预定义策略,最后一步使用NCF进行交互学习,为用户和组推荐项目。

基于注意力的群组表征学习(Attentive Group Representation Learning)

大多数的群组推荐系统都是通过一些预定义的策略对群组成员的评分进行聚合。例如最大最小值策略等。这类策略需要预定义参数,无法获知群组成员内部相互影响,缺乏动态调整群组成员权重的灵活性。使用注意力机制来学习聚合策略。它的基本思想是,当将一组表示压缩成一个表示时,对它们执行加权和,其中的权值由神经网络学习。偏好融合公式如下:
g l ( j ) = ∑ u t ∈ g l a ( j , t ) u t + q l g_l(j)=\displaystyle\sum_{u_t \in g_l}a(j,t)u_t+q_l gl(j)=utgla(j,t)ut+ql
g l g_l gl为群组 l l l中用户, a ( j , t ) a(j,t) a(j,t)为注意力权重,本文最为主要的部分便是注意力权重的训练,公式如下:
o ( j , t ) = h T R e L U ( P v v t + P u u t + b ) o(j,t)=h^TReLU(P_vv_t+P_uu_t+b) o(j,t)=hTReLU(Pvvt+Puut+b)
a ( j , t ) = s o f t m a x ( o ( j , t ) ) = e x p ( o ( j , t ) ) ∑ t ∈ g l e x p ( o ( j , t ) ) a(j,t)=softmax(o(j,t))=\frac{exp(o(j,t))}{\textstyle\sum_{t\in g_l}exp(o(j,t))} a(j,t)=softmax(o(j,t))=tglexp(o(j,t))exp(o(j,t))
P v P_v Pv P u P_u Pu表示物品v和用户u的权重矩阵,通过激活函数和归一化的处理,训练出最终的用户权重。
而在群组偏好融合的公式中,还有一个 q l q_l ql变量,表示群组偏好向量,目的是考虑群组的整体偏好。

NCF(Neural Collaborative Filtering)

NCF是一种用于项目推荐的多层神经网络框架。它的想法是将用户嵌入和物品嵌入到一个专用的神经网络中,从而从数据中学习交互功能。由于神经网络具有较强的数据拟合能力,因此NCF框架比传统的MF模型具有更强的通用性,后者简单地使用与数据无关的内积函数作为交互函数。因此,选择NCF框架来对嵌入(表示用户、项目和组)和交互功能(预测用户-项目和组-项目交互)执行端到端学习。
pooling layer
对输入的向量 g l ( j ) g_l(j) gl(j) v ( j ) v(j) v(j)进行逐元素乘积,然后与 g l ( j ) , v ( j ) g_l(j),v(j) gl(j),v(j)进行连接。
e 0 = φ p o o l i n g ( g l ( j ) , v ( j ) ) = [ g l ( j ) ⨀ v ( j ) g l ( j ) v ( j ) ] e_0=\varphi_{pooling}(g_l(j),v(j))= \begin{bmatrix} g_l(j)\bigodot v(j)\\ g_l(j)\\ v(j) \end{bmatrix} e0=φpooling(gl(j),v(j))= gl(j)v(j)gl(j)v(j)
内积能够有效的捕获到群组和物品之间的交互,同时连接群组和物品本身的信息能够避免信息丢失。
hidden layer
池化层之上是一堆完全连接的层,这些层使模型能够捕获用户、组和项目之间的非线性和高阶相关性。
{ e 1 = R e L U ( W 1 e 0 + b 1 ) e 1 = R e L U ( W 1 e 0 + b 1 ) . . . . e h = R e L U ( W h e h − 1 + b h ) \begin{cases} e_1=ReLU(W_1e_0+b_1)\\ e_1=ReLU(W_1e_0+b_1)\\ ....\\ e_h=ReLU(W_he_{h-1}+b_h) \end{cases} e1=ReLU(W1e0+b1)e1=ReLU(W1e0+b1)....eh=ReLU(Wheh1+bh)
最后一层输出 e h e_h eh经过下面的公式转化为预测分:
{ r i j ^ = w T e h , i f e 0 = φ p o o l i n g ( u i , v j ) y i j ^ = w T e h , i f e 0 = φ p o o l i n g ( g l ( j ) , v j ) \begin{cases} \hat{r_{ij}}=w^Te_h,if e_0=\varphi_{pooling}(u_i,v_j)\\ \hat{y_{ij}}=w^Te_h,if e_0=\varphi_{pooling}(g_l(j),v_j) \end{cases} {rij^=wTeh,ife0=φpooling(ui,vj)yij^=wTeh,ife0=φpooling(gl(j),vj)
w w w表示预测层的权重 r i j ^ \hat{r_{ij}} rij^ y i j ^ \hat{y_{ij}} yij^分别表示用户对物品的预测分和群组对物品的预测分。设计了两个任务的预测共享相同的隐藏层。这是因为群嵌入是从用户嵌入聚合而来的,这使得它们本质上处于相同的语义空间中。此外,这可以增强用户-项目交互数据对组-项目交互功能的训练,反之亦然,有利于二者的相互强化。

代码链接:点击

这篇关于群组推荐模型---AGREE(Attentive Group Recommendation)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/503799

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx