引言
在信息爆炸的时代,人们面对海量数据往往无所适从。推荐系统应运而生,它通过分析用户的历史行为和偏好,为用户提供个性化的推荐内容,帮助用户快速找到自己感兴趣的信息。从电商平台的商品推荐,到社交媒体的内容推送,再到音乐软件的歌曲推荐,推荐系统已经渗透到我们生活的方方面面。
微软开源工具 Recommenders 正是为构建、实验和部署各种经典和先进的推荐系统而生。它提供了一系列 Jupyter Notebook 示例和最佳实践,涵盖了推荐系统构建的五个关键任务:
- 数据准备:为不同的推荐算法准备和加载数据。
- 模型构建:使用各种经典和深度学习推荐算法构建模型,例如交替最小二乘法(ALS)或极深因子分解机(xDeepFM)。
- 模型评估:使用离线指标评估算法性能。
- 模型选择和优化:调整和优化推荐模型的超参数。
- 模型部署:在 Azure 生产环境中部署模型。
Recommenders 提供了多个实用工具,用于支持加载数据集、评估模型输出和划分训练/测试数据等常见任务。它还包含了一些先进算法的实现,供用户自学和定制自己的应用程序。
算法概览
Recommenders 提供了丰富的推荐算法,涵盖了协同过滤、基于内容的过滤等多种类型,具体如下表所示:
算法 | 类型 | 描述 | 示例 |
---|---|---|---|
交替最小二乘法 (ALS) | 协同过滤 | 适用于大型数据集的显式或隐式反馈的矩阵分解算法,针对可扩展性和分布式计算能力进行了优化。它在 PySpark 环境中工作。 | 快速入门 / 深入探讨 |
注意力异步奇异值分解 (A2SVD) | 协同过滤 | 基于序列的算法,旨在使用注意力机制捕获用户的长期和短期偏好。它在 CPU/GPU 环境中工作。 | 快速入门 |
… | … | … | … |
注意: 表格中只列举了部分算法,完整列表请参考 README.md。
算法比较
为了方便用户比较不同算法的性能,Recommenders 提供了一个 基准测试 Notebook。该 Notebook 使用 MovieLens 数据集,以 75/25 的比例将其划分为训练集和测试集,并使用多个协同过滤算法训练推荐模型。
下表展示了在 Movielens 100k 数据集上运行 15 个 epoch 后,不同算法的评估指标结果:
算法 | MAP | nDCG@k | Precision@k | Recall@k | RMSE | MAE | R2 | Explained Variance |
---|---|---|---|---|---|---|---|---|
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 |
… | … | … | … | … | … | … | … |
注意: 表格中只列举了部分算法的评估结果,完整列表请参考 README.md。
总结
微软开源工具 Recommenders 为研究人员、开发者和爱好者提供了一个强大的平台,可以快速构建、实验和部署各种经典和先进的推荐系统。它提供了丰富的算法、示例和最佳实践,并且易于使用和扩展,是构建高性能推荐系统的理想选择。
参考文献
- D. Li, J. Lian, L. Zhang, K. Ren, D. Lu, T. Wu, X. Xie, "Recommender Systems: Frontiers and Practices", Springer, Beijing, 2024. 链接.
- A. Argyriou, M. González-Fierro, and L. Zhang, "Microsoft Recommenders: Best Practices for Production-Ready Recommendation Systems", WWW 2020: International World Wide Web Conference Taipei, 2020. 链接
- … | … | … |
注意: 以上只列举了部分参考文献,完整列表请参考 README.md。