用于隐式数据集的快速 Python 协同过滤库。
本项目为隐式反馈数据集提供了几种流行推荐算法的快速 Python 实现:
交替最小二乘法 (ALS),基于论文 Collaborative Filtering for Implicit Feedback Datasets 和 Applications of the Conjugate Gradient Method for Implicit Feedback Collaborative Filtering。
贝叶斯个性化排序 (BPR),基于论文 Bayesian Personalized Ranking。
逻辑矩阵分解 (Logistic Matrix Factorization),基于论文 Logistic Matrix Factorization。
物品-物品最近邻模型,使用余弦相似度、TFIDF 或 BM25 作为距离度量。
所有模型都具备多线程训练例程,利用 Cython 和 OpenMP 在所有可用 CPU 核心上并行拟合模型。此外,ALS 和 BPR 模型还拥有自定义的 CUDA 内核,支持在兼容的 GPU 上进行拟合。Implicit 还可以使用近似最近邻库,如 Annoy、NMSLIB 和 Faiss,以加速推荐生成。
可以通过 PyPI 安装 Implicit:
pip install implicit
使用 pip 安装将在 x86_64 架构的 Linux、Windows 和 OSX 系统上使用预编译的二进制 wheel 包。这些 wheel 包在 Linux 上包含 GPU 支持。
也可以通过 conda 安装 Implicit:
# 仅 CPU 版本
conda install -c conda-forge implicit
# CPU+GPU 版本
conda install -c conda-forge implicit implicit-proc=*=gpu
import implicit
# 初始化模型
model = implicit.als.AlternatingLeastSquares(factors=50)
# 在用户/物品/置信度权重的稀疏矩阵上训练模型
model.fit(user_item_data)
# 为用户推荐物品
recommendations = model.recommend(userid, user_item_data[userid])
# 查找相关物品
related = model.similar_items(itemid)
examples 文件夹中有一个程序,展示了如何使用该库在 last.fm 数据集上计算相似艺术家。
更多信息请参阅文档。
以下博客文章描述了本库背后的算法:
还有一些其他关于使用 Implicit 构建推荐系统的文章:
* H&M 个性化时尚推荐 Kaggle 竞赛
* Yandex Cup 2022: 点赞预测
* 使用 Google BigQuery 和 implicit 库推荐 GitHub 仓库
* 隐式矩阵分解简介:使用 Sketchfab 模型的经典 ALS
* 隐式反馈推荐系统简明介绍。
本库需要 SciPy 0.16 或更高版本以及 Python 3.6 或更高版本。
GPU 支持至少需要 NVidia CUDA Toolkit 版本 11。
本库在 Ubuntu、OSX 和 Windows 系统上使用 Python 3.7、3.8、3.9、3.10 和 3.11 版本进行测试。
可以在这里找到简单的基准测试,比较 ALS 拟合时间与 Spark 的性能。
建议配置 SciPy 以使用 Intel 的 MKL 矩阵库。一种简单的方法是安装 Anaconda Python 发行版。
对于使用 OpenBLAS 的系统,强烈建议设置 export OPENBLAS_NUM_THREADS=1。这会禁用其内部的多线程能力,从而为本包带来显著的加速。同样,对于 Intel MKL,也应设置 export MKL_NUM_THREADS=1。
基于 MIT 许可证发布