Logo

LibRecommender: 一个多功能的端到端推荐系统库

LibRecommender

LibRecommender: 一个多功能的端到端推荐系统库

LibRecommender 是一个易用的推荐系统库,专注于端到端的推荐流程。它包含了训练(libreco)和服务(libserving)两个模块,让用户可以快速训练和部署各种推荐模型。

主要特点

LibRecommender 具有以下主要特点:

  • 实现了多种流行的推荐算法,如 FM、DIN、LightGCN 等。完整的算法列表可以在项目主页查看。

  • 支持混合推荐系统,用户可以使用协同过滤或基于内容的特征。可以动态添加新特征。

  • 内存占用低,自动将分类特征和多值分类特征转换为稀疏表示。

  • 支持显式和隐式数据集的训练,以及对隐式数据进行负采样。

  • 提供端到端的工作流,包括数据处理/预处理 -> 模型训练 -> 评估 -> 保存/加载 -> 服务。

  • 支持冷启动预测和推荐。

  • 支持动态特征和序列推荐。

  • 为所有算法提供统一友好的 API。

  • 易于使用新数据中的新用户/物品重新训练模型。

快速开始

下面通过两个示例演示了模型的训练、评估、预测、推荐和冷启动过程:

  1. 纯协同过滤示例,使用 LightGCN 模型
import numpy as np
import pandas as pd
from libreco.data import random_split, DatasetPure
from libreco.algorithms import LightGCN
from libreco.evaluation import evaluate

# 加载数据
data = pd.read_csv("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)  # 打印数据信息

# 创建并训练模型
lightgcn = LightGCN(task="ranking", data_info=data_info, embed_size=16, n_epochs=3)
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"])

# 预测用户对物品的偏好
lightgcn.predict(user=2211, item=110)

# 为用户推荐物品
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")
  1. 使用特征的示例,使用 YouTubeRanking 模型
import numpy as np
import pandas as pd
from libreco.data import split_by_ratio_chrono, DatasetFeat
from libreco.algorithms import YouTubeRanking

# 加载数据
data = pd.read_csv("sample_movielens_merged.csv", sep=",", header=0)

# 按时间顺序划分训练集和测试集
train_data, test_data = split_by_ratio_chrono(data, test_size=0.2)

# 指定特征列
sparse_col = ["sex", "occupation", "genre1", "genre2", "genre3"]
dense_col = ["age"]
user_col = ["sex", "age", "occupation"]
item_col = ["genre1", "genre2", "genre3"]

# 构建数据集
train_data, data_info = DatasetFeat.build_trainset(
    train_data, user_col, item_col, sparse_col, dense_col
)
test_data = DatasetFeat.build_testset(test_data)
print(data_info)

# 创建并训练模型
yt_ranking = YouTubeRanking(
    task="ranking", data_info=data_info, embed_size=16, 
    n_epochs=3, lr=1e-4, batch_size=512,
    use_bn=True, hidden_units=(128, 64, 32),
)
yt_ranking.fit(
    train_data, neg_sampling=True, verbose=2, shuffle=True,
    eval_data=test_data,
    metrics=["loss", "roc_auc", "precision", "recall", "map", "ndcg"],
)

# 预测和推荐
yt_ranking.predict(user=2211, item=110)
yt_ranking.recommend_user(user=2211, n_rec=7)

# 冷启动预测和推荐
yt_ranking.predict(user="ccc", item="not item", cold_start="average")
yt_ranking.recommend_user(user="are we good?", n_rec=7, cold_start="popular")

安装

可以通过 pip 安装 LibRecommender:

pip install -U LibRecommender

或者从源代码构建:

git clone https://github.com/massquantity/LibRecommender.git
cd LibRecommender
pip install .

文档

完整的教程和 API 文档可以在 librecommender.readthedocs.io 查看。

示例脚本位于 examples/ 文件夹下。

支持

如果您有任何问题或建议,可以在 GitHub Issues 页面提出。对于使用问题,也可以在 Stack Overflow 上提问。

许可证

LibRecommender 使用 MIT 许可证

通过 LibRecommender,您可以快速构建和部署推荐系统,享受端到端的推荐体验。无论是协同过滤还是基于特征的模型,它都能满足您的需求。开始使用 LibRecommender,让您的推荐更智能、更高效!

最新项目

Project Cover
豆包MarsCode
豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。
Project Cover
AI写歌
Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。
Project Cover
商汤小浣熊
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
Project Cover
有言AI
有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。
Project Cover
Kimi
Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。
Project Cover
吐司
探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。
Project Cover
SubCat字幕猫
SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。
Project Cover
AIWritePaper论文写作
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。
Project Cover
稿定AI
稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。
投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号