Олимпиада IDAO. Битва специалистов по большим данным
Современные технологии позволяют хранить огромные объемы данных, но человечество еще далеко от понимания того, как заставить их работать в полную силу. Поэтому спрос на специалистов, работающих с данными, и на эффективные методики их анализа неуклонно растет. Одна из целей международной олимпиады IDAO — заинтересовать молодых разработчиков и аналитиков актуальными проблемами в Data Science. Ее участники лицом к лицу сталкиваются с реальными задачам в условиях, приближенных к «боевым»: сжатые сроки, ограничения в мощностях, максимум три человека в команде. Мы рассказываем, как показали себя участники соревнований 2018 года.
Необычные команды
Предполагалось, что в командах будет по три участника. Но, как показала практика, справиться можно и меньшим составом. Обладатель второго места Александр Макеев вышел на соревнования один. «Я привык работать в авральном режиме, так что для меня по сути ничего не поменялось. А так как моя команда SantiagoSeaman состояла всего из одного человека, проблем с коммуникацией и мотивацией не было, — рассказал он. — Эта олимпиада дала мне приятное ощущение от достижения поставленной цели. Приехал, получил второе место и уехал. Результатом вполне доволен. Для меня любой конкурс — это вызов в первую очередь самому себе».
На этой олимпиаде ждут любителей соревнований по машинному обучению и спортивному программированию разного профиля. Объединившись в команды, участники разных специальностей могут придумать новые решения актуальных проблем, и это доказали итоги первой олимпиады. Одним из членов команды Magic City, занявшей первое место, был математик Артем Плоткин. «Мы с ребятами вместе учимся в Санкт-Петербургском университете, они позвали меня за компанию, — сказал Артем. — Было интересно, хотя в будущем я не планирую заниматься большими данными. Скорее, математикой и образованием». Сейчас Артем вместе с другими участниками команды находится в Барселоне — одним из призов за первое место была стипендия на обучение в Harbour.Space University, так что в жизни финалистов неожиданно наступил новый этап. Но путь к победе был непростым.
Состязание в предсказании
Первый из двух этапов олимпиады проходит заочно. На платформе Яндекс.Контест десятки команд из России и других стран получили задание, разработанное совместно со специалистами Яндекс.Маркета. Участники получили историю поисковых запросов условных пользователей, на основе которых нужно было предсказать, какие категории товаров пользователи могут захотеть купить через неделю, хотя последние три недели ими не интересовались.
Финал проходил в Москве и ограничения были еще жёстче. Командам нужно было уложиться в 36 часов. 36 команд из разных стран приступили к работе в 11 часов утра в главном офисе Яндекса. «Подсмотреть решение было нереально. Во-первых, никто бы не стал обсуждать свои гипотезы во время работы — мы обсуждали их с другими ребятами, но уже после, — рассказал Артем из Magic City. — Кроме того, самое ценное было в идеях, а идеи невозможно быстро "подсмотреть"».
В рамках соревнования финалисты должны были решить, как распределить наличные по банкоматам, расположенным в разных местах, исходя из истории обналичивания и внесения вкладов. Правильное распределение денег остается одной из серьезных задач в банковской системе. Потери банка от «пролеживания» лишних денег в банкоматах исчисляются миллиардами рублей в год, а чтобы этого не происходило, необходимо спрогнозировать, где и сколько денег снимут, а сколько внесут. Задание разработала команда датасаентистов Сбербанка, которая не так давно сама решила эту проблему с помощью машинного обучения. Участникам предоставили реальные данные размещения и загрузки банкоматов, и в итоге им пришлось столкнуться с теми же проблемами, с которыми приходится иметь дело специалистам по анализу данных банка в реальной жизни. Одна из главных проблем — необходимость «чистить» данные и отслеживать аномалии. Например, учитывать, что на некоторые банкоматы возрастает нагрузка в тот день, когда в офисе, расположенном неподалёку, начисляют зарплату сотрудникам и многие тут же её обналичивают. Без учёта подобных ситуаций стабильного результата получить не удавалось.
Марафон на 36 часов
Сидя перед своими ноутбуками, участники искали эффективные решения задачи, периодически сверяясь с интерактивным рейтингом. Время распределяли по своему усмотрению. «В первой половине дня мы накачались кофе и доработали так до девяти вечера. Взглянули на рейтинг — мы были вторыми, и нас такой исход вполне устраивал. Поэтому спокойно поехали в гостиницу поспать, — поделился Маниш Кумар из индийской команды. — А когда мы вернулись утром, чтобы сделать второй подход, обнаружили, что мы уже далеко не на втором месте. И как бы мы ни старались, ничто не помогло нам исправить положение».
Петербургские участники из Magic City решили использовать предоставленное время по максимуму. «Мы работали до пяти утра и успокоились, только когда поняли, что уверенно держимся на первом месте, — рассказал Роман Пьянков. — К тому моменту уже идеи начали иссякать, но если бы мы не были уверены в победе, кто-то один остался бы работать дальше». В итоге первое место им удалось удержать и утром, когда подвели итоги соревнования.
Второе место, которое уже видела своим команда из Индии, в итоге занял украинский участник Александр Макеев. Он пользовался простой, но верной стратегией — зная, что быть в хорошей форме двое суток без сна невозможно, доработал до момента, когда начал терять концентрацию, и только после этого пошел отдохнуть, а чтобы не терять времени на дорогу, заранее нашел гостиницу неподалеку от офиса Яндекса.
Правда, прямой зависимости от времени, которое ушло на работу, и победой в соревновании не существует. Теоретически победить можно было и в первые часы, но это вопрос подготовки и везения — нужно было предложить лучший вариант, но вариантов можно было предложить сколько угодно.
В начале соревнования участникам выдали только публичные данные, на которых они могли обучить свою программу. После самопроверки, код отправляли на тестирование. Во время соревнования сданный на проверку код автоматически тестировался на небольшом объёме закрытых данных того же рода, чтобы не было возможности подстроить алгоритм под конкретные цифры, которые были на руках. Чем эффективнее получались модели у разных команд, тем выше они оказывались на турнирной таблице. Количество попыток было не ограничено, и участники предлагали разные версии, так что результаты на таблице постоянно менялись.
Финальная проверка началась уже после соревнований. Команды должны были предоставить самый удачный, по их мнению, код, но тестировали его уже на третьем массиве данных, с которым участники никак не соприкасались. Так можно было проверить универсальность кода и убедиться, что модель будет работать с любыми банкоматами, на которых ее будут применять. Итоги стали известны только на церемонии награждения на третий день, и с последними данными турнирной таблицы они не совпадали.
После спринта
Несмотря на проигрыш Маниш Кумар не жалеет, что приехал в Москву на соревнования. «В тройку победителей мы так и не вошли, но само звание финалистов IDAO — отличный повод, чтобы похвастаться, — сказал Кумар. — Никаких предложений по работе после соревнований мы не ждали, потому что работаем над своим стартапом в области кибербезопасности онлайн-платежей API, так что главная задача была испытать себя. В Индии Data Science только развивается, и нам предстоит долгий путь, но на IDAO в финал вышли три команды из Индии, что, по моему опыту, похоже на соотношение на других международных соревнованиях вроде Kaggle или TopCoder. Так что мне кажется, что в этом смысле IDAO находится на одном с ними уровне».
«Я и сам кэглер со стажем, — поделился обладатель второго места Александр Макеев. — Но соревнования по Data Science Kaggle — это забег на длинную дистанцию, к тому же реальная польза от этих решений стремится к нулю. А здесь — это спринт, во время которого команды выкладываются по полной, и за сутки становится понятно, кто лучший. Мне это ближе и понятней. Скорее всего буду участвовать в следующем конкурсе. Спасибо, что напомнили».