Соревнование по структуризации чеков ОФД
Примите участие в первом DataScience-соревновании от Альфа-Банка! Это не будет соревнованием по машинному обучению, так как на последнем этапе вы не будете подбирать гиперпараметры, а будете выбирать данные для разметки, как это происходит на практике, чтобы улучшить свое решение
Перед тем, как участвовать в соревновании, приглашаем вас в трек “NLP in practice”, где вы сможете подробно разобрать все технические этапы, с которыми сталкиваются дата-сайентисты в NLP на практике.
Задача
Данные чеков ОФД содержат детальную информацию о тратах клиентов. Они помогают улучшать качество моделей кредитного скоринга и склонности к банковским продуктам, а также улучшать пользовательский опыт за счет структуризации трат клиентов в мобильном приложении. Однако работа с этим источником затрудняется его неструктурированностью: вся информация о купленном товаре лежит в одной строке произвольного формата.
В предположении что каждая чековая позиция описывает какой-либо товар, наименование этого товара, а также его бренд, являются главной информацией, которую можно извлечь из чека. По итогу задача структуризации этих данных ограничивается выделением и нормализацией1 брендов и товаров.
Данные
Участникам соревнования предоставляются два датасета с чековыми позициями, размеченный и неразмеченный:
Подробное описание файлов и полей датасета соревнования можно найти во вкладке Данные.
Метрика соревнования
Метрика соревнования - (F1_good + 2 * F1_brand) / 3, где F1_good- это метрика F1 на товарах, а F1_brand - это метрика F1 на брендах. Для подсчета F1 мы для считаем две метрики:
После чего метрика считается по знакомой формуле F1 = 2 / (1 / precision + 1 / recall)
Подробнее о данной модификации F1 для задач, подобных NER, можете прочитать по ссылке (раздел CoNLL).
Этапы соревнования
1.CSV-соревнование (вы находитесь здесь).
2.Docker-соревнование.
3.Доразметка.
4.Docker-соревнование.
Проверка решения
Этап 1
Решения принимаются в виде csv-файла с тремя колонками: "id" - уникальный идентификтор, "brand" - бренды содержащиеся в данной чековой позиции, и "good" - товары содержащиеся в данной чековой позиции. Пример сабмита можно найти в файле sample_submission.csv.
Если в чековой позиции содержится больше одного бренда или товара, то нужно указать их через запятую. Промежуточные итоги подводятся на public-части тестовой выборки. Победители и призеры определяются на private-части тестовой выборки. И промежуточную, и окончательную таблицу лидеров можно найти во вкладке Таблица лидеров.
Этапы 2 и 4
Решения принимаются в виде zip-архива, имеющего структуру:
В файле metadata.json должны быть два поля:
Решение запускается в Docker-контейнере, указанном в metadata.json. На вход в entry_point подаются два аргумента: первый содержит путь к тестовой выборке, второй содержит путь для сохранения предсказаний модели
Ресурсы для образа:
Предсказания модели должны представлять собой csv-файл с тремя колонками: "id" - уникальный идентификтор, "brand" - бренды содержащиеся в данной чековой позиции, и "good" - товары содержащиеся в данной чековой позиции. Пример предсказаний можно найти в файле sample_submission.csv. Если в чековой позиции содержится больше одного бренда или товара, то нужно указать их через запятую.
Промежуточные итоги подводятся на public-части тестовой выборки. Победители и призеры определяются на private-части тестовой выборки.
Использование внешней разметки
Запрещается использовать полученную вручную разметку, кроме предоставленной организаторами в датасетах и в рамках процесса доразметки, в выборках для модели, а также в посылках. Организаторы имеют право запросить Docker-контейнер с обучением и инференсом модели для подтверждения честности полученных результатов.
Однако разрешается собирать неразмеченные данные из открытых источников, при условии полной автоматизации данного процесса (то есть участник может предоставить Docker-контейнер в котором воспроизводится весь процесс)
Объединение в команды
В соревновании разрешено объединение участников в команды до 3 человек. Возможность объединения в команды закрывается 24 июня в 23:59.
Базовые решения и полезные функции
Чтобы помочь вам быстрее влиться в задачу соревнования, мы подготовили несколько базовых решений задачи. Все эти материалы можно найти в репозитории по ссылке.
Призовой фонд
Призовой фонд разделят авторы 3 решений с наибольшей метрикой на private-части тестовой выборки на этапе 4
Для получения денежных призов победителям и призерам соревнования необходимо прислать свое решение в виде Docker-контейнера, содержащего код для обучения и инференса лучшей модели на языке Python.
Регистрация до 1 июля:
Примите участие в первом DataScience-соревновании от Альфа-Банка! Это не будет соревнованием по машинному обучению, так как на последнем этапе вы не будете подбирать гиперпараметры, а будете выбирать данные для разметки, как это происходит на практике, чтобы улучшить свое решение
Перед тем, как участвовать в соревновании, приглашаем вас в трек “NLP in practice”, где вы сможете подробно разобрать все технические этапы, с которыми сталкиваются дата-сайентисты в NLP на практике.
Задача
Данные чеков ОФД содержат детальную информацию о тратах клиентов. Они помогают улучшать качество моделей кредитного скоринга и склонности к банковским продуктам, а также улучшать пользовательский опыт за счет структуризации трат клиентов в мобильном приложении. Однако работа с этим источником затрудняется его неструктурированностью: вся информация о купленном товаре лежит в одной строке произвольного формата.
В предположении что каждая чековая позиция описывает какой-либо товар, наименование этого товара, а также его бренд, являются главной информацией, которую можно извлечь из чека. По итогу задача структуризации этих данных ограничивается выделением и нормализацией1 брендов и товаров.
Данные
Участникам соревнования предоставляются два датасета с чековыми позициями, размеченный и неразмеченный:
- В размеченном датасете для каждой чековой позиции указаны нормализованные бренды и товары входящие в нее в исходном виде.
- В неразмеченном датасете даны только сами чековые позиции.
Подробное описание файлов и полей датасета соревнования можно найти во вкладке Данные.
Метрика соревнования
Метрика соревнования - (F1_good + 2 * F1_brand) / 3, где F1_good- это метрика F1 на товарах, а F1_brand - это метрика F1 на брендах. Для подсчета F1 мы для считаем две метрики:
- Precision - доля сущностей из предсказания модели, которые оказались верными (то есть присутствуют в ответе для соответствующих примеров)
- Recall - доля сущностей в ответах, которые выделила модель
После чего метрика считается по знакомой формуле F1 = 2 / (1 / precision + 1 / recall)
Подробнее о данной модификации F1 для задач, подобных NER, можете прочитать по ссылке (раздел CoNLL).
Этапы соревнования
1.CSV-соревнование (вы находитесь здесь).
- Сроки проведения: 2 июня 17:00 - 1 июля 23:59
- Решения принимаются в формате CSV-файлов с ответами на тестовый датасет. Подробнее смотрите в пункте "Проверка решения"
- В следующий этап проходят топ-20% (но не более 20) участников согласно окончательной таблице лидеров соревнования
2.Docker-соревнование.
- Сроки проведения: 2 июля 12:00 - 15 июля 23:59
- Решения принимаются в формате Docker-контейнеров с инференсом модели. Подробнее смотрите в пункте "Проверка решения"
- Для подтверждения участия в этом соревновании необходимо до 4 июля 23:59 отправить в соревнование Docker-контейнер с кодом решения этапа 1. Участники, чей результат в CSV-соревновании будет сильно отличаться от результата их Docker-контейнера, будут дисквалифицированы.
- В следующий этап проходят топ-10 команд согласно окончательной таблице лидеров соревнования
3.Доразметка.
- Сроки проведения: 16 июля 12:00 - 23 июля 23:59
- Для получения дополнительной разметки каждая команда дошедшая до данного этапа может выбрать среди неразмеченного датасета не более 3000 примеров и направить их идентификаторы организаторам не позднее 16 июля 23:59 в telegram.
- Не позднее 23 июля 23:59 организаторы вышлют всем командам, которые запрашивали дополнительную разметку, их размеченные примеры через telegram.
4.Docker-соревнование.
- Сроки проведения: 24 июля 12:00 - 6 августа 23:59
- На данном этапе разрешается использовать доразметку полученную на этапе 3
- Решения принимаются в формате Docker-контейнеров с инференсом модели. Подробнее смотрите в пункте "Проверка решения"
- Авторы трех решений с наибольшей метрикой на private-части объявляются победителями и делят денежный приз
Проверка решения
Этап 1
Решения принимаются в виде csv-файла с тремя колонками: "id" - уникальный идентификтор, "brand" - бренды содержащиеся в данной чековой позиции, и "good" - товары содержащиеся в данной чековой позиции. Пример сабмита можно найти в файле sample_submission.csv.
Если в чековой позиции содержится больше одного бренда или товара, то нужно указать их через запятую. Промежуточные итоги подводятся на public-части тестовой выборки. Победители и призеры определяются на private-части тестовой выборки. И промежуточную, и окончательную таблицу лидеров можно найти во вкладке Таблица лидеров.
Этапы 2 и 4
Решения принимаются в виде zip-архива, имеющего структуру:
- metadata.json
- user_file_1
- user_file_2
- …
- user_file_n
В файле metadata.json должны быть два поля:
- image - публичный образ в DockerHub, например “xterrafunny/baseline-nlp-in-practice:latest”
- entry_point - команда для запуска в контейнере, например “python run.py”
Решение запускается в Docker-контейнере, указанном в metadata.json. На вход в entry_point подаются два аргумента: первый содержит путь к тестовой выборке, второй содержит путь для сохранения предсказаний модели
Ресурсы для образа:
- 8 vCPU
- 96Gb RAM
- Nvidia V100
Предсказания модели должны представлять собой csv-файл с тремя колонками: "id" - уникальный идентификтор, "brand" - бренды содержащиеся в данной чековой позиции, и "good" - товары содержащиеся в данной чековой позиции. Пример предсказаний можно найти в файле sample_submission.csv. Если в чековой позиции содержится больше одного бренда или товара, то нужно указать их через запятую.
Промежуточные итоги подводятся на public-части тестовой выборки. Победители и призеры определяются на private-части тестовой выборки.
Использование внешней разметки
Запрещается использовать полученную вручную разметку, кроме предоставленной организаторами в датасетах и в рамках процесса доразметки, в выборках для модели, а также в посылках. Организаторы имеют право запросить Docker-контейнер с обучением и инференсом модели для подтверждения честности полученных результатов.
Однако разрешается собирать неразмеченные данные из открытых источников, при условии полной автоматизации данного процесса (то есть участник может предоставить Docker-контейнер в котором воспроизводится весь процесс)
Объединение в команды
В соревновании разрешено объединение участников в команды до 3 человек. Возможность объединения в команды закрывается 24 июня в 23:59.
Базовые решения и полезные функции
Чтобы помочь вам быстрее влиться в задачу соревнования, мы подготовили несколько базовых решений задачи. Все эти материалы можно найти в репозитории по ссылке.
Призовой фонд
Призовой фонд разделят авторы 3 решений с наибольшей метрикой на private-части тестовой выборки на этапе 4
- 1 место – 450 000 рублей
- 2 место – 250 000 рублей
- 3 место – 100 000 рублей
Для получения денежных призов победителям и призерам соревнования необходимо прислать свое решение в виде Docker-контейнера, содержащего код для обучения и инференса лучшей модели на языке Python.
Регистрация до 1 июля:
Хочешь узнавать о новых хакатонах, соревнованиях первым?
Подписывайся на наши социальные сети:
Подписывайся на наши социальные сети:
Также, подписывайся на наш Telegram-бот, где мы присылаем хакатоны, соревнования по параметрам, которые интересны тебе: