| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
SplitLight is a lightweight framework for auditing recommender-system datasets and evaluating splitting results. Its main goal is to help you produce trustworthy data preprocessing and splits and justify split choices via transparent, data-driven diagnostics. SplitLight can be used in Jupyter/Python scripts for comprehensive analysis and offers an easy-to-use Streamlit UI for interactive exploration, health checks, and side-by-side comparisons.
SplitLight in a data-preparation pipeline. From the raw dataset to split subsets, SplitLight audits data, flags problems, and enables side-by-side comparison of alternative splits to justify the selected evaluation protocol.
Note
See short video walkthrough of SplitLight motivation and usage.
pip install -r requirements.txt
export PYTHONPATH="$(pwd):$PYTHONPATH"
export SEQ_SPLITS_DATA_PATH=$(pwd)/dataInstall the requirements and set the environment variables. Then, run the Streamlit as described here to get the data overview or start jupyter notebook and explore the data and splits in depth (see the demo notebook).
SplitLight expects each dataset under data/<DatasetName>/ with either a raw.csv (original schema) or preprocessed.csv (standard schema).
Example:
data/
├── Beauty/
│ ├── raw.csv # optional
│ ├── preprocessed.csv
│ └── leave-one-out/ # example split folder
│ ├── train.csv
│ ├── validation_input.csv
│ ├── validation_target.csv
│ ├── test_input.csv
│ └── test_target.csv
└── Diginetica/
├── preprocessed.csv
└── GTS-q09-val_by_time-target_last/
├── train.csv
├── validation_input.csv
├── validation_target.csv
├── test_input.csv
└── test_target.csvLaunch the app for interactive dataset and split audits.
export PYTHONPATH="$(pwd):$PYTHONPATH"
export SEQ_SPLITS_DATA_PATH=$(pwd)/data
streamlit run SplitLight.pyFor better experience, zoom out the page to adjust to your screen size.
What you can explore:
| Category | Description |
|---|---|
| Dataset and Subsets | Analyze raw and preprocessed data in terms of core and temporal statistics and compare. Identify repeated consumption patterns. Visualize interactions distribution over time. |
| Subsets and Splits | Analyze split data in terms of core and temporal statistics and compare subsets with full data. Identify and visualize presence of data leakage. Quantify and visualize user and item cold start. |
| Compare splits | Compare different splits in terms of core and temporal statistics. Identify distribution shifts for target subset. |
You can also run these checks manually using functions from the src/stats module for custom analyses or integration into your own pipelines (see demo notebook).
The Summary page in the Streamlit UI provides a high-level overview of dataset and split health. It aggregates key diagnostics into a single dashboard, helping you quickly identify quality issues and distribution imbalances.
Each metric is assigned a health status based on configurable thresholds:
▶ Click to play the short SplitLight's Summary Page showcase.
Thresholds and color rules for the Summary view can be customized in
streamlit_ui/config/summary.yml.
These CLI tools are provided to illustrate a complete pipeline for preprocessing and splitting datasets. The results of the preprocessing and splitting could be audited using the SplitLight. To train a sequential model on the split data and evaluate, how different data preprocessing and splitting strategies affect the model performance, use the example python runs/train_rs.py.
See runs/README.md for more detailed explanation on CLI tools and experimental setup for splitting results in /data dir.
Standardize and clean your raw interaction logs.
export SEQ_SPLITS_DATA_PATH=$(pwd)/data
python runs/preprocess.py +dataset=BeautySplit your dataset using Leave-One-Out (LOO) or Global Time Split (GTS) strategies. See src/splits.py for implementation details.
# Leave-one-out (LOO)
python runs/split.py split_type=leave-one-out split_params.remove_cold_items=True
# Global time split (GTS)
python runs/split.py \
dataset=Beauty \
split_type=global_timesplit \
split_params.quantile=0.9 \
split_params.validation_type=by_time \
split_params.target_type=lastCommon options:
GTS options:
Config: runs/configs/split.yaml
Output: splits are saved under data/<DatasetName>/<split_name>/
export PYTHONPATH="$(pwd):$PYTHONPATH"
export SEQ_SPLITS_DATA_PATH=$(pwd)/data
python runs/train_rs.py dataset=Beauty split_name=leave-one-outWe welcome and appreciate all forms of contributions to make SplitLight better! If you have ideas to improve SplitLight, please feel free to submit a Pull Request.
If you use SplitLight in research or production, please consider citing our paper:
@misc{splitlight2026,
title={SplitLight: An Exploratory Toolkit for Recommender Systems Datasets and Splits},
author={Anna Volodkevich and Dmitry Anikin and Danil Gusak and Anton Klenitskiy and Evgeny Frolov and Alexey Vasilev},
year={2026},
eprint={2602.19339},
archivePrefix={arXiv},
primaryClass={cs.IR}
}| Back | FazBrowse Home | New Git URL |