Month: June 2024

NRMS: 基于多头自注意力机制的神经新闻推荐系统NRMS: 基于多头自注意力机制的神经新闻推荐系统

在当今信息爆炸的时代,如何从海量的新闻中为用户推荐感兴趣的内容是一个重要的研究课题。本文将介绍一种基于神经网络的新闻推荐方法——NRMS(Neural News Recommendation with Multi-Head Self-Attention),该方法利用多头自注意力机制来有效地学习新闻和用户的表示。 NRMS模型简介 NRMS是一种基于内容的神经新闻推荐方法,其核心由新闻编码器和用户编码器两部分组成: NRMS的主要特点包括: 数据集介绍 为了快速训练和评估,本文使用了从MIND小型数据集中抽样的MINDdemo数据集,包含5000名用户的数据。MINDdemo数据集与MINDsmall和MINDlarge具有相同的文件格式。数据集分为训练集(MINDdemo_train)和验证集(MINDdemo_dev),每个集合包含新闻文件和用户行为文件。 新闻数据 新闻文件包含新闻ID、类别、子类别、标题、摘要、URL以及标题和摘要中的实体信息。每行代表一条新闻,格式如下: 用户行为数据 用户行为文件记录了用户的点击历史和展示新闻。每行代表一个展示实例,格式如下: 其中,点击历史是用户在该时间戳之前点击过的新闻ID列表,展示新闻是该次展示的新闻ID列表及其是否被点击的标签(0表示未点击,1表示点击)。 模型实现 接下来,我们将使用TensorFlow框架来实现NRMS模型,并在MINDdemo数据集上进行训练和评估。 环境准备 首先,我们需要导入必要的库和模块: 数据下载与准备 接下来,我们需要下载并准备MINDdemo数据集: 模型参数设置 我们需要设置模型的超参数: 这里我们设置了批次大小为32,训练轮数为5。其他重要参数包括: 模型训练 现在我们可以创建NRMS模型并开始训练: 训练过程中,模型会输出每个epoch的训练损失和验证集上的评估指标。 模型评估 训练完成后,我们可以在验证集上评估模型的性能: [...]

深度解析NPA:基于个性化注意力的神经新闻推荐模型深度解析NPA:基于个性化注意力的神经新闻推荐模型

在当今信息爆炸的时代,如何从海量新闻中为用户精准推荐感兴趣的内容,是一个重要而富有挑战性的问题。本文将为您详细介绍一种先进的新闻推荐模型 – NPA(Neural News Recommendation with Personalized Attention),即基于个性化注意力的神经新闻推荐模型。 NPA模型概述 NPA模型是一种基于内容的新闻推荐方法,由微软研究院于2019年提出。其核心思想是通过深度学习技术,同时建模新闻内容和用户兴趣,并引入个性化注意力机制来捕捉不同用户的兴趣差异。 NPA模型的主要特点包括: 下面我们将深入剖析NPA模型的各个组成部分。 新闻表示模块 新闻表示模块的目标是将新闻内容转化为低维稠密向量。NPA模型主要利用新闻标题来学习新闻表示,具体步骤如下: CNN的使用使得模型能够捕捉词序信息和短语级别的语义。相比RNN,CNN的并行性更好,训练速度更快。 用户表示模块 用户表示模块的目标是基于用户的历史行为,学习用户的兴趣表示。NPA模型的做法是: 注意力机制的引入使得模型能够区分不同历史新闻的重要性,从而更精准地刻画用户兴趣。 个性化注意力机制 NPA模型的一大创新是引入了两级个性化注意力机制: 词级别个性化注意力 在新闻表示模块中,对新闻标题的每个词赋予不同的注意力权重。关键是这个注意力权重不仅与词本身有关,还与用户向量相关。具体计算公式如下: $$a_i = softmax(v^T tanh(W_1 e_i + W_2 u))$$ [...]

NCF:基于神经网络的协同过滤算法NCF:基于神经网络的协同过滤算法

引言 神经网络协同过滤 (NCF) 是一种将矩阵分解与多层感知机相结合的推荐算法,能够有效地学习用户和物品之间的复杂交互关系。本篇文章将以 ncf_movielens.ipynb 示例为例,详细介绍如何使用 Recommenders 工具包实现 NCF 算法,并对模型性能进行评估。 数据准备 本示例使用经典的 MovieLens 数据集,该数据集包含了用户对电影的评分信息。首先,使用 recommenders.datasets.movielens 模块加载数据集,并指定使用的数据集大小和数据格式。 接下来,使用 python_chrono_split 函数按照时间顺序将数据集划分为训练集和测试集,划分比例为 75:25。 为了避免冷启动问题,将测试集中未出现在训练集中的用户和物品过滤掉。 模型构建 使用 recommenders.models.ncf.ncf_singlenode 模块中的 NCF 类构建 NCF 模型。 在 [...]

NAML:基于注意力机制的多视角新闻推荐算法NAML:基于注意力机制的多视角新闻推荐算法

引言 在信息过载的时代,个性化新闻推荐显得尤为重要。为了更精准地捕捉用户的兴趣,NAML 算法利用多视角学习,从新闻标题、正文、类别和子类别等多个角度学习新闻表示,并结合用户历史行为学习用户表示,从而实现更精准的新闻推荐。 NAML 算法原理 NAML 算法的核心思想是利用注意力机制,从多视角学习新闻表示和用户表示,并根据两者之间的匹配程度预测用户点击新闻的概率。具体来说,NAML 算法包含以下几个步骤: MIND 数据集 MIND 数据集是一个大规模英文新闻数据集,包含了 1,000,000 用户、161,013 篇新闻文章和 15,777,377 条点击日志。每篇新闻文章包含丰富的文本内容,包括标题、摘要、正文、类别和实体。每条点击日志包含用户的点击事件、未点击事件以及该用户在该次点击之前的历史点击行为。 本示例使用 MIND 数据集的子集 MIND demo,包含 5,000 用户、9,432 篇新闻文章和 6,134 条点击日志。由于 MIND 数据集没有发布新闻正文,本示例使用新闻摘要代替正文。 NAML [...]

LSTUR:兼顾长期和短期兴趣的新闻推荐算法LSTUR:兼顾长期和短期兴趣的新闻推荐算法

引言 在新闻推荐领域,准确捕捉用户的兴趣至关重要。用户的兴趣可以分为长期兴趣和短期兴趣两类。长期兴趣指的是用户长期以来稳定的偏好,而短期兴趣则指的是用户在短期内表现出的兴趣变化。LSTUR 算法结合了用户的长期兴趣和短期兴趣,能够更精准地为用户推荐新闻。 LSTUR 算法原理 LSTUR 算法的核心思想是分别学习用户的长期表示和短期表示,并将两者融合,得到最终的用户表示。具体来说,LSTUR 算法包含以下几个步骤: MIND 数据集 MIND 数据集是一个大规模英文新闻数据集,包含了 1,000,000 用户、161,013 篇新闻文章和 15,777,377 条点击日志。每篇新闻文章包含丰富的文本内容,包括标题、摘要、正文、类别和实体。每条点击日志包含用户的点击事件、未点击事件以及该用户在该次点击之前的历史点击行为。 本示例使用 MIND 数据集的子集 MIND demo,包含 5,000 用户、9,432 篇新闻文章和 6,134 条点击日志。 LSTUR 模型训练 首先,需要下载 [...]

LightGBM:电商广告点击率预估利器LightGBM:电商广告点击率预估利器

引言 在电商平台中,广告点击率 (CTR) 预估对于广告投放效果至关重要。准确预测用户点击广告的概率,可以帮助广告主优化广告投放策略,提升广告收益。LightGBM 作为一种高效的梯度提升决策树算法,在 CTR 预估任务中表现出色。本篇文章将以 lightgbm_tinycriteo.ipynb 示例为例,介绍如何使用 LightGBM 训练 CTR 预估模型,并探讨模型优化策略。 LightGBM 简介 LightGBM 是微软开源的一种梯度提升框架,它使用基于树的学习算法,并针对分布式计算和高效率进行了优化。LightGBM 具有以下优势: 数据准备 本示例使用 Criteo 数据集,该数据集是 CTR 预估领域的经典基准数据集。原始数据集包含 39 个特征,其中 13 个为数值特征 (I1-I13),26 个为类别特征 [...]

