什么是新的(2025年4月)
我们达到了20,000星!
我们很高兴地宣布,我们已经在Github上达到了20,000颗星!感谢您对recommenders项目的支持和贡献。我们很高兴能在您的帮助下继续构建和改进该项目。
查看发布recommenders 1.2.1!
由于依赖关系,提高了安全性,审查了笔记本电脑和库,我们修复了许多错误。
介绍
recommenders目标是协助研究人员,开发人员和爱好者进行原型制作,进行实验,并为一系列经典和最先进的推荐系统提供生产。
recommenders是AI和数据基础下的一个项目。
该存储库包含用于构建推荐系统的示例和最佳实践,作为Jupyter笔记本电脑。示例详细介绍了我们对五个关键任务的学习:
- 准备数据:为每种建议算法准备和加载数据。
- 模型:使用各种经典和深度学习建议算法(例如交替的最小二乘(ALS)或极端深度分解机器(XDEEPFM))建立模型。
- 评估:评估具有离线指标的算法。
- 模型选择和优化:调整和优化推荐模型的超参数。
- 操作:在生产环境中在Azure上操作模型。
recommenders人中提供了几种公用事业,以支持常见任务,例如以不同算法预期的格式加载数据集,评估模型输出以及拆分培训/测试数据。包括几种最先进算法的实现用于您自己的应用程序中的自学和自定义。请参阅recommenders文档。
有关存储库的更详细概述,请参阅Wiki页面上的文档。
有关应用推荐系统的某些实际场景,请参见方案。
入门
我们推荐Conda进行环境管理和VS开发代码。要安装recommenders包并在Linux/WSL上运行示例笔记本:
recommenders package. It can run all the CPU notebooks.
pip install recommenders
# 4. create a Jupyter kernel
python -m ipykernel install –user –name <environment_name> –display-name <kernel_name>
# 5. Clone this repo within VSCode or using command line:
git clone https://gi*thu*b.*com/recommenders-team/ recommenders .git
# 6. Within VSCode:
# a. Open a notebook, e.g., examples/00_quick_start/sar_movielens.ipynb;
# b. Select Jupyter kernel <kernel_name>;
# c. Run the notebook.\”>
# 1. Install gcc if it is not installed already. On Ubuntu, this could done by using the command # sudo apt install gcc # 2. Create and activate a new conda environment conda create -n < environment_name > python=3.9 conda activate < environment_name > # 3. Install the core recommenders package. It can run all the CPU notebooks. pip install recommenders # 4. create a Jupyter kernel python -m ipykernel install --user --name < environment_name > --display-name < kernel_name > # 5. Clone this repo within VSCode or using command line: git clone https://gi*thu*b.*com/recommenders-team/ recommenders .git # 6. Within VSCode: # a. Open a notebook, e.g., examples/00_quick_start/sar_movielens.ipynb; # b. Select Jupyter kernel <kernel_name>; # c. Run the notebook.
有关其他平台上设置的更多信息(例如,Windows和MacOS)以及不同的配置(例如GPU,SPARK和实验功能),请参见“设置指南”。
除核心包外,还提供了几个附加功能,包括:
- [GPU]:运行GPU模型所需。
- [SPARK]:运行火花模型所需。
- [DEV]:回购需要开发。
- [all]:[GPU] | [SPARK] | [DEV]
- [实验]:未经彻底测试和/或可能需要其他安装步骤的模型。
算法
下表列出了存储库中当前可用的建议算法。笔记本在示例列下链接为快速启动,展示了易于运行的算法示例或深入潜水,并详细解释了该算法的数学和实现。
| 算法 | 类型 | 描述 | 例子 |
|---|---|---|---|
| 交替的最小二乘(ALS) | 协作过滤 | 矩阵分解算法用于大型数据集中的显式或隐式反馈,优化了可扩展性和分布式计算能力。它在Pyspark环境中起作用。 | 快速入门 /深度潜水 |
| 专注于异步奇异值分解(A2SVD) * | 协作过滤 | 基于顺序的算法,旨在使用注意机制捕获长期和短期用户偏好。它在CPU/GPU环境中起作用。 | 快速开始 |
| 玉米/贝叶斯个性化排名(BPR) | 协作过滤 | 用于预测用隐式反馈的项目排名的矩阵分解算法。它在CPU环境中起作用。 | 深入潜水 |
| 玉米/双边自动编码器(Bivae) | 协作过滤 | 二元数据的生成模型(例如,用户项目交互)。它在CPU/GPU环境中起作用。 | 深入潜水 |
| 卷积序列嵌入建议(Caser) | 协作过滤 | 基于卷积的算法,旨在捕获用户的一般偏好和顺序模式。它在CPU/GPU环境中起作用。 | 快速开始 |
| 深度知识感知网络(DKN) * | 基于内容的过滤 | 深度学习算法结合了知识图和文章嵌入,以提供新闻或文章建议。它在CPU/GPU环境中起作用。 | 快速入门 /深度潜水 |
| 极端深度分解机(XDEEPFM) * | 协作过滤 | 基于深度学习的算法,用于具有用户/项目功能的隐式和明确反馈。它在CPU/GPU环境中起作用。 | 快速开始 |
| 嵌入点偏差 | 协作过滤 | 通用算法具有嵌入式和偏见的用户和项目。它在CPU/GPU环境中起作用。 | 快速开始 |
| LightFM/分解机 | 协作过滤 | 分解机器算法,用于隐式和显式反馈。它在CPU环境中起作用。 | 快速开始 |
| LightGBM/梯度提升树* | 基于内容的过滤 | 在基于内容的问题中,用于快速训练和低内存使用的梯度增强树算法。它在CPU/GPU/PYSPARK环境中起作用。 | 快速启动CPU / Deep Dive in Pyspark |
| Lightgcn | 协作过滤 | 深度学习算法简化了GCN的设计,以预测隐式反馈。它在CPU/GPU环境中起作用。 | 深入潜水 |
| geoimc * | 协作过滤 | 矩阵完成算法,使用Riemannian共轭梯度优化考虑用户和项目功能,并遵循几何方法。它在CPU环境中起作用。 | 快速开始 |
| gru | 协作过滤 | 基于顺序的算法旨在使用复发性神经网络捕获长期和短期用户偏好。它在CPU/GPU环境中起作用。 | 快速开始 |
| 多项式VAE | 协作过滤 | 用于预测用户/项目交互的生成模型。它在CPU/GPU环境中起作用。 | 深入潜水 |
| 具有长期和短期用户表示(LSTUR) *的神经建议* | 基于内容的过滤 | 神经建议算法,用于推荐具有长期和短期用户兴趣建模的新闻文章。它在CPU/GPU环境中起作用。 | 快速开始 |
| 细心的多视图学习(NAML)的神经建议* | 基于内容的过滤 | 神经建议算法,用于推荐细心的多视图学习新闻文章。它在CPU/GPU环境中起作用。 | 快速开始 |
| 神经协作过滤(NCF) | 协作过滤 | 深度学习算法具有增强性能的用户/项目隐式反馈。它在CPU/GPU环境中起作用。 | 快速入门 /深度潜水 |
| 具有个性化注意的神经建议(NPA) * | 基于内容的过滤 | 神经建议算法,用于推荐具有个性化注意网络的新闻文章。它在CPU/GPU环境中起作用。 | 快速开始 |
| 多头自我注意(NRMS)的神经建议* | 基于内容的过滤 | 神经推荐算法,用于推荐具有多头自我注意的新闻文章。它在CPU/GPU环境中起作用。 | 快速开始 |
| 下一个项目推荐(NextItnet) | 协作过滤 | 基于扩张的卷积和剩余网络的算法,旨在捕获顺序模式。它考虑了用户/项目交互和功能。它在CPU/GPU环境中起作用。 | 快速开始 |
| 受限的玻尔兹曼机器(RBM) | 协作过滤 | 基于神经网络的算法,用于学习明确或隐式用户/项目反馈的潜在概率分布。它在CPU/GPU环境中起作用。 | 快速入门 /深度潜水 |
| Riemannian低级矩阵完成(RLRMC) * | 协作过滤 | 使用Riemannian共轭梯度优化的矩阵分解算法,并使用少量的存储器消耗来预测用户/项目交互。它在CPU环境中起作用。 | 快速开始 |
| 简单算法供推荐(SAR) * | 协作过滤 | 基于相似性的算法,用于隐式用户/项目反馈。它在CPU环境中起作用。 | 快速入门 /深度潜水 |
| 自我牵键的顺序推荐(SASREC) | 协作过滤 | 基于变压器的算法,用于顺序建议。它在CPU/GPU环境中起作用。 | 快速开始 |
| 短期和长期偏好综合推荐人(SLI-REC) * | 协作过滤 | 基于顺序的算法,旨在使用注意机制,时间吸引的控制器和内容感知的控制器捕获长期和短期用户偏好。它在CPU/GPU环境中起作用。 | 快速开始 |
| 多感知的顺序用户建模(sum) * | 协作过滤 | 增强的基于内存网络的顺序用户模型,旨在捕获用户的多重兴趣。它在CPU/GPU环境中起作用。 | 快速开始 |
| 通过个性化变压器(SSEPT)进行顺序推荐 | 协作过滤 | 基于变压器的算法,用于用户嵌入的顺序推荐。它在CPU/GPU环境中起作用。 | 快速开始 |
| 标准vae | 协作过滤 | 用于预测用户/项目交互的生成模型。它在CPU/GPU环境中起作用。 | 深入潜水 |
| 惊喜/单数值分解(SVD) | 协作过滤 | 用于预测小数据集中显式评级反馈的矩阵分解算法。它在CPU/GPU环境中起作用。 | 深入潜水 |
| 术语频率 – 逆文档频率(TF -IDF) | 基于内容的过滤 | 简单的基于相似性的算法,用于使用文本数据集的基于内容的建议。它在CPU环境中起作用。 | 快速开始 |
| Vowpal Wabbit(VW) * | 基于内容的过滤 | 快速的在线学习算法,非常适合用户功能 /上下文不断变化的方案。它使用CPU进行在线学习。 | 深入潜水 |
| 宽而深 | 协作过滤 | 深度学习算法可以记住特征交互并概括用户功能。它在CPU/GPU环境中起作用。 | 快速开始 |
| XLEARN/分解机(FM)和现场感知FM(FFM) | 协作过滤 | 快速和内存有效的算法可预测具有用户/项目功能的标签。它在CPU/GPU环境中起作用。 | 深入潜水 |
注意: *指示由Microsoft发明/贡献的算法。
独立或孵化算法和实用程序是贡献文件夹的候选者。这将容纳可能不容易适合核心存储库或需要时间来重构或成熟代码并添加必要的测试的贡献。
| 算法 | 类型 | 描述 | 例子 |
|---|---|---|---|
| sarplus * | 协作过滤 | 优化SAR的SAR SPARK | 快速开始 |
算法比较
我们提供了一个基准笔记本,以说明如何评估和比较不同的算法。在此笔记本中,使用分层分配的Movielens数据集将其分为75/25的训练/测试集。使用下面的每种协作过滤算法对推荐模型进行了训练。我们利用此处文献中报道的经验参数值。对于排名指标,我们使用k = 10(推荐的十个项目)。我们在具有4个CPU,30GB RAM和1 GPU GEFORCE GTX 1660 Ti的机器上进行比较,具有6GB的内存。 Spark ALS以本地独立模式运行。在此表中,我们显示了Movielens 100K的结果,运行了15个时期的算法。
| 算法 | 地图 | ndcg@k | precision@k | 回想@k | RMSE | 梅 | r 2 | 解释的差异 |
|---|---|---|---|---|---|---|---|---|
| ALS | 0.004732 | 0.044239 | 0.048462 | 0.017796 | 0.965038 | 0.753001 | 0.255647 | 0.251648 |
| Bivae | 0.146126 | 0.475077 | 0.411771 | 0.219145 | N/A。 | N/A。 | N/A。 | N/A。 |
| bpr | 0.132478 | 0.441997 | 0.388229 | 0.212522 | N/A。 | N/A。 | N/A。 | N/A。 |
| 胚胎 | 0.018954 | 0.117810 | 0.104242 | 0.042450 | 0.992760 | 0.776040 | 0.223344 | 0.223393 |
| Lightgcn | 0.088526 | 0.419846 | 0.379626 | 0.144336 | N/A。 | N/A。 | N/A。 | N/A。 |
| NCF | 0.107720 | 0.396118 | 0.347296 | 0.180775 | N/A。 | N/A。 | N/A。 | N/A。 |
| sar | 0.110591 | 0.382461 | 0.330753 | 0.176385 | 1.253805 | 1.048484 | -0.569363 | 0.030474 |
| SVD | 0.012873 | 0.095930 | 0.091198 | 0.032783 | 0.938681 | 0.742690 | 0.291967 | 0.291971 |
贡献
该项目欢迎贡献和建议。在贡献之前,请参阅我们的贡献指南。
该项目遵守此行为守则,以促进一个欢迎和鼓舞人心的社区。
建立状态
这些测试是夜间构建,它计算异步测试。主要是我们的主要分支,分期是我们的开发分支。我们使用PYTEST在recommenders测试Python实用程序,并为笔记本电脑recommenders笔记本执行程序进行测试。
有关测试管道的更多信息,请参阅测试文档。
Azureml夜间建造状态
夜间建造测试每天在Azureml上进行。
| 构建类型 | 分支 | 地位 | 分支 | 地位 | |
|---|---|---|---|---|---|
| Linux CPU | 主要的 | 舞台 | |||
| Linux GPU | 主要的 | 舞台 | |||
| Linux火花 | 主要的 | 舞台 |
参考
- 免费课程: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 recommenders L.
- S. Graham,JK Min,T。Wu,“ Microsoft recommenders :加速发展推荐系统的工具”, Recsys \’19:2019年第13届ACM会议会议,2019年。
- L. Zhang,T。Wu,X。Xie,A。Argyriou,M。González-Fierro和J. Lian,“规模规模建筑生产的建议系统”, ACM SIGKDD知识发现与数据挖掘会议2019年(KDD 2019) ,2019年,2019年,2019年。
