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一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号