В машинном обучении принято винить архитектуру нейросети, функцию потерь или метод сэмплирования негативных примеров, если чужой результат из научной статьи не удается воспроизвести. Однако в рекомендательных системах (RecSys) корень проблемы чаще всего кроется в незаметных деталях подготовки данных. Исследователи из Sber AI Lab и института AIRI доказали: две команды могут использовать формально одинаковый датасет и метод разбиения (например, глобальный сплит по времени), но получить принципиально разные метрики из-за скрытых нюансов фильтрации.
Чтобы решить эту проблему, разработчики создали и выложили в открытый доступ SplitLight — инструмент для аудита датасетов и стратегий их разбиения, презентованный на конференции SIGIR 2026.
Мелочи, которые переворачивают бенчмарки с ног на голову
Эксперименты команды на популярной модели SASRec наглядно продемонстрировали, насколько сильно правила предобработки влияют на финальные показатели:
- Коллизии временных меток: если у действий пользователя совпадает время, порядок событий становится случайным. Простое изменение сортировки таких записей на датасете MovieLens-1M обрушило метрику NDCG@10 с 0,1861 до 0,1685 без какого-либо вмешательства в архитектуру нейросети.
- Повторные взаимодействия: на датасете Dressipi сохранение последовательных повторов одного и того же объекта искусственно завысило NDCG@10 с 0,1343 до 0,2168. Модель просто научилась рекомендовать то, на что пользователь кликнул только что, хотя на действительно новых объектах качество упало до 0,1225.
- Холодный старт: сохранение не встречавшихся в обучении объектов в тестовой выборке того же Dressipi снизило результат алгоритма с 0,1343 до 0,0965.
Скрытые ловушки популярных датасетов
Аудит распространенных бенчмарков с помощью SplitLight вскрыл неожиданные особенности публичных данных:
- Временные коллизии: в MovieLens-1M около 53% событий имеют повторяющиеся временные метки внутри истории одного пользователя, а в датасете Beauty таких взаимодействий порядка 39%.
- Маскировка реальной активности: датасет MovieLens-20M формально охватывает 20 лет, однако медианное время активности отдельного пользователя в нем составляет всего около одного часа.
- Утечки из будущего (Temporal Leakage): при популярной схеме разбиения
leave-one-outна датасете Diginetica около 89% таргетов оказались затронуты информацией из будущего из-за смешивания глобальных временных интервалов. - Неожиданный холодный старт: при глобальном разбиении по времени (квантиль 0,9) доля холодных пользователей в тестовой выборке Diginetica и Dressipi достигла 100%, а в MovieLens-20M — 82,6%. В таких условиях алгоритм оценивается исключительно на умении работать с новичками.
Что умеет SplitLight
Пакет ориентирован на формат логов взаимодействия с минимальной схемой полей: user_id, item_id и timestamp в форматах CSV или Parquet. Фреймворк доступен в виде Python API для интеграции в ML-пайплайны, готовых Jupyter-ноутбуков, а также интерфейса на базе Streamlit для визуального аудита без написания кода.
Инструмент позволяет перед стартом ресурсоемкого обучения оценить:
- изменение распределений до и после фильтраций (длины сессий, плотность, популярность);
- масштаб повторных и последовательных взаимодействий;
- наличие утечек данных по времени между
train,inputиtarget; - долю холодных сущностей в тесте и валидации;
- статистические сдвиги распределений (с использованием критерия Колмогорова — Смирнова).
«Для воспроизводимости недостаточно заявить название схемы сплита. Важно фиксировать точные правила работы с повторами, обработку временных коллизий, долю отфильтрованных объектов и структуру пар входной истории и таргета», — отмечают авторы исследования.
Исходный код проекта опубликован на GitHub под свободной лицензией MIT.