Implicit
用于隐式数据集的快速Python协同过滤。
该项目为隐式反馈数据集提供了几种不同流行推荐算法的快速Python实现:
-
交替最小二乘法(ALS),如论文《基于隐式反馈数据集的协同过滤》和《隐式反馈协同过滤中共轭梯度法的应用》所述。
-
使用余弦相似度、TF-IDF或BM25作为距离度量的物品-物品最近邻模型。
所有模型都有多线程训练程序,使用Cython和OpenMP在所有可用的CPU核心上并行拟合模型。此外,ALS和BPR模型都有自定义CUDA内核,可在兼容的GPU上进行拟合。近似最近邻库如Annoy、NMSLIB和Faiss也可以被Implicit用来加速推荐。
安装
可以通过pip安装Implicit:
pip install implicit
使用pip安装将在x86_64 Linux、Windows和OSX上使用预构建的二进制wheel。这些wheel在Linux上包含GPU支持。
Implicit也可以通过conda安装:
# 仅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的文章
这些博客文章描述了支持该库的算法:
还有几篇其他文章介绍了使用Implicit构建推荐系统:
- H&M个性化时尚推荐Kaggle比赛
- Yandex Cup 2022:点赞预测
- 使用Google BigQuery和implicit库推荐GitHub仓库
- 隐式矩阵分解入门:使用Sketchfab模型的经典ALS
- 基于隐式反馈的推荐系统温和介绍
要求
该库需要SciPy 0.16或更高版本以及Python 3.6或更高版本。
GPU支持需要至少NVidia CUDA工具包的11版本。
该库在Ubuntu、OSX和Windows上使用Python 3.7、3.8、3.9、3.10和3.11进行测试。
基准测试
这里可以找到与Spark比较的ALS拟合时间的简单基准测试。
最佳配置
我建议将SciPy配置为使用英特尔的MKL矩阵库。一种简单的方法是安装Anaconda Python发行版。
对于使用OpenBLAS的系统,我强烈建议设置'export OPENBLAS_NUM_THREADS=1'。这会禁用其内部多线程能力,从而大幅提高该包的速度。同样,对于Intel MKL,也应设置'export MKL_NUM_THREADS=1'。
根据MIT许可证发布