Сезон чемпионатов 2019 открыт! Стартует SNA Hackathon аля ML Boot Camp 8
Привет!
Многие из читателей уже знают, что мы стараемся постоянно проводить различные IT-чемпионаты по самым разным тематикам. Только в прошлом году провели более 10 разных крупных соревнований (Russian AI Cup, ML Boot Camp, Технокубок и другие). В них приняло участие не менее 25 000 человек, а с 2011 года — более 150 000.
Если вы только сейчас узнали об этом, то поздравляем: именно с этой минуты вы стали частью большого сообщества людей, участвующих в наших соревнованиях и обменивающихся опытом друг с другом. Уже сейчас вы можете присоединиться к Telegram-группам сообществ по искусственному интеллекту, спортивному программированию, высоконагруженным проектам и администрированию, машинному обучению и анализу данных. Это поможет вам быстрее втянуться в серьёзную тусовку!
Итак, перейдём к делу. Сегодня, 7 февраля, мы рады открыть новый сезон чемпионатов 2019 года. И начнём с уже восьмого соревнования по машинному обучению и анализу данных, проводимого на специализированной платформе ML Boot Camp (наш аналог Kaggle) — SNA Hackathon, или ML Boot Camp 8 (как вам удобнее).
Организаторами этого чемпионата являются Mail.ru Group и Одноклассники. Рекомендуем после этой статьи прочитать краткую историю умной ленты, в которой Дмитрий Бугайченко рассказывает про алгоритмы ранжирования ленты в Одноклассниках, там очень много полезного.
А теперь расскажем механике чемпионата, его расписании, задачах и предлагаемых данных.
Механика чемпионата
Всё просто. После открытия чемпионата на ML Boot Camp, вам необходимо:
- прочитать условия задач (они уже есть в этой статье);
- выбрать задачу или задачи, которые вы собираетесь решать;
- скачать данные;
- начать строить модели и делать прогнозы;
- загружать свои ответы (обычный файл) в проверяющую систему.
Каждый день вы можете до пяти раз загружать к нам ваши файлы с ответами. Система проверит ответы только на 50% выборки (public), поэтому результаты будут являться предварительными. Финальные результаты на остальной части выборки (private) будут показаны участникам после того, как соревнование уже завершится.
Если вы ещё никогда не участвовали в таких соревнованиях, то в этом нет ничего страшного. Прочитайте статью, и у вас всё получится :)
Расписание
Чемпионат пройдет в два этапа:
- онлайн — с 7 февраля по 15 марта;
- офлайн — с 30 марта по 1 апреля.
После 15 марта будут подведены промежуточные итоги и 15 человек из топа лидеров по каждой из задач получат приглашения на второй этап, который пройдет в московском офисе Mail.ru Group. Кроме того, приглашения на заключительный этап получат три человека, оказавшиеся в лидерах рейтинга на конец 23 февраля.
Описание задач
Для соревнования SNA Hackathon были собраны логи показов контента из открытых групп в новостных лентах пользователей за февраль-март 2018 года. В тестовое множество спрятаны последние полторы недели марта. Каждая запись в логе содержит информацию о том, что и кому было показано, а также о том, как отреагировал пользователь на этот контент: поставил «Класс», прокомментировал, проигнорировал или скрыл из ленты.
Суть задачи в том, чтобы для каждого пользователя тестового множества отранжировать кандидатов, как можно выше поднимая тех, которые получат «класс»,.
Обычно мы давали одну задачу, но в этот раз решили дать сразу три. Вам не нужно их решать все, достаточно только одну. Поскольку пользовательская лента совмещает контент разного типа, то при его ранжировании востребованы навыки из разных областей — компьютерное зрение, работа с текстами и рекомендательные системы.
В рамках онлайн-этапа мы предлагаем три набора данных, в каждом из которых представлен только один из типов информации: изображение, текст или данные о разнообразных коллаборативных признаках.
Только на втором этапе, когда эксперты в разных областях соберутся вместе, будет раскрыт общий датасет, позволяющий найти точки для синергии разных методов.
После открытия чемпионата на платформе, вы увидите описание задач и получите возможность скачать необходимые для участия данные.
Описание данных
Информация представлена в формате Apache Parquet, который является основным для фреймворка Spark. Для работы с этим форматом из Python мы рекомендуем воспользоваться библиотекой Apache Arrow. Для простоты понимания в репозитории на GitHub выложены бейзлайны. Пользуйтесь!
В обучающем множестве данные разложены по дням, а внутри дня разделены на 6 частей по ID пользователя (один и тот же пользователь всегда попадает в ту же самую часть). Такая раскладка позволяет участникам анализировать не все данные сразу, а ограничиться определёнными днями и/или подгруппами пользователей.
Обучающие наборы разбиты на три непересекающиеся группы: с текстами, с картинками и с коллаборативными признаками. В каждой группе данные содержат следующие поля:
instanceId_userId
— идентификатор пользователя (анонимизированный);instanceId_objectType
— тип объекта;instanceId_objectId
— идентификатор объекта (анонимизированный);feedback
— массив с типами реакций пользователя (наличие в массиве токена Liked говорит о том, что объект получил «класс» от пользователя);audit_clientType
— тип платформы, с которой зашёл пользователь;audit_timestamp
— время, когда строилась лента;metadata_ownerId
— автор показанного объекта (анонимизированный);metadata_createdAt
— дата создания показанного объекта.
Для объектов из обучающего текстового множества дополнительно предоставлены связанные с ними тексты в формате Apache Parquet:
objectId
— идентификатор объекта;lang
— язык текста (на базе детектора языка Одноклассников);text
— сырой текст, связанный с объектом;preprocessed
— массив токенов, полученный после фильтрации пунктуации и стемминга.
В данных для ранжирования по картинкам дополнительно присутствует поле-массив ImageId
с MD5-хешами, связанными с объектами картинок. Тела изображений разложены по отдельным tar-файлам, в зависимости от первой буквы хеша.
В блоке с коллаборативными признаками представлена разнообразная дополнительная информация:
audit_*
— расширенная информация о контексте построения ленты;metadata_*
— расширенная информация о самом объекте;userOwnerCounters_*
— информация о предыдущих взаимодействиях пользователя и автора контента;ownerUserCounters_*
— информация о предыдущих взаимодействиях автора контента и пользователя;membership_*
— информация о членстве пользователя в группе, где опубликован контент;user_*
— подробная информация о пользователе;auditweights_*
— большое количество runtime-признаков, извлечённых текущей системой.
Структуры тестовых наборов эквивалентны структуре обучающих множеств, но не разложены по дням и не содержат поля feedback
.
Оценка результата
Участники чемпионата должны так отсортировать ленту, чтобы объекты с высокой вероятностью «класса» оказались наверху. Сортировка производится индивидуально для каждого пользователя, после чего формируется текст сабмита следующего вида (формат соответствует экспорту из Pandas-датафрейма с колонками типа int
и int[]
):
User_id_1,"[object_id_1_1, object_id_2_2]"
User_id_2,"[object_id_2_1, object_id_2_2, object_id_2_3]"
В сабмите должна присутствовать строчка для каждого пользователя тестового набора, а строки отсортированы по возрастанию ID. Объекты для каждого пользователя должны быть отсортированы по убыванию релевантности.
При оценке сабмита для каждого пользователя будет посчитан его личный ROC-AUC, после чего посчитано среднее по всем пользователям и умножено на 100.
Подарки
Второй этап будет проходить в командном формате, а победителей ждут ценные подарки, стикерпаки и другие призы:
- 300 000 рублей команде, занявшей первое место;
- 200 000 рублей команде, занявшей второе место;
- 100 000 рублей команде, занявшей третье место;
- 100 000 рублей команде, предложившей решение с наилучшими перспективами по внедрению в эксплуатацию по мнению жюри.
Кроме того, призёры онлайн-этапа (топ-33 из лидеров по каждой задаче) получат крутые футболки.
Бонус! Лучший и самый активный участник онлайн-этапа получит PlayStation / XBox на выбор. Критерии просты — много графиков по делу в чате, интересные вжухи вниз/вверх, ну и ещё что-нибудь. Победитель будет избран народным публичным голосованием.
Регистрация и сообщество
Специально регистрироваться для участия в соревновании не нужно. Достаточно один раз быть зарегистрированным на платформе и вам сразу будут доступны все соревнования и песочницы прошлых чемпионатов.
Не теряйте время. Сообщество ждёт новых героев. Welcome!