GeoIMC:融合几何信息的电影推荐算法GeoIMC:融合几何信息的电影推荐算法

引言 推荐系统领域中,矩阵分解技术是协同过滤算法的重要分支。传统的矩阵分解方法通常只考虑用户和物品之间的交互信息,而忽略了用户和物品本身的特征。GeoIMC 算法将用户和物品的特征信息融入到矩阵分解过程中,并利用黎曼优化方法求解模型参数,从而提升推荐效果。 GeoIMC 算法原理 GeoIMC 算法基于 Jawanpuria 等人 (2019) 的研究成果,将用户和物品的特征信息融入到矩阵分解过程中。以 MovieLens-100K (ML100K) 数据集为例,假设 $X \in R^{m \times d_1}$ 和 $Z \in R^{n \times d_2}$ 分别表示用户和电影的特征矩阵,$M \in R^{m \times n}$ [...]

FastAI:快速构建电影推荐系统FastAI:快速构建电影推荐系统

引言 FastAI 作为一个易于使用且功能强大的深度学习库,为推荐系统的构建提供了便捷的工具。本篇文章将以 fastai_movielens.ipynb 示例为例,介绍如何利用 FastAI 框架,快速构建一个基于协同过滤的电影推荐系统,并对模型性能进行评估。 数据准备 本示例使用经典的 MovieLens 数据集,该数据集包含用户对电影的评分信息。首先,使用 recommenders.datasets.movielens 模块加载数据集,并确保用户 ID 和电影 ID 以字符串类型加载,避免与嵌入 ID 混淆。 接下来,使用 python_stratified_split 函数将数据集划分为训练集/验证集和测试集,划分比例为 75:25。 模型训练 FastAI 提供了 collab_learner 函数,用于快速构建协同过滤模型。默认情况下,collab_learner 使用 EmbeddingDotBias [...]

深度知识感知网络:DKN 新闻推荐算法解析深度知识感知网络:DKN 新闻推荐算法解析

引言 在信息爆炸的时代,如何从海量新闻中为用户推荐感兴趣的内容,成为了推荐系统研究的热点之一。传统的基于 ID 的协同过滤算法往往难以捕捉新闻内容的语义信息,而基于内容的推荐算法则需要人工提取新闻特征,效率低下。深度知识感知网络 (DKN) 算法应运而生,它结合了深度学习和知识图谱的优势,能够自动学习新闻内容的语义表示,并利用知识图谱中的实体信息提升推荐效果。 DKN 算法原理 DKN 算法的核心思想是将新闻内容和知识图谱信息融合到一个深度学习模型中,通过联合学习语义级和知识级的新闻表示,实现更精准的推荐。具体来说,DKN 算法主要包含以下几个步骤: MIND 数据集 MIND 数据集是一个大规模英文新闻数据集,包含了 1,000,000 用户、161,013 篇新闻文章和 15,777,377 条点击日志。每篇新闻文章包含丰富的文本内容,包括标题、摘要、正文、类别和实体。每条点击日志包含用户的点击事件、未点击事件以及该用户在该次点击之前的历史点击行为。 本示例使用 MIND 数据集的子集 MIND demo,包含 500 用户、9,432 篇新闻文章和 6,134 条点击日志。 [...]

基于 PySpark 的电影推荐系统:深入解析 ALS 算法基于 PySpark 的电影推荐系统:深入解析 ALS 算法

引言 协同过滤算法是推荐系统中应用最广泛的算法之一,而交替最小二乘法 (ALS) 则是协同过滤算法中的一种经典算法。本篇文章将以微软 Recommenders 工具中的 als_movielens.ipynb 示例为例,详细介绍如何使用 PySpark 实现基于 ALS 算法的电影推荐系统,并对模型性能进行评估。 数据准备 本示例使用经典的 MovieLens 数据集,该数据集包含了用户对电影的评分信息。首先,需要使用 recommenders.datasets.movielens 模块加载数据集,并指定使用的数据集大小和数据格式。 接下来,使用 spark_random_split 函数将数据集划分为训练集和测试集,划分比例为 75:25。 模型构建 使用 PySpark MLlib 中的 ALS 模块构建 ALS [...]