当前位置: 首页 > article >正文

【论文阅读】Contrastive Clustering Learning for Multi-Behavior Recommendation

论文地址:Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems


摘要

近年来,多行为推荐模型取得了显著成功。然而,许多模型未充分考虑不同行为之间的共性与差异性,以及目标行为的数据稀疏性问题。本文提出了一种基于对比聚类学习的全新多行为推荐模型(MBRCC)。

具体而言,采用图卷积网络(GCN)分别获取用户和物品的嵌入表示。随后,设计了三种优化用户和物品嵌入的任务,包括行为级嵌入、实例级嵌入和聚类级嵌入。

在行为级嵌入中,设计了一种自适应参数学习策略,以分析辅助行为对目标行为的影响,并通过对用户在各行为上的嵌入进行加权,获得最终的用户嵌入表示。

在实例级嵌入中,利用对比学习对用户和物品实例进行分析,以缓解数据稀疏性问题。

在聚类级嵌入中,设计了一种新的聚类对比学习方法,以捕捉用户和物品群体之间的相似性。

最终,结合这三种任务,以提升用户和物品嵌入的质量。在三个真实世界数据集上的广泛实验表明,MBRCC 显著优于现有的多种推荐模型。

引言

推荐系统在在线广告、社交媒体和电子商务等多个领域发挥着至关重要的作用。它通过智能信息过滤和个性化推荐,帮助用户快速找到符合其兴趣和需求的内容。个性化推荐不仅提升了用户体验,还促进了商业交易的成功。

目前,大多数推荐模型主要关注用户与物品之间的单一行为关系。例如,Zheng 等人[57]提出了一种基于单一行为数据挖掘物品属性信息的推荐方法;Wang 等人[36]在单一行为数据上研究了用户-物品的高阶信息;Li 等人[24]利用元学习方法提升用户和物品的表示效果;Lan 等人[21]基于历史交互数据构建了用户和物品的双分支图来捕获信息。然而,在实际应用中,用户和物品的交互通常涉及多种行为类型。例如,如图 1 所示,在电子商务平台上,用户的行为通常包括浏览、点击和购买等。此外,与用户交互的物品数量不断增长,仅依赖单一行为难以准确推测用户的偏好,因此需要借助辅助行为进行推荐。

为了充分利用辅助行为信息,近年来涌现出越来越多的多行为推荐模型。例如,Gao 等人[9]提出了一种基于神经网络的多任务推荐框架,以级联方式关联各类行为,利用用户在购买前通常浏览相关感兴趣物品的现象来整合不同行为信息;Jin 等人[17]提出了一种多行为推荐模型,通过用户-物品交互的传播层捕捉行为强度,并通过物品-物品交互的传播层捕捉行为语义;Chen 等人[7]提出了一种基于多行为的推荐模型,在可控时间复杂度下高效捕捉不同行为信息,该模型采用基于用户、基于物品和交替优化的三种方法来挖掘不同行为间的复杂关系。此外,Chen 等人[5]考虑到用户和物品交互中的高阶协同信息,提出了一种基于协同过滤的异构图推荐模型,该模型采用关系感知传播层显式获取高阶信号;Wei 等人[39]提出了一种基于多种行为类型图的注意力多行为推荐模型,以捕捉用户-物品交互网络中的隐藏关系,该模型同时考虑了节点级特定行为的重要性和行为级不同行为的语义强度。此外,一些研究还结合了对比学习与多行为推荐。例如,Gu 等人[11]提出了一种基于自监督图卷积网络(GCN)的多行为推荐模型,以缓解监督信号稀疏问题,该模型采用星型对比学习策略来学习不同行为之间的共性;Wu 等人[42]提出了一种基于多视图的多行为对比学习推荐模型,以有效缓解冷启动问题,该模型整合了多行为、多视图和行为区分的对比学习。

尽管上述研究在提升推荐性能方面取得了显著进展,但仍然存在以下局限性:
(1) 一些多行为推荐的对比学习方法主要基于个体行为,缺乏从群体角度综合考虑不同行为,这通常导致用户和物品的嵌入表示无法全面覆盖行为信息;
(2) 由于相似用户的行为通常具有共性,而不同用户的行为往往存在差异,因此用户和物品的共性与差异可提供更丰富的语义信息。然而,部分模型未充分考虑用户或物品之间的共性与差异,可能导致群体偏差或信息过滤不足;
(3) 部分方法忽视了目标行为的数据稀疏性问题。例如,相较于点击、浏览和加入购物车等行为,购买行为的数据较为稀疏,这可能导致推荐偏差或冷启动问题,因为对比学习中难以构造足够数量和多样性的正负样本对。

针对现有多行为推荐模型的这些局限性,本文提出了一种基于对比聚类学习的全新多行为推荐模型(MBRCC)。具体而言,采用 GCN 获取用户和物品在不同行为上的嵌入表示,并围绕这些嵌入设计三类任务,以提升嵌入质量:
(a) 行为级嵌入:采用自适应参数学习策略计算用户在不同行为上的嵌入权重,并通过加权方法融合所有行为的用户嵌入;
(b) 实例级嵌入:基于用户和物品不同行为间的共性,采用对比学习优化用户和物品的嵌入表示,使正样本对之间的共性最大化,负样本对之间的共性最小化;
(c) 聚类级嵌入:多行为数据通常展现出类似的群体模式,因此采用对比聚类学习方法挖掘用户和物品嵌入的潜在信息,以促进实例级用户和物品之间的共性。

在三个真实世界数据集上对 MBRCC 进行了实验评估,结果表明,相较于其他基线模型,本文的方法在所有数据集上至少提升了 7% 的推荐性能。本文的主要贡献如下:

  • 提出了一种新型多行为推荐模型(MBRCC),包括行为级嵌入、实例级嵌入和聚类级嵌入,并首次在多行为推荐任务中应用对比聚类学习,以捕捉用户和物品的嵌入信息;
  • 在实例级嵌入中考虑了用户和物品之间的共性与差异,同时引入群体聚类级嵌入,最大化用户和物品之间的关联信息利用率,从而有效缓解数据稀疏性问题;
  • 在三个真实数据集上验证了 MBRCC 模型的有效性,实验结果表明,MBRCC 在推荐性能上显著优于现有模型。

模型

所提出的模型 (MBRCC) 如图 2 所示,主要包含四个部分。

嵌入表示部分,异构图 G 根据行为类别划分为 K 个子图。此外,为了获取完整的嵌入信息,设计了三种任务。在行为级别嵌入中,方法侧重于获取用户在每个子图上的嵌入权重。这些权重与相应子图的嵌入进行聚合,以更好地捕获用户行为在不同子图中的重要性。对于物品嵌入,采用简单的拼接操作,因为它们具有静态属性。在实例级别嵌入中,采用对比学习方法,将目标行为(即购买行为)的用户和物品嵌入与其他辅助行为进行比较,利用对比学习策略提取用户和物品之间的实例级共性信息,作为局部特征。在聚类级别嵌入中,针对每种辅助行为获取特征组,并将目标行为加入这些特征组中。然后,使用 softmax 方法在每个特征组中获取不同的特征簇,并在各特征簇之间进行对比学习。最终,这三种任务相结合,以优化用户和物品的嵌入。

4.1 嵌入表示

基于子图 Gk,采用 GCN 获取用户和物品的表示。零层的嵌入表示是矩阵 E(0)中行向量的随机初始化。在模型中,采用多层消息传播,通过收集连接邻居的信息来获取完整的节点信息。为了适应推荐任务,去除了通用 GCN 嵌入聚合中的特征变换矩阵和非线性激活函数,类似于 LightGCN。公式如下:

其中,Nu 和 Ni 分别表示用户 u和物品 i 的邻居数量,l表示当前图卷积层数,(e^k_u)^{(l+1)} 代表 k 类行为的第 l+1 层用户嵌入。在获取每层的嵌入信息后,需要聚合所有层的信息,以确保更好的节点嵌入表示:

