Recommenders 是一个旨在帮助研究人员、开发者和爱好者快速构建和部署各种推荐系统的项目。该项目隶属于 Linux Foundation of AI and Data,提供了丰富的 Jupyter Notebook 示例和最佳实践,涵盖了推荐系统的五个关键任务:数据准备、模型构建、算法评估、模型选择与优化,以及模型的生产化部署。
友情链接:ACEJoy
最新动态(2024年5月)
我们发布了新版本 Recommenders 1.2.0。此次更新包含大量改进,如对 Python 3.8 至 3.11 的全面测试(大约 1800 个测试)、多种算法性能的提升、笔记本的审查和许多其他改进。
项目简介
Recommenders 项目提供了构建推荐系统的示例和最佳实践,主要通过 Jupyter Notebooks 详细展示了以下五个关键任务:
- 数据准备:为每个推荐算法准备和加载数据。
- 模型构建:使用多种经典和深度学习推荐算法构建模型,如交替最小二乘法(ALS)或极限深度因子分解机(xDeepFM)。
- 算法评估:使用离线指标评估算法。
- 模型选择与优化:调优和优化推荐模型的超参数。
- 模型生产化部署:在 Azure 上将模型部署到生产环境。
此外,Recommenders 库还提供了多种实用工具,支持常见任务如加载数据集、评估模型输出和分割训练/测试数据。库中还包含了一些最先进的算法实现,供学习和在实际应用中定制。
快速开始
我们推荐使用 conda 进行环境管理,并使用 VS Code 进行开发。以下是在 Linux/WSL 上安装 Recommenders 包并运行示例笔记本的步骤:
# 1. 安装 gcc(如果尚未安装)。在 Ubuntu 上,可以使用以下命令:
# sudo apt install gcc
# 2. 创建并激活新的 conda 环境
conda create -n <environment_name> python=3.9
conda activate <environment_name>
# 3. 安装 Recommenders 核心包。它可以运行所有 CPU 笔记本。
pip install recommenders
# 4. 创建一个 Jupyter 内核
python -m ipykernel install --user --name <environment_name> --display-name <kernel_name>
# 5. 在 VSCode 中或使用命令行克隆此仓库:
git clone https://github.com/recommenders-team/recommenders.git
# 6. 在 VSCode 中:
# a. 打开一个笔记本,例如 examples/00_quick_start/sar_movielens.ipynb;
# b. 选择 Jupyter 内核 <kernel_name>;
# c. 运行笔记本。
关于在其他平台(如 Windows 和 macOS)上的安装和不同配置(如 GPU、Spark 和实验特性)的更多信息,请参阅 Setup Guide。
除了核心包,Recommenders 还提供了几个额外的包,包括:
[gpu]
:用于运行 GPU 模型。[spark]
:用于运行 Spark 模型。[dev]
:用于仓库开发。[all]
:包含[gpu]
、[spark]
和[dev]
。[experimental]
:包含未经过充分测试和/或可能需要额外安装步骤的模型。
支持的算法
Recommenders 库目前支持多种推荐算法,以下是部分算法的简介及其示例:
算法 | 类型 | 描述 | 示例 |
---|---|---|---|
交替最小二乘法 (ALS) | 协同过滤 | 针对显式或隐式反馈的大规模数据集的矩阵分解算法,适用于 PySpark 环境。 | 快速开始 / 深入探讨 |
——- | —— | —— | —— |
注意力异步奇异值分解 (A2SVD) | 协同过滤 | 基于序列的算法,使用注意力机制捕捉用户的长短期偏好,适用于 CPU/GPU 环境。 | 快速开始 |
Cornac/Bayesian Personalized Ranking (BPR) | 协同过滤 | 用于预测隐式反馈的矩阵分解算法,适用于 CPU 环境。 | 深入探讨 |
Cornac/Bilateral Variational Autoencoder (BiVAE) | 协同过滤 | 用于二元数据(如用户-物品交互)的生成模型,适用于 CPU/GPU 环境。 | 深入探讨 |
卷积序列嵌入推荐 (Caser) | 协同过滤 | 基于卷积的算法,旨在捕捉用户的总体偏好和序列模式,适用于 CPU/GPU 环境。 | 快速开始 |
深度知识感知网络 (DKN) | 内容过滤 | 结合知识图谱和文章嵌入的深度学习算法,用于新闻或文章推荐,适用于 CPU/GPU 环境。 | 快速开始 / 深入探讨 |
极限深度因子分解机 (xDeepFM) | 协同过滤 | 用于隐式和显式反馈的深度学习算法,适用于 CPU/GPU 环境。 | 快速开始 |
FastAI 嵌入点偏差 (FAST) | 协同过滤 | 通用算法,使用用户和物品的嵌入和偏差,适用于 CPU/GPU 环境。 | 快速开始 |
LightFM/因子分解机 | 协同过滤 | 适用于隐式和显式反馈的因子分解机算法,适用于 CPU 环境。 | 快速开始 |
LightGBM/梯度提升树 | 内容过滤 | 适用于内容过滤问题的梯度提升树算法,具有快速训练和低内存使用的特点,适用于 CPU/GPU/PySpark 环境。 | CPU 快速开始 / PySpark 深入探讨 |
LightGCN | 协同过滤 | 简化的图卷积网络设计,用于预测隐式反馈,适用于 CPU/GPU 环境。 | 深入探讨 |
GeoIMC | 协同过滤 | 利用黎曼共轭梯度优化的几何方法进行矩阵补全算法,适用于 CPU 环境。 | 快速开始 |
GRU | 协同过滤 | 基于序列的算法,使用递归神经网络捕捉用户的长短期偏好,适用于 CPU/GPU 环境。 | 快速开始 |
多项式 VAE | 协同过滤 | 用于预测用户/物品交互的生成模型,适用于 CPU/GPU 环境。 | 深入探讨 |
结束语
Recommenders 库为开发推荐系统提供了丰富的资源和工具,无论是初学者还是有经验的开发者都能从中受益。通过详细的文档和多种示例,你可以快速上手并在不同的应用场景中实现推荐系统。如果你对推荐系统感兴趣,建议你深入探索 Recommenders 库中的各个示例,并根据自己的需求进行定制和扩展。
进一步学习和支持
文档和资源
Recommenders 提供了详细的文档和资源,帮助你更好地理解和使用该库:
社区和支持
Recommenders 项目由一个活跃的社区支持,你可以通过以下方式获取帮助或参与贡献:
- 加入 Slack 社区:与其他用户和开发者交流,获取实时帮助。
- GitHub 讨论:在项目的讨论区提出问题、分享经验或讨论改进建议。
- 贡献代码:如果你有兴趣为项目做出贡献,可以查看贡献指南,了解如何提交代码、报告问题或改进文档。
安装和环境配置
为了方便开发和环境管理,Recommenders 推荐使用 conda。以下是关于环境配置的一些重要提示:
- 核心包:
pip install recommenders
安装核心包,适用于大多数 CPU 环境。 - 额外包:
[gpu]
:pip install recommenders[gpu]
,适用于需要 GPU 支持的模型。[spark]
:pip install recommenders[spark]
,适用于需要 Spark 支持的模型。[dev]
:pip install recommenders[dev]
,适用于开发和测试。[all]
:pip install recommenders[all]
,包含以上所有额外功能。[experimental]
:pip install recommenders[experimental]
,包含实验性模型和功能。
示例运行
以下是一个快速示例,展示如何使用 Recommenders 运行一个 Jupyter Notebook:
- 安装依赖:
# 安装 gcc(如果尚未安装) sudo apt install gcc # 创建并激活新的 conda 环境 conda create -n recommenders_env python=3.9 conda activate recommenders_env # 安装 Recommenders 核心包 pip install recommenders # 创建 Jupyter 内核 python -m ipykernel install --user --name recommenders_env --display-name "Recommenders Env"
- 克隆仓库:
git clone https://github.com/recommenders-team/recommenders.git
- 运行 Jupyter Notebook:
- 打开 VS Code,加载克隆的仓库。
- 选择一个示例笔记本,如
examples/00_quick_start/sar_movielens.ipynb
。 - 选择 Jupyter 内核 “Recommenders Env”。
- 运行笔记本,体验推荐系统的构建过程。
通过这些步骤,你可以轻松上手 Recommenders 库,开始构建和优化自己的推荐系统。希望这篇文章能帮助你更好地理解和使用 Recommenders 库,祝你在推荐系统的探索之旅中取得成功!