Т-Банк выложил в open source библиотеку scikit-rank для нейросетевого ранжирования

Т-Банк представил scikit-rank — open-source библиотеку для нейросетевого ранжирования в рекомендательных системах. Она даёт привычный scikit-learn-интерфейс с методами fit и predict, а её статью приняли в Demo track конференции ACM RecSys 2026.

Главное
  • Библиотека scikit-rank оборачивает нейросетевые модели ранжирования в формат scikit-learn-моделей с методами fit и predict
  • Поддерживаются модели DCN v2, FinalNet, DCNRegressor и DCNRanker, а также лоссы BPR, LambdaRank, ListMLE и CORAL
  • Входные данные принимаются в форматах numpy, pandas и polars; установка — через pip install scikit-rank
Схема нейросетевого ранжирования в рекомендательных системах: кандидаты, признаки и ранжирующая модель
Фото: Хабр: Машинное обучение

Т-Банк выложил в open source библиотеку scikit-rank для нейросетевого ранжирования в рекомендательных системах. Об этом рассказал Александр Милоградский, отвечающий за R&D в направлении рекомендательных технологий банка. Статью о библиотеке приняли в Demo track международной конференции по рекомендательным системам ACM RecSys 2026 в США.

Зачем нужна библиотека

В рекомендательных системах ранжирование кандидатов традиционно выполняют с помощью градиентного бустинга — LightGBM или CatBoost. Переход на нейросетевые модели требует переписать обработку числовых и категориальных признаков, цикл обучения и инференс, тогда как в бустинге многое скрыто внутри метода fit.

По словам Милоградского, внедрение нейромодели долго оставалось для него задачей из разряда «high effort, low confidence, questionable impact». Чтобы упростить переход, команда сделала библиотеку со scikit-learn-совместимым интерфейсом: продуктовые команды могут пробовать нейросети в существующих пайплайнах с минимальными изменениями кода.

Что внутри

Сейчас scikit-rank — обёртка нескольких нейросетевых моделей в формат scikit-learn-моделей. В библиотеке есть реализации DCNRegressor, DCNRanker и поддержка моделей DCN v2 и FinalNet. Для задачи ранжирования, как и в градиентном бустинге, нужно передать группы, внутри которых модель учится ранжировать.

Поддерживаются ранжирующие лоссы BPR, LambdaRank, ListMLE, CORAL и другие. Архитектура модели и функция потерь комбинируются независимо: авторы отмечают, что DCN v2 «loss-function agnostic».

На вход принимаются numpy, pandas или polars. Установка — через pip install scikit-rank.

Сравнение с аналогами

Для публикации команда сравнила scikit-rank с FuxiCTR и DeepCTR по формату данных, интерфейсу работы и преобразованиям признаков. По данным авторов, популярные фреймворки не поддерживают fit/predict-парадигму, polars и преобразование данных для числовых и категориальных признаков — это и решили исправить в scikit-rank.

Для профиТехнические детали: архитектура, цифры, ссылки

Модели: DCN v2, FinalNet, DCNRegressor, DCNRanker.

Лоссы: BPR, LambdaRank, ListMLE, CORAL и другие.

Интерфейс: scikit-learn-совместимый, методы fit и predict; входные данные — numpy, pandas, polars.

Установка: pip install scikit-rank.

Сравнение: с open-source фреймворками FuxiCTR и DeepCTR по формату данных, интерфейсу и преобразованиям признаков.

Пример из README:

from scikit_rank import DCNRanker

ranker = DCNRanker(
    loss="listwise",
    hidden_units=[256, 128],
    cross_layers=3,
    epochs=10,
    num_features=["num"],
    cat_features=["cat"],
    random_state=0,
)
ranker.fit(train_df, y="click", group="impression_id")
scores = ranker.predict(test_df)

Что это значит для России

scikit-rank — библиотека Т-Банка, выложенная в open source. Установка доступна через pip, код открыт, что делает инструмент доступным для российских команд без привязки к платным сервисам.

Вопросы и ответы

Что такое scikit-rank?
Open-source библиотека Т-Банка для нейросетевого ранжирования в рекомендательных системах со scikit-learn-совместимым интерфейсом.
Как установить scikit-rank?
Через pip install scikit-rank.
Какие модели поддерживает scikit-rank?
DCN v2, FinalNet, а также DCNRegressor и DCNRanker с лоссами BPR, LambdaRank, ListMLE, CORAL и другими.