其中,αl 代表第 l 层嵌入的权重,与 LightGCN 一致,其中 L为 GCN 的层数。物品嵌入的学习过程与用户嵌入类似。

4.2 行为级别嵌入

多行为数据可以提供更详细的信息,使用户和物品的嵌入表示更加完整。在行为级别嵌入中,设计了一种自适应参数学习方法,根据不同行为数据的分布,捕获每种行为的权重:

其中,αuk代表用户 u 在 k 类行为上的权重,wk 表示 kk 类行为的重要性。为了简化模型,假设 wk 对所有用户均具有相同影响。xuk 代表用户 u 在 k 类行为下的交互物品数量。最终的用户嵌入通过所有行为的加权求和得到:

其中,W 和 b 分别为权重和偏差,σ 代表非线性激活函数。最终的物品嵌入通过拼接所有行为的嵌入获得:

其中,Cat表示拼接操作,MLP 代表多层感知机(Multi-Layer Perceptron)。通过融合操作,得到最终的用户嵌入 eu 和物品嵌入 ei。为了确保相似节点具有更高的相似度,采用 BPR 损失进行优化:

其中,D 为训练数据集,(u,i+)和 (u,i−) 分别代表已观测的交互和未知交互。

4.3 实例级别嵌入

在实例级别嵌入中,采用对比学习方法来优化用户和物品的嵌入,目标是最大化正样本(用户或物品的同一行为嵌入)之间的相似性,同时最小化负样本(不同用户或物品的嵌入)之间的相似性。
对于第 k类辅助行为,计算其嵌入与目标行为嵌入之间的余弦相似度:

具体来说,将同一用户在不同行为上的嵌入视为正样本对,而来自不同用户的嵌入视为负样本对。假设有 N 个用户和 M 个物品,对于用户 u,其目标行为嵌入为 e^p_u,辅助行为嵌入为 e^k_u,则:

  • (e^p_u, e^k_u) 设为正样本对
  • 其余2N - 2 对设为负样本对

对于物品 i,目标行为嵌入为e^p_i,辅助行为嵌入为e^k_i,则:

  • (e^p_i, e^k_i) 设为正样本对
  • 其余2M - 2 对设为负样本对

为了优化对比学习中的样本相似度,目标行为 p 和辅助行为 k 需考虑用户损失:

其中,τ是温度参数。

与 Lpu和 Lpi 类似,用户和物品在第 k 个辅助行为下的损失函数定义如下:

目标是识别数据集中所有的正样本对。对于每个用户和物品,计算实例级损失,定义如下:

对于物品嵌入的实例级损失,采用与用户嵌入类似的方法。最终,通过汇总所有用户和物品的对比损失,得到实例级嵌入损失:

4.4 聚类级嵌入

聚类级嵌入遵循“物以类聚”的概念。用户嵌入和物品嵌入被映射到一个维度等于聚类数的空间,使用户和物品嵌入可以被解释为属于特定聚类的概率。然后,采用对比聚类学习方法来捕捉聚类特征。

对于目标行为及每个辅助行为,分别划分为 C 个聚类。其中,e^p_c 表示目标行为的第 c 个聚类,而 e^k_c 表示第 k 个辅助行为的第 c 个聚类。对于用户 u,使用 softmax 方法计算其在目标行为下被分配到第 c 个聚类的概率Y^p_{u,c}。

与实例级嵌入类似,通过选择目标行为和第 k 个辅助行为中相似的聚类得到正样本对 (e^p_c, e^k_c),而其余的 2C-2 个对则被视为负样本对。然后,采用余弦相似度计算这些聚类之间的相似性,定义如下:

其中 c,c′∈{1,2,...,C},k1,k2∈{p,k}。目标行为的损失函数 Lcp用于区分目标行为下的e^p_c 和所有不属于 e^k_c 的聚类,定义如下:

