benfred

implicit 是一个面向隐式反馈数据的快速协同过滤推荐库(Python),提供 ALS、BPR、逻辑矩阵分解与物品近邻等算法,多线程 CPU 训练并支持 GPU 加速。

v0.7.3
发布于
2026年5月9日
3,830
星标
4,030
下载
同步于
8 天前

最新版本

v0.7.32026年5月9日 02:36
下载慢?可在上方随时切换镜像源

项目说明

项目概述

implicit 是一个专注隐式反馈(点击、购买、播放等行为数据)的协同过滤推荐库,用 Cython 与 OpenMP 实现多线程并行训练,在全部 CPU 核心上高效拟合模型。它提供隐式 ALS、贝叶斯个性化排序(BPR)、逻辑矩阵分解与基于 Cosine、TFIDF、BM25 的物品近邻四类主流算法,ALS 与 BPR 还带自定义 CUDA 内核,可配合 Annoy、Faiss 等近似近邻库加速线上推荐。

不依赖评分数据,从行为日志直接训练工业级推荐模型。

项目 内容
平台 Linux、macOS、Windows
语言 Python(Cython/CUDA 内核)
许可 MIT
算法 ALS、BPR、逻辑矩阵分解、物品近邻

主要功能

  • 隐式 ALS:针对隐式反馈的交替最小二乘,多线程训练
  • BPR:贝叶斯个性化排序,适合排序场景
  • 逻辑矩阵分解:把交互建模为概率的分解方法
  • 物品近邻:Cosine、TFIDF、BM25 距离的 Item-Item 模型
  • GPU 训练:ALS 与 BPR 有自定义 CUDA 内核
  • 近似近邻加速:接入 Annoy、NMSLIB、Faiss 加快推荐生成
  • 相似推荐:一键查询相似物品与相似用户

适用人群

  • 构建推荐系统的后端工程师
  • 处理隐式行为数据的算法工程师
  • 做推荐算法研究的科研人员
  • 参加推荐赛题的竞赛选手

快速上手

  1. 安装:
pip install implicit
  1. 训练 ALS 模型并推荐:
import implicit

model = implicit.als.AlternatingLeastSquares(factors=50)
model.fit(user_item_data)
recommendations = model.recommend(userid, user_item_data[userid])
  1. 查询相似物品:
related = model.similar_items(itemid)

核心优势

  • 训练快:Cython + OpenMP 吃满多核,速度远超纯 NumPy 实现
  • GPU 可选:主流算法有 CUDA 内核,大数据量也能秒级拟合
  • 专注隐式反馈:接口与算法围绕点击、购买等真实行为设计

系统要求

项目 要求
操作系统 Linux、macOS、Windows
语言环境 Python 3.9+、SciPy 0.16+
GPU 可选,需 CUDA Toolkit 13 并安装 rmm-cu13

注意事项

  • 输入格式:模型以稀疏矩阵为输入,需先构建用户-物品置信度矩阵
  • BLAS 线程:OpenBLAS 环境建议设置 OPENBLAS_NUM_THREADS=1,关闭其内部多线程反而更快
  • GPU 配置:GPU 支持需 CUDA 13 与 rmm 依赖,CPU 版无此要求

历史版本

排序