LibRecommender是一个易于使用的推荐系统,专注于端到端的推荐过程。它包含训练(libreco)和服务(libserving)模块,让用户能够快速训练和部署各种推荐模型。
主要特点包括:
import numpy as np import pandas as pd from libreco.data import random_split, DatasetPure from libreco.algorithms import LightGCN # 纯数据,算法LightGCN from libreco.evaluation import evaluate data = pd.read_csv("examples/sample_data/sample_movielens_rating.dat", sep="::", names=["user", "item", "label", "time"]) # 将整个数据集分为三部分:训练、评估和测试 train_data, eval_data, test_data = random_split(data, multi_ratios=[0.8, 0.1, 0.1]) train_data, data_info = DatasetPure.build_trainset(train_data) eval_data = DatasetPure.build_evalset(eval_data) test_data = DatasetPure.build_testset(test_data) print(data_info) # 用户数: 5894, 物品数: 3253, 数据稀疏度: 0.4172 % lightgcn = LightGCN( task="ranking", data_info=data_info, loss_type="bpr", embed_size=16, n_epochs=3, lr=1e-3, batch_size=2048, num_neg=1, device="cuda", ) # 在训练过程中监控评估数据的指标 lightgcn.fit( train_data, neg_sampling=True, verbose=2, eval_data=eval_data, metrics=["loss", "roc_auc", "precision", "recall", "ndcg"], ) # 对测试数据进行最终评估 evaluate( model=lightgcn, data=test_data, neg_sampling=True, metrics=["loss", "roc_auc", "precision", "recall", "ndcg"], ) # 预测用户2211对物品110的偏好 lightgcn.predict(user=2211, item=110) # 为用户2211推荐7个物品 lightgcn.recommend_user(user=2211, n_rec=7) # 冷启动预测 lightgcn.predict(user="ccc", item="not item", cold_start="average") # 冷启动推荐 lightgcn.recommend_user(user="are we good?", n_rec=7, cold_start="popular")
import numpy as np import pandas as pd from libreco.data import split_by_ratio_chrono, DatasetFeat from libreco.algorithms import YouTubeRanking # 特征数据,算法YouTubeRanking data = pd.read_csv("examples/sample_data/sample_movielens_merged.csv", sep=",", header=0) # 基于时间将数据分为训练集和测试集 train_data, test_data = split_by_ratio_chrono(data, test_size=0.2) # 指定完整的列信息 稀疏列 = ["性别", "职业", "类型1", "类型2", "类型3"] 密集列 = ["年龄"] 用户列 = ["性别", "年龄", "职业"] 物品列 = ["类型1", "类型2", "类型3"] 训练数据, 数据信息 = DatasetFeat.build_trainset( 训练数据, 用户列, 物品列, 稀疏列, 密集列 ) 测试数据 = DatasetFeat.build_testset(测试数据) print(数据信息) # 用户数: 5962, 物品数: 3226, 数据稀疏度: 0.4185 % ytb排序 = YouTubeRanking( 任务="排序", 数据信息=数据信息, 嵌入维度=16, 训练轮数=3, 学 习率=1e-4, 批量大小=512, 使用批归一化=True, 隐藏单元=(128, 64, 32), ) ytb排序.拟合( 训练数据, 负采样=True, 详细程度=2, 打乱=True, 评估数据=测试数据, 评估指标=["损失", "roc_auc", "精确率", "召回率", "map", "ndcg"], ) # 预测用户2211对物品110的偏好 ytb排序.预测(用户=2211, 物品=110) # 为用户2211推荐7个物品 ytb排序.为用户推荐(用户=2211, 推荐数=7) # 冷启动预测 ytb排序.预测(用户="ccc", 物品="不是物品", 冷启动="平均") # 冷启动推荐 ytb排序.为用户推荐(用户="我们还好吗?", 推荐数=7, 冷启动="热门") ## 数据格式 就是普通的数据格式,每行代表一个样本。重要的是,模型假设`用户`、`物品`和`标签`列索引分别为0、1和2。如果不是这种情况,你可能需要更改列顺序。以`movielens-1m`数据集为例: > 1::1193::5::978300760<br> > 1::661::3::978302109<br> > 1::914::3::978301968<br> > 1::3408::4::978300275 此外,如果你想使用其他元特征(如年龄、性别、类别等),你需要告诉模型哪些列是[`稀疏列`, `密集列`, `用户列`, `物品列`],这意味着所有特征必须在同一个表中。参见上面的`YouTubeRanking`示例。 **还要注意,你的数据不应包含缺失值。** ## 文档 教程和API文档托管在[librecommender.readthedocs.io](https://librecommender.readthedocs.io/en/latest/)。 示例脚本在[examples/](https://github.com/massquantity/LibRecommender/tree/master/examples)文件夹下。 ## 安装与依赖 从pypi安装: ```shell $ pip install -U LibRecommender
从源代码构建:
$ git clone https://github.com/massquantity/LibRecommender.git $ cd LibRecommender $ pip install .
libreco
的基本依赖:如果你使用的是Python 3.6,你还需要安装dataclasses,这在Python 3.7中首次引入。
LibRecommender已在TensorFlow 1.15、2.6、2.10和2.12下测试过。如果在运行过程中遇到任何问题,随时开一个issue。
**TensorFlow 2.16开始使用Keras 3.0,因此不再支持tf1语法。**目前支持的版本是1.15 - 2.15。
已知问题:
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
的错误。在这种情况下,尝试升级numpy,版本1.22.0或更高可能是一个安全选择。Fatal Python error: Segmentation fault (core dumped)
。
这个问题很可能与protobuf
库有关,所以你应该根据你的本地tensorflow版本遵循官方推荐的版本。
通常,建议使用protobuf < 4.24.0。下表显示了一些兼容的版本组合:
Python版本 | Numpy版本 | TensorFlow版本 | 操作系统 |
---|---|---|---|
3.6 | 1.19.5 | 1.15, 2.5 | Linux, Windows, macOS |
3.7 | 1.20.3, 1.21.6 | 1.15, 2.6, 2.10 | Linux, Windows, macOS |
3.8 | 1.22.4, 1.23.4 | 2.6, 2.10, 2.12 | Linux, Windows, macOS |
3.9 | 1.22.4, 1.23.4 | 2.6, 2.10, 2.12 | Linux, Windows, macOS |
3.10 | 1.22.4, 1.23.4, 1.24.2 | 2.10, 2.12 | Linux, Windows, macOS |
3.11 | 1.23.4, 1.24.2 | 2.12 | Linux, Windows, macOS |
libserving
的可选依赖项:也可以在Docker容器中使用该库,无需安装依赖项,详见Docker。
算法 | 类别<sup><a href="#fn1" id="ref1">1</a></sup> | 后端 | 序列<sup><a href="#fn2" id="ref2">2</a></sup> | 图<sup><a href="#fn3" id="ref3">3</a></sup> | 嵌入<sup><a href="#fn4" id="ref4">4</a></sup> | 论文 |
---|---|---|---|---|---|---|
基于用户/物品的协同过滤 | 纯 | Cython, Rust | 基于物品的协同过滤 | |||
SVD | 纯 | TensorFlow1 | :heavy_check_mark: | 矩阵分解技术 | ||
SVD++ | 纯 | TensorFlow1 | :heavy_check_mark: | 因子化遇上邻域 | ||
ALS | 纯 | Cython | :heavy_check_mark: | 1. 通过交替最小二乘法的矩阵补全(ALS) <br>2. 隐式反馈数据集的协同过滤 <br>3. 隐式反馈的共轭梯度 | ||
NCF | 纯 | TensorFlow1 | 神经协同过滤 | |||
BPR | 纯 | Cython, TensorFlow1 | :heavy_check_mark: | 贝叶斯个性化排序 | ||
Wide & Deep | 特征 | TensorFlow1 | 推荐系统的Wide & Deep学习 | |||
FM | 特征 | TensorFlow1 | 因子分解机 | |||
DeepFM | 特征 | TensorFlow1 | DeepFM | |||
YouTube检索 | 特征 | TensorFlow1 | :heavy_check_mark: | :heavy_check_mark: | [YouTube推荐的深度神经网络](https://github.com/massquantity/LibRecommender/blob/master/https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf | |
YouTube排序 | 特征 | TensorFlow1 | :heavy_check_mark: | [YouTube推荐的深度神经网络](https://github.com/massquantity/LibRecommender/blob/master/https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf | ||
AutoInt | 特征 | TensorFlow1 | AutoInt | |||
DIN | 特征 | TensorFlow1 | :heavy_check_mark: | 深度兴趣网络 | ||
Item2Vec | 纯 | / | :heavy_check_mark: | :heavy_check_mark: | Item2Vec | |
RNN4Rec / GRU4Rec | 纯 | TensorFlow1 | :heavy_check_mark: | :heavy_check_mark: | 基于循环神经网络的会话推荐 | |
Caser | 纯 | TensorFlow1 | :heavy_check_mark: | :heavy_check_mark: | 个性化Top-N序列推荐的卷积方法 | |
WaveNet | 纯 | TensorFlow1 | :heavy_check_mark: | :heavy_check_mark: | WaveNet:原始音频的生成模型 | |
DeepWalk | 纯 | / | :heavy_check_mark: | :heavy_check_mark: | DeepWalk | |
NGCF | 纯 | PyTorch | :heavy_check_mark: | :heavy_check_mark: | 神经图协同过滤 | |
LightGCN | 纯 | PyTorch | :heavy_check_mark: | :heavy_check_mark: | LightGCN | |
GraphSage | 特征 | DGL, PyTorch | :heavy_check_mark: | :heavy_check_mark: | 大规模图上的归纳表示学习 | |
PinSage | 特征 | DGL, PyTorch | :heavy_check_mark: | :heavy_check_mark: | Web规模的图卷积神经网络 | |
TwoTower | 特征 | TensorFlow1 | :heavy_check_mark: | 1. 大规模语料项目的采样偏差校正神经建模 <br>2. 大规模项目的自监督学习 | ||
Transformer | 特征 | TensorFlow1 | :heavy_check_mark: | 1. BST <br>2. Transformers4Rec <br>3. RMSNorm | ||
SIM | 特征 | TensorFlow1 | :heavy_check_mark: | SIM | ||
Swing | 纯粹 | Rust | Swing |
<sup id="fn1">[1] 类别:
pure
指仅使用行为数据的协同过滤算法,feat
指可包含其他辅助特征。<a href="#ref1" title="返回正文中的脚注1。">↩</a></sup><sup id="fn2">[2] 序列:利用用户行为序列的算法。<a href="#ref2" title="返回正文中的脚注2。">↩</a></sup>
<sup id="fn3">[3] 图:利用图信息的算法,包括图嵌入(GE)和图神经网络(GNN)。<a href="#ref3" title="返回正文中的脚注3。">↩</a></sup>
<sup id="fn4">[4] 嵌入:能生成最终用户和物品嵌入的算法。<a href="#ref4" title="返回正文中的脚注4。">↩</a></sup>
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音 创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号