Постановка задачи
В этом соревновании вам предстоит разработать алгоритм для автоматической категоризации товаров по их названию и атрибутам, даже в условиях неполной разметки.
Система категорий устроена в виде иерархического дерева (до 5 уровней вложенности), а данные о товарах поступают с множества торговых площадок, что создает ряд сложностей:
- Разметка товаров неполная и неидеальная.
- Атрибуты одних и тех же товаров могут отличаться на разных площадках или вовсе отсутствовать.
- По мере расширения каталога могут появляться новые площадки и категории, которых не было раньше.
В этом соревновании мы предлагаем участникам попробовать свои силы в постановке максимально приближенной к реальной:
- Задача осложняется тем, что в обучающей выборке категории размечены только для половины товаров, а в тестовой выборке встретятся категории, к которым нет размеченных примеров.
- При этом вам заранее предоставлен полный список возможных категорий – сможете ли вы учесть их все и точно отнести товары к нужным классам?
- LLM (большие языковые модели) выглядят многообещающе для подобных задач – но действительно ли они помогут? Это отличный шанс проверить различные подходы!
Подробнее про данные и их структуру можно узнать на странице “Данные”.
Формат решений
Это контейнерное соревнование:
- Обучите модель на предоставленных данных.
- Подготовьте Docker-контейнер и код с весами моделей.
- Отправьте решение в виде архива.
- Ваше решение будет автономно запущено на закрытых тестовых данных.
Решение получает на вход следующие именованные аргументы:
--test_data_path
-i
путь к файлу с тестовыми товарами (например, test.parquet
)--output-path
-o
имя файла, в который вам нужно сохранить результат (например, submit.csv
)
Формат выходного файла — .csv
с двумя столбцами:
- Столбец
hash_id
должен содержать предоставленные захэшированные идентификаторы товаров. - Столбец
predicted_cat
должен быть идентификатором категории в соответствии с предоставленным словарем категорий.
В архиве должны быть все необходимые для работы модели файлы. Как минимум, в архиве должен быть файл metadata.json
с указанием используемого докер-образа (рекомендуем `odsai/df25-baseline:1.0`
) и строки для запуска вашей модели.
{
"image": "odsai/df25-baseline:1.0",
"entry_point": "python -u run.py"
}
При желании вы можете использовать свой образ, выложив его на https://hub.docker.com. Вебинар о том, как собрать докер.
ВАЖНО!
- Обратите внимание, что в тестовых данных будут другие товары.
- Если в файле отсутствует какой-то из предоставленных тестовых товаров, решение будет отвергнуто (оценочный скрипт выдаст ошибку).
- Более того, в тестовых данных присутствуют категории товаров из словаря, для которых отсутствует разметка в обучающих данных. Получение разметки недостающих категорий это неотъемлемая часть задачи соревнования.
Проверка решений
Решения проверяются автоматически:
- Запуск решений происходит в изолированной среде без доступа в интернет.
- Все библиотеки и их версии должны быть уже загружены в вашем Docker образе.
- Запуск происходит на полностью закрытых тестовых данных, которые не доступны и не передаются участникам.
- Решения запускаются последовательно на 3 закрытых наборах тестовых данных:
- Check, отладочные 10 примеров, которые не идут в рейтинг.
- Public test, для результатов на Public лидерорде в течение соревнования.
- Private test, для итоговых результатов Private лидерборда.
ВАЖНО!
- Если решение упало на любом тестовом наборе – оно не оценивается.
- Победители соревнования определяются по результатам приватной части лидерборда.
Метрика соревнования — HDA (Hierarchical Discounted Accuracy):
Метрика учитывает структуру категорий:
- Если решение ошиблось только в последнем уровне категоризации товара, это считает “полу”-ошибкой. Значит вместо 1 балла ваше решение получит 1/exp(1) ≈ 0.37 балла.
- Оценка экспоненциально снижается в зависимости от разности уровня наиболее глубокой корректно предсказанной категории и уровня корректной категории. Для ошибки в 2 уровня вы будете получать уже 1/exp(2) ≈ 0.13 балла.
- Если товар имеет разметку до 4 уровня, а ваш алгоритм предсказывает 5-й, оценка идет по 4-му уровню.
Победители и итоговые результаты определяются по результатам на Private лидерборде.
Для Private лидерборда можно выбрать до 2 финальных решений.
Доступные ресурсы для решений
- 8 ядер CPU
- 96Gb RAM
- Видеокарта NVidia Tesla V100 (32Gb)
Ограничения для решений
- Архив с решением
- 5Gb для архива с решением
- 60 минут на работу решения: 30 минут на public часть и 30 минут на private
- Docker-образ, используемый в решении
- Образ должен быть опубликован и публично доступен на Dockerhub
- 20Gb ограничение на размер образа