最新消息 (2024年5月)
我们发布了新版本 Recommenders 1.2.0!
自上次发布以来有很多变化。我们对 Python 3.8 到 3.11 进行了全面测试(约 1800 个测试),许多算法的性能得到了提升,笔记本进行了审查,还有许多其他改进。
介绍
Recommenders 的目标是帮助研究人员、开发人员和爱好者在各种经典和最先进的推荐系统上进行原型设计、实验和生产。
Recommenders 是一个隶属于 Linux 基金会 AI 和数据的项目。
此代码库包含构建推荐系统的示例和最佳实践,以 Jupyter 笔记本的形式提供。这些示例详细介绍了我们在五个关键任务上的学习:
- 准备数据:为每种推荐算法准备和加载数据。
- 建模:使用各种经典和深度学习推荐算法(如交替最小二乘法(ALS)或极限深度因子分解机(xDeepFM))构建模型。
- 评估:用离线指标评估算法。
- 模型选择与优化:调整和优化推荐模型的超参数。
- 操作化:在 Azure 的生产环境中操作化模型。
在 recommenders 中提供了几种实用工具,以支持常见任务,例如加载不同算法期望格式的数据集、评估模型输出以及拆分训练/测试数据。还包括几种最先进算法的实现,供自学和在自己的应用程序中定制。参见 Recommenders 文档。
有关代码库的更详细概述,请参阅 wiki 页面上的文档。
有关推荐系统应用的实际场景,请参阅 scenarios。
入门指南
我们推荐使用 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 和实验功能)的更多信息,请参阅 安装指南。
除了核心包外,还提供了几个额外功能,包括:
[gpu]
:运行 GPU 模型所需。[spark]
:运行 Spark 模型所需。[dev]
:开发此仓库所需。[all]
:[gpu]
|[spark]
|[dev]
[experimental]
:未经过充分测试的模型和/或可能需要额外安装步骤的模型。
算法
下表列出了代码库中当前可用的推荐算法。在示例列中,笔记本链接为快速入门,展示算法的简易运行示例,或为深入解析,详细解释算法的数学和实现。
算法 | 类型 | 描述 | 示例 |
---|---|---|---|
交替最小二乘法 (ALS) | 协同过滤 | 用于大数据集显式或隐式反馈的矩阵分解算法,优化了可扩展性和分布式计算能力。它在 PySpark 环境中工作。 | 快速入门 / 深入解析 |
注意异步奇异值分解 (A2SVD)* | 协同过滤 | 基于序列的算法,旨在使用注意力机制捕捉用户的长期和短期偏好。它在 CPU/GPU 环境中工作。 | 快速入门 |
Cornac/贝叶斯个性化排序 (BPR) | 协同过滤 | 用于隐式反馈的矩阵分解算法,用于预测项目排名。它在 CPU 环境中工作。 | 深入解析 |
Cornac/双边变分自动编码器 (BiVAE) | 协同过滤 | 生成模型,用于双向数据(如用户-项目交互)。它在 CPU/GPU 环境中工作。 | 深入解析 |
卷积序列嵌入推荐 (Caser) | 协同过滤 | 基于卷积的算法,旨在捕捉用户的整体偏好和序列模式。它在 CPU/GPU 环境中工作。 | 快速入门 |
深度知识感知网络 (DKN)* | 基于内容的过滤 | 深度学习算法,结合知识图和文章嵌入,提供新闻或文章推荐。它在 CPU/GPU 环境中工作。 | 快速入门 / 深入解析 |
极限深度因子分解机 (xDeepFM)* | 协同过滤 | 基于深度学习的算法,用于隐式和显式反馈,具有用户/项目特征。它在 CPU/GPU 环境中工作。 | 快速入门 |
FastAI 嵌入点偏置 (FAST) | 协同过滤 | 通用算法,具有用户和项目的嵌入和偏置。它在 CPU/GPU 环境中工作。 | [快速入门](examples/00_quick_start/fastai_movielens |
算法 | MAP | nDCG@k | Precision@k |
--- | --- | --- | --- |
ALS | 0.004732 | 0.044239 | 0.048462 |
BiVAE | 0.146126 | 0.475077 | 0.411771 |
BPR | 0.132478 | 0.441997 | 0.388229 |
FastAI | 0.025503 | 0.147866 | 0.130329 |
LightGCN | 0.088526 | 0.419846 | 0.379626 |
NCF | 0.107720 | 0.396118 | 0.347296 |
SAR | 0.110591 | 0.382461 | 0.330753 |
SVD | 0.012873 | 0.095930 | 0.091198 |
贡献
本项目欢迎各种贡献和建议。在贡献之前,请参阅我们的贡献指南。
本项目遵循微软开源行为准则,以营造一个包容和激励的社区环境。
构建状态
这些测试是每晚构建的,计算异步测试。main
是我们的主分支,staging
是我们的开发分支。我们使用pytest来测试推荐系统中的Python工具,以及使用推荐系统笔记本执行器来测试笔记本。
有关测试管道的更多信息,请参见测试文档。
AzureML每晚构建状态
每晚构建测试在AzureML上每日运行。
参考文献
- 免费课程:M. González-Fierro,“推荐系统:实践入门”,LinkedIn Learning,2024年。链接在此。
- D. Li, J. Lian, L. Zhang, K. Ren, D. Lu, T. Wu, X. Xie,“推荐系统:前沿与实践”,Springer,北京,2024年。链接在此。
- A. Argyriou, M. González-Fierro 和 L. Zhang,“微软推荐系统:生产级推荐系统的最佳实践”,WWW 2020:国际万维网会议台北,2020年。在线可访问:https://dl.acm.org/doi/abs/10.1145/3366424.3382692
- S. Graham, J.K. Min, T. Wu,“微软推荐系统:加速推荐系统开发的工具”,RecSys '19:第13届ACM推荐系统会议论文集,2019年。在线可访问:https://dl.acm.org/doi/10.1145/3298689.3346967
- L. Zhang, T. Wu, X. Xie, A. Argyriou, M. González-Fierro 和 J. Lian,“大规模生产级推荐系统的构建”,ACM SIGKDD知识发现与数据挖掘会议2019(KDD 2019),2019年。