Project Icon

RecTools

功能丰富的推荐系统开发Python库

RecTools是一个专为推荐系统开发设计的Python库。它集成了数据处理、指标计算、多种推荐模型和模型选择框架。支持矩阵分解、最近邻和神经网络等算法,并可利用用户和物品特征。RecTools注重易用性和灵活性,有助于快速构建和部署推荐系统。

RecTools

Python 版本 PyPI 文档

许可证 覆盖率 测试

贡献者 下载量 Telegram

文档 | 示例 | 教程 | 贡献指南 | 版本发布 | 开发者看板

RecTools 是一个易于使用的 Python 库,它使构建推荐系统的过程比以往任何时候都更简单、更快速、更有结构。它包括用于数据处理和指标计算的内置工具包,各种推荐模型,一些已有流行算法实现的封装,以及模型选择框架。其目标是将现成的解决方案和最佳实践集中在一处,使创建第一个最小可行产品和将模型部署到生产环境的过程变得尽可能快速和简单。

快速开始

准备数据:

wget https://files.grouplens.org/datasets/movielens/ml-1m.zip
unzip ml-1m.zip
import pandas as pd
from implicit.nearest_neighbours import TFIDFRecommender
    
from rectools import Columns
from rectools.dataset import Dataset
from rectools.models import ImplicitItemKNNWrapperModel

# 读取数据
ratings = pd.read_csv(
    "ml-1m/ratings.dat", 
    sep="::",
    engine="python",  # 因为使用了2字符分隔符
    header=None,
    names=[Columns.User, Columns.Item, Columns.Weight, Columns.Datetime],
)
    
# 创建数据集
dataset = Dataset.construct(ratings)
    
# 训练模型
model = ImplicitItemKNNWrapperModel(TFIDFRecommender(K=10))
model.fit(dataset)

# 生成推荐
recos = model.recommend(
    users=ratings[Columns.User].unique(),
    dataset=dataset,
    k=10,
    filter_viewed=True,
)

安装

RecTools 已在 PyPI 上发布,因此你可以使用 pip 来安装它。

pip install rectools

默认版本不包含所有依赖项,因为有些依赖项只在特定功能中需要。可用的用户扩展如下:

  • lightfm:添加 LightFM 模型的封装
  • torch:添加基于神经网络的模型
  • visuals:添加可视化工具
  • nmslib:添加快速 ANN 推荐器

安装扩展:

pip install rectools[扩展名]

安装所有扩展:

pip install rectools[all]

推荐模型

下表列出了 RecTools 中可用的推荐模型。 有关我们支持的模型的理论和实践深入探讨,请参阅推荐基线扩展教程

模型类型描述 (🎏 表示用户/物品特征,🔆 表示热启动推断,❄️ 表示冷启动推断支持)教程和基准测试
implicit ALS 封装矩阵分解rectools.models.ImplicitALSWrapperModel - 用于隐式反馈的交替最小二乘矩阵分解算法。
🎏
📙 理论与实践
🚀 [使用用户和物品特征提升50%的指标](https://github.com/MobileTeleSystems/RecTools/blob/main/examples/5_benchmark_iALS_with_features.ipynb
implicit ItemKNN 封装最近邻rectools.models.ImplicitItemKNNWrapperModel - 使用用户-物品交互矩阵中物品向量之间的距离计算物品-物品相似度矩阵的算法📙 理论与实践
LightFM 封装矩阵分解rectools.models.LightFMWrapperModel - 混合矩阵分解算法,利用用户和物品特征,支持多种损失函数。
🎏 🔆 ❄️
📙 理论与实践
🚀 [使用RecTools推断速度提升10-25倍](https://github.com/MobileTeleSystems/RecTools/blob/main/examples/6_benchmark_lightfm_inference.ipynb
EASE线性自编码器rectools.models.EASEModel - 简单浅层自编码器实现,显式计算稠密的物品-物品相似度矩阵📙 理论与实践
PureSVD矩阵分解rectools.models.PureSVDModel - 用户-物品交互矩阵的截断奇异值分解📙 理论与实践
DSSM神经网络rectools.models.DSSMModel - 双塔神经网络模型,利用显式特征学习用户和物品嵌入,使用三元组损失进行学习。
🎏 🔆
-
Popular启发式rectools.models.PopularModel - 经典基线,计算物品的流行度,还接受时间窗口和流行度计算类型等参数。
❄️
-
Popular in Category启发式rectools.models.PopularInCategoryModel - 计算类别内流行度并应用混合策略以提高多样性的模型。
❄️
-
Random启发式rectools.models.RandomModel - 简单随机算法,用于基准测试新颖性、覆盖率等。
❄️
-
  • 所有模型遵循相同的接口。无例外
  • 无需手动创建稀疏矩阵或映射ID。准备模型数据简单如dataset = Dataset.construct(interactions_df)
  • 拟合任何模型都简单如model.fit(dataset)
  • 获取推荐时可使用filter_vieweditems_to_recommend选项
  • 对于物品到物品的推荐,使用recommend_to_items方法
  • 要向模型提供用户/物品特征,只需在构建Dataset时指定数据框。[查看我们的教程](https://github.com/MobileTeleSystems/RecTools/blob/main/examples/4_dataset_with_features.ipynb
  • 对于热启动/冷启动推断,只需在recommendrecommend_to_items方法的userstarget_items参数中提供所有必需的ID,并确保数据集中有热启动用户/物品的特征。无需其他操作,一切都可开箱即用。

贡献

[贡献指南](https://github.com/MobileTeleSystems/RecTools/blob/main/CONTRIBUTING.rst

安装所有依赖项

  • 你必须安装python>=3.8poetry>=1.5.0
  • 确保没有激活的虚拟环境(如适用,请停用conda base
  • 运行
make install

自动格式化运行

make format

代码检查运行

make lint

运行测试

make test

运行覆盖率测试

make coverage

删除虚拟环境运行

make clean

RecTools 团队

先前的贡献者:Ildar Safilo [前维护者],Daniil Potapov [前维护者],Igor BelkovArtem SeninMikhail KhasykovJulia KaramnovaMaxim LukinYuri UlianovEgor KratkovAzat Sibagatulin

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号