ELLIOT
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由以下人员开发:
- Vito Walter Anelli* (vitowalter.anelli@poliba.it)
- Alejandro Bellogín (alejandro.bellogin@uam.es)
- Antonio Ferrara (antonio.ferrara@poliba.it)
- Daniele Malitesta (daniele.malitesta@poliba.it)
- Felice Antonio Merra (felice.merra@poliba.it)
- Claudio Pomo* (claudio.pomo@poliba.it)
- Francesco Maria Donini (donini@unitus.it)
- Tommaso Di Noia (tommaso.dinoia@poliba.it)
它由SisInfLab Group和Information Retrieval Group维护。
* 通讯作者
许可证
ELLIOT使用[APACHE2 License](https://github.com/sisinflab/elliot/blob/master/./LICENSE。
致谢
SliM和另一种KNN-CF实现参考了RecSys2019_DeepLearning_Evaluation