Project Icon

elliot

推荐系统评估框架 简化实验流程提高研究可重复性

Elliot是一个面向研究人员的推荐系统评估框架。它通过配置文件驱动实验流程,涵盖数据加载、模型优化、训练和结果收集。框架支持多种数据分割策略和超参数优化,提供准确性、偏见和公平性等评估指标。Elliot注重实验可重复性,让研究人员能全面控制实验过程,是推荐系统研究的有力工具。

ELLIOT

PyPI - Python 版本 版本 GitHub 仓库大小 GitHub

文档 | 论文

ELLIOT 新版本(v0.3.1)已发布

Elliot 是一个全面的推荐框架,从研究者的角度分析推荐问题。它执行完整的实验流程,从数据集加载到结果收集。其核心理念是通过一个简单直观的配置文件来驱动框架完成实验设置选择。Elliot 简化了组合分割策略、模型超参数优化、模型训练以及生成实验结果报告的复杂性。

系统架构图

该框架可以加载、过滤和分割数据,考虑了广泛的策略(从时间序列训练-测试分割到嵌套K折交叉验证等分割方法和过滤方法)。Elliot 为多种推荐算法优化超参数,选择最佳模型,与基准进行比较并提供模型内部统计数据,计算从准确性到超越准确性、偏见和公平性的各种指标,并进行统计分析(Wilcoxon 检验和配对 t 检验)。

Elliot 旨在保持整个实验的可重复性,并让用户掌控框架。

我们尽最大努力将 Elliot 中所有可用方法、技术和指标的参考文献信息列出,以给予其作者应有的荣誉。请记得在您的研究中使用 Elliot 时引用它们。

实际上,这也适用于 Elliot 本身 :-) 如果您发现 Elliot 对您的研究或开发有用,请记得引用以下论文

@inproceedings{DBLP:conf/sigir/AnelliBFMMPDN21,
  author    = {Vito Walter Anelli and
               Alejandro Bellog{\'{\i}}n and
               Antonio Ferrara and
               Daniele Malitesta and
               Felice Antonio Merra and
               Claudio Pomo and
               Francesco Maria Donini and
               Tommaso Di Noia},
  editor    = {Fernando Diaz and
               Chirag Shah and
               Torsten Suel and
               Pablo Castells and
               Rosie Jones and
               Tetsuya Sakai},
  title     = {Elliot: {A} Comprehensive and Rigorous Framework for Reproducible
               Recommender Systems Evaluation},
  booktitle = {{SIGIR} '21: The 44th International {ACM} {SIGIR} Conference on Research
               and Development in Information Retrieval, Virtual Event, Canada, July
               11-15, 2021},
  pages     = {2405--2414},
  publisher = {{ACM}},
  year      = {2021},
  url       = {https://doi.org/10.1145/3404835.3463245},
  doi       = {10.1145/3404835.3463245},
  timestamp = {Thu, 15 Jul 2021 15:30:48 +0200},
  biburl    = {https://dblp.org/rec/conf/sigir/AnelliBFMMPDN21.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

安装

Elliot 支持以下操作系统:

  • Linux
  • Windows 10
  • macOS X

Elliot 需要 Python 3.6 或更高版本。

Elliot 需要 tensorflow 2.3.2 或更高版本。如果您想在 GPU 上使用 Elliot, 请确保 CUDA 或 cudatoolkit 版本为 7.6 或更高。 这需要 NVIDIA 驱动程序版本 >= 10.1(适用于 Linux 和 Windows 10)。

更多可用配置请参考此文档

从源代码安装

CONDA

git clone https://github.com//sisinflab/elliot.git && cd elliot
conda create --name elliot_env python=3.8
conda activate elliot_env
pip install --upgrade pip
pip install -e . --verbose

VIRTUALENV

git clone https://github.com//sisinflab/elliot.git && cd elliot
virtualenv -p /usr/bin/python3.6 venv # 您的 Python 位置和版本
source venv/bin/activate
pip install --upgrade pip
pip install -e . --verbose

快速开始

Elliot 的入口点是 run_experiment 函数,它接受一个配置文件来驱动整个实验。 以下展示了一个示例配置文件,演示了如何通过一个简单明确的结构生成一个严谨的实验。

from elliot.run import run_experiment
run_experiment("configuration/file/path")

以下文件是一个简单的实验设置配置。它包含了从特定路径获取MovieLens-1M目录并以20%的比例进行随机抽样训练测试集划分的所有指令。

这个实验为Item-KNN模型提供了一个网格搜索策略的超参数优化。事实上,可以看到邻居数量的可能值被方括号包围。这表明将训练和比较两个具有不同邻居数量值的不同模型,以选择最佳配置。此外,这个配置要求Elliot保存每个用户最多10个项目的推荐列表,如top_k属性所示。

在这个基本实验中,最终评估研究只考虑了一个简单的指标。候选指标是截断等于top_k的nDCG,除非另有说明。

experiment:
  dataset: movielens_1m
  data_config:
    strategy: dataset
    dataset_path: ../data/movielens_1m/dataset.tsv
  splitting:
    test_splitting:
      strategy: random_subsampling
      test_ratio: 0.2
  models:
    ItemKNN:
      meta:
        hyper_opt_alg: grid
        save_recs: True
      neighbors: [50, 100]
      similarity: cosine
  evaluation:
    simple_metrics: [nDCG]
  top_k: 10

如果你想探索基本配置和高级配置,请参考:

[basic_configuration](https://github.com/sisinflab/elliot/blob/master/basic_configuration.md

[advanced_configuration](https://github.com/sisinflab/elliot/blob/master/advanced_configuration.md

你可以在论文中找到这两个实验的完整描述。

贡献

有很多方式可以为Elliot做出贡献!你可以贡献代码,改进文档,报告或调查bugs和issues

我们欢迎从bug修复到新功能和扩展的所有贡献。

欢迎与我们分享你的自定义配置文件。我们正在创建一个可复现实验的存储库,我们很乐意提及你的贡献。

在你的博客、论文和文章中引用Elliot。

在社交媒体上使用hashtag #elliotrs讨论Elliot。

团队

Elliot由以下人员开发:

它由SisInfLab GroupInformation Retrieval Group维护。

* 通讯作者

许可证

ELLIOT使用[APACHE2 License](https://github.com/sisinflab/elliot/blob/master/./LICENSE。

致谢

SliM和另一种KNN-CF实现参考了RecSys2019_DeepLearning_Evaluation

项目侧边栏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号