其中 τ0 是聚类级温度系数,控制损失的平滑度。同样,对于第 k 个辅助行为,聚类损失定义如下:

用户嵌入的聚类级损失通过遍历所有聚类得到,定义如下:

熵项 H(Y) 用于防止大多数样本被划分到同一聚类中。

对于物品嵌入的聚类级损失 ,采用与用户嵌入类似的方法。最终,将每组用户嵌入和物品嵌入的损失合并,得到聚类级嵌入损失:

4.5 联合优化

联合优化用于结合三种任务,定义如下:

其中,λ 控制实例级嵌入的权重,μ控制聚类级嵌入的权重,Θ 表示所有可训练参数,γ为正则化超参数。

4.6 算法描述

模型描述在算法 1 中。给定异构图 G、子图 Gk、聚类数 C、温度系数 τ 和 τ0,MBRCC 的目标是为每个用户生成一个 Top-N 推荐列表。算法 1 描述了 MBRCC 的训练过程,主要分为三个任务,每个任务分别包含一个损失函数。

实验


想看一下对比聚类怎么用到推荐算法中。。。

相关文章:

【论文阅读】Contrastive Clustering Learning for Multi-Behavior Recommendation

论文地址:Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems 摘要 近年来,多行为推荐模型取得了显著成功。然而,许多模型未充分考虑不同行为之间的共性与差异性,以…...

视频转音频, 音频转文字

Ubuntu 24 环境准备 # 系统级依赖 sudo apt update && sudo apt install -y ffmpeg python3-venv git build-essential python3-dev# Python虚拟环境 python3 -m venv ~/ai_summary source ~/ai_summary/bin/activate核心工具链 工具用途安装命令Whisper语音识别pip …...

基于协同过滤推荐算法的景点票务数据系统(python-计算机毕设)

摘 要 I ABSTRACT II 第 1 章 引言 1 研究背景及意义 1 研究背景 1研究意义 1 国内外研究现状 2 智慧旅游 3旅游大数据 3 研究内容 4本章小结 4 第 2 章 相关技术概述 5 基于内容的推荐算法 5 基于内容的推荐算法原理 5基于内容的推荐算法实现 5 协同过滤推荐算法 6 协同过…...

QT学习笔记1

** Qt Creator开发环境配置** 安装流程(Windows平台) 下载与安装 : 访问Qt官网,下载在线安装工具Qt Online Installer。登录或注册Qt账号,选择开源版本(需勾选“接受协议”)。勾选组件&#xff…...

Ubuntu 24 常用命令方法

文章目录 环境说明1、账号管理1.1、启用 root 2、包管理工具 apt & dpkg2.1、apt 简介 & 阿里源配置2.2、dpkg 简介2.3、apt 和 dpkg 两者之间的关系2.4、常用命令 3、启用 ssh 服务4、防火墙5、开启远程登录6、关闭交换分区7、build-essential(编译和开发软…...

Flask多参数模版使用

需要建立目录templates; 把建好的html文件放到templates目录里面; 约定好参数名字,单个名字可以直接使用;多参数使用字典传递; 样例: from flask import render_template # 模板 (Templates) #Flask 使用…...

torcharrow gflags版本问题

问题描述 其实仍然是很简单的编译问题,但是又弄了一整个下午加几乎整个晚上,进度缓慢,又吸取了教训,因而还是来记录一下。 在试图使用torcharrow进行推荐系统模拟的时候,撰写的python程序报错:ERROR: flag…...

自然语言处理|深入解析 PEGASUS:从原理到实践

一、引言 在信息爆炸的时代,互联网上的文本数据以极快的速度增长。无论是新闻资讯、学术论文、社交媒体动态,还是各类报告文档,我们每天接触到的文字信息量巨大。如何快速、准确地提取关键内容成为一项重要任务。文本摘要技术通过将长篇文本…...

Spring AI Alibaba快速使用

AI 时代,Java 程序员也需要与时俱进,这两个框架必须掌握。 一个是 Spring AI一个是 Spring Alibaba AI。 Spring AI 是一个AI工程领域的应用程序框架,它的目标是将 Spring生态系统的设计原则应用于人工智能领域。 但是, Spring…...

socks 协议介绍

SOCKS协议详解 一、基本定义与核心功能 SOCKS(Socket Secure)是一种网络传输协议,主要用于通过代理服务器转发客户端与目标服务器之间的通信请求。其核心功能包括隐藏用户真实IP地址、穿透防火墙限制以及支持多种网络协议(如TCP…...

Linux --centos安装显卡驱动

显卡下载页面 https://www.nvidia.com/en-us/drivers/unix/ 随便下载一个即可 安装过程 查看当前设备的显卡信息 lspci | grep -i vga安装gcc相关依赖 yum update -y yum update gcc yum install build-essential yum install gcc-multilibdkms yum groupinstall "Dev…...

【软件工程】简答题

真题 2024-10 26.需求验证应验证需求规格说明书中每一单一需求是否满足5个性质,这5个性质是什么? 27.简述RUP和UML的关系。 28.简述五种常见的模块间耦合类型。 29.螺旋模型在笛卡尔坐标的4个象限上,分别表达了哪4个方面的活动? 30.为了表达概念模型和软件模型,UML提供了13…...

统信UOS中使用Vscode编程

写在前面:统信UOS其实就是套壳的Linux系统,所以有问题如果搜不到解决方法,可以参考Linux下的解决方法。 1.环境配置 Vscode : 1.85.0 Vscode就直接下载安装就行,然后安装插件:Volar、中文汉化包 node:18…...

K8s认证(CKA/CKAD/CKS)哪家强?主流证书对比

2024年Kubernetes认证全解析:选对证书,薪资翻倍! (附CKA/CKAD/CKS最新考试攻略) 一、K8s认证哪家强?主流证书对比 认证名称颁发机构考试特点适合人群考试费用CKA(认证K8s管理员)CN…...

HTTP1.0、HTTP1.1、HTTP2.0对比

HTTP 1.0、HTTP 1.1 和 HTTP 2.0 是 HTTP 协议演进中的三个重要版本,每个版本都针对前一代的不足进行了优化和改进。以下是它们的核心区别和关键特性对比: 1. HTTP 1.0(1996年) 非持久连接 每个请求/响应对都需要单独建立和关闭 T…...

docker安装向量数据库Milvus及可视化工具 Attu

前置条件 1.安装了docker 2.服务器网络正常,可以连接到容器下载地址 3.服务器磁盘空间正常,docker磁盘占用过大,请参考docker容量占用过大解决办法 一、下载yml文件 可在文章资源下载或者自行下载:下载yml 下载这个单机版本的…...

A l密码学(Deepseek)

我:qwertyuiopasdfghjklzxcvbnm deepseek:深度思考中. Okay, lets see. The user input is "qwertyuiopasdfghjklzxcvbnm". At first glance, it looks like a jumbled sequence of letters with some spaces or maybe other characters in …...

DeepSeek + Kimi 自动生成 PPT

可以先用deepseek生成ppt大纲,再把这个大纲复制到Kimi的ppt助手里: https://kimi.moonshot.cn/kimiplus/conpg18t7lagbbsfqksg 选择ppt模板: 点击生成ppt就制作好了。...

Apache Paimon 在抖音集团多场景中的优化实践

资料来源:火山引擎-开发者社区 本文将基于抖音集团内部两大业务的典型实时数仓场景,介绍Paimon在抖音集团内部的生产实践。 作者:李明、苏兴、文杰 抖音集团大数据工程师 目前抖音集团内部主要使用 Lambda 架构进行实时数仓建设,其…...

Uni-App 双栏联动滚动组件开发详解 (电梯导航)

本文基于提供的代码实现一个左右联动的滚动组件&#xff0c;以下是详细的代码解析与实现原理说明&#xff1a; <!--双栏联动滚动组件 - 技术解析功能特性&#xff1a;1. 左侧导航栏与右侧内容区双向联动2. 自适应容器高度3. 平滑滚动定位4. 动态内容位置计算 --> <te…...

当下主流 AI 模型对比:ChatGPT、DeepSeek、Grok 及其他前沿技术

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 人工智能&#xff08;AI&#xff09;领域近年来取得了巨大的突破&#xff0c;特别是在大语言模型&#xff08;LLM&#…...

【自用】NLP算法面经(5)

一、L1、L2正则化 正则化是机器学习中用于防止过拟合并提高模型泛化能力的技术。当模型过拟合时&#xff0c;它已经很好地学习了训练数据&#xff0c;甚至是训练数据中的噪声&#xff0c;所以可能无法在新的、未见过的数据上表现良好。 比如&#xff1a; 其中&#xff0c;x1和…...

体育直播视频源格式解析:M3U8 vs FLV

在体育直播领域&#xff0c;视频源的格式选择直接影响着直播的流畅度、画质以及兼容性。目前&#xff0c;M3U8 和 FLV 是两种最为常见的视频流格式&#xff0c;它们各有优劣&#xff0c;适用于不同的场景。本文将从技术原理、优缺点以及应用场景等方面对 M3U8 和 FLV 进行详细解…...

Ubuntu20.04安装并配置Pycharm2020.2.5

一. 下载pycharm 社区版 1. 下载地址&#xff1a; PyCharm: the Python IDE for data science and web developmentThe Python IDE for data science and web development with intelligent code completion, on-the-fly error checking, quick-fixes, and much more.https:/…...

Filter Solutions学习-02 【高级设计】界面介绍

这是高级界面的各种控件的功能。 其中说一下filter type。这不是根据自己想当然决定的&#xff0c;而是根据实际的需要&#xff0c;比如带外衰减的程度&#xff0c;带内波动&#xff08;平坦&#xff09;如何&#xff0c;还有群时延等等决定的。比如不要求矩形系数选什么。。 …...

用Python实现交互式数据可视化:从基础图表到动态仪表板

用Python实现交互式数据可视化&#xff1a;从基础图表到动态仪表板 一、项目背景 本文将通过一个完整的Python项目&#xff0c;展示如何使用Plotly和ipywidgets构建从基础统计到动态交互的全栈数据可视化方案。 二、核心功能模块 1. 数据生成与预处理 np.random.seed(100)…...

Java面试黄金宝典5

1. ConcurrentHashMap 和 HashTable 有哪些区别 原理 HashTable&#xff1a;它继承自 Dictionary 类&#xff0c;是 Java 早期提供的线程安全哈希表。其线程安全的实现方式是对每个方法都使用 synchronized 关键字进行同步。例如&#xff0c;在调用 put、get 等方法时&#xff…...

【深度学习与大模型基础】第6章-对角矩阵,对称矩阵,正交矩阵

一、对角矩阵 对角矩阵&#xff08;Diagonal Matrix&#xff09;是一种特殊的方阵&#xff0c;其非对角线上的元素均为零&#xff0c;只有对角线上的元素可能非零。具体来说&#xff0c;对于一个 nn的矩阵 A[]&#xff0c;如果满足 则 AA 称为对角矩阵。对角矩阵通常表示为&am…...

初识R语言饼状图

目录 基础饼图 标签个性化 边界修改 密度条纹 边框颜色 基础饼图 rm(list ls())# Create Data Prop <- c(3,7,9,1,2) # Make the default Pie Plot P1 <- pie(Prop) dev.off() 标签个性化 P2 <-pie(Prop , labels c("Gr-A","Gr-B","…...

计算机技术系列博客——目录页(持续更新)

1.1 博客目录专栏 1.1.1 博客文章导航 计算机技术系列博客——目录页 1.1.2 网页资源整理 2.1 计算机科学理论 2.2 软件工程技术 2.2.1.1 编程语言 Java Java语言基础 (1) Java基础知识总结01——Java基础篇 (2) Java基础知识总结02——集合框架篇 (3) Java基础知识总结03—…...