Проекты на удалёнке: как прошла студенческая смена в «Сириусе»

«Нетипичные» аптеки, определение правдивых ответов и рецепты по фотографии

Проекты на удалёнке: как прошла студенческая смена в «Сириусе»

Анализ данных

С февраля по май 2020 года студенты и выпускники российских вузов участвовали в программе «Погружение в технологии искусственного интеллекта» в университете «Сириус». Они проходили адаптированный вариант курсов Школы анализа данных, изучали machine learning, статистику и язык программирования Python. А потом почти месяц работали над проектами, которые им предложили эксперты и менторы из Яндекса, Тинькофф и РЖД. Проектная часть смены должна была пройти Образовательном центре «Сириус» в Сочи, а прошла удалённо. Чтобы узнать, какими проектами занимались участники, с какими сложностями они столкнулись и каких результатов добились, мы поговорили с тремя командами.

Объёмы продаж в аптеках

Команда Александра Эдомского, Андрея Ануфриева, Руслана Омарова, Романа Опалева и Дмитрия Галкина строила модель предсказания годового объёма продаж в российских аптеках. Ментором проекта была Варвара Цурко из компании IQVIA. Информация о продажах была представлена только у 20% аптек страны, команда должна была понять, какой объём продаж у оставшихся 80%.

«С первого дня работа была правильно структурирована. Мы получили данные, а дальше каждый участник команды взял свою часть задачи. Россия — большая страна, регионы достаточно разнородные. Крупные города вроде Москвы и Санкт-Петербурга выделяются на фоне остальных», — рассказывает один из участников Руслан Омаров.

Была доступна информация о типах аптек, количестве товаров и объёме продаж по категориям: лекарства по рецепту, лекарства без рецепта, а также БАДы и витамины. Но не все категориальные значения в этих данных были прописаны полностью, а без этого невозможно построить модель.

«Были категориальные признаки, у которых не так много значений, и эти значения лучше представить в виде one-hot encoding. Это такой способ представления данных, когда на каждое значение заводится отдельный столбец с указанием признака. Например, для такого признака, как район, мы указывали единицу, если аптека находится в этом районе, и ноль, если находится в другом. Так нам удалось увеличить количество признаков с 70 до 100–130», — объясняет Руслан Омаров.

На следующем этапе участники команды задумались, нужно ли удалять из выборки нетипичных представителей, например, крупные аптечные сети или специализированные точки продаж. С одной стороны, такие аптеки выбиваются из общей массы и мешают модели корректно спрогнозировать общий объем продаж. У первых большие обороты, у вторых — уникальные лекарства или товары. Например, препараты для химиотерапии. С другой стороны, после обучения можно получить данные, по которым не будет понятно, какая это аптека — типичная или нетипичная. Поэтому ребята решили устроить эксперимент, обучить две модели: только с типичными и со всеми аптеками. В результате вторая модель показала более точные результаты.

Сложностью было и то, что из-за отсутствия данных в части категорий модель не обучалась корректно. Она подстраивалась под те данные, которые были. Чтобы обучить модель правильно, использовались регрессоры CatBoost и XGBoost. В результате у команды прогноз получился почти на 10% точнее, чем у экспертов компании.

«Студентам удалось собрать больше признаков, применить композиции алгоритмов машинного обучения, более точно настроить их гиперпараметры», — рассказала Варвара Цурко.

Такой прогноз может быть полезен фармацевтическим компаниям. На основе информации о продажах они могут принимать решение о сотрудничестве с аптеками. Такие исследования в компании IQVIA проводятся раз в полгода-год. Мы делали прогноз с учётом пандемии», — объяснил Дмитрий Галкин.

Работу ментора ребята оценивают хорошо. «Варвара всегда была на связи, всегда подробно отвечала на вопросы, встречалась с нами, всё объясняла, ни один момент не оставляла без внимания и, мне кажется, была доступна практически 24/7», — рассказал Дмитрий Галкин. Она также помогла ребятам подготовиться к защите и создать презентацию.

«Мы понимали, о чём будут спрашивать на защите проекта, поэтому вопросы нас не поставили в тупик. Защита прошла нормально, как мне кажется, наши ответы слушателей удовлетворили, а также понравились куратору и той компании, которая предоставила проект. IQVIA будет использовать результаты проекта в своей работе», — пояснил Руслан Омаров.

Повышение уровня достоверности ответов респондентов

Команда Никиты Гущина и Булата Исламова должна была изучить ответы респондентов сервиса Яндекс.Взгляд, определить их достоверность и предложить идеи по её улучшению.

Яндекс.Взгляд помогает внешним клиентам и сервисам Яндекса принимать решения, основанные на данных. Для этого проводятся опросы среди целевой аудитории. Этот сервис помогает проанализировать рынок и понять, стоит ли выпускать продукт, оценить влияние рекламы на знание бренда, выбрать дизайн, который вызывает желание купить продукт. Опросы транслируются на площадках рекламной сети Яндекса, а это в среднем больше 50 млн пользователей в сутки.

«Мы придумали задачу, дали выборку ответов и хотели узнать, как ребята будут оценивать достоверность и какие подходы будут использовать», — рассказывает ментор проекта Алексей Сотов. «Повышение уровня достоверности ответов респондентов — задача для студентов „Сириуса“ сложная, максимально приближенная к реальности. Нет алгоритма, нет правильного решения. Модель для такой задачи нетривиальная, она работает на основе многих признаков, для её решения мы в Яндекс.Взгляде постоянно экспериментируем. Было интересно посмотреть, как команды будут рассуждать и что они предложат для повышения достоверности».

«Мы долго выбирали между проектами, сначала склонялись к распознаванию голоса. Задача определения достоверности показалась нам самой нестандартной. И я не о технических моментах, а о глобальных вещах. Было непонятно, как подступиться, с чего начать. Это нас и заинтересовало», — объяснил один из участников Никита Гущин.

Сначала Булат и Никита решили связать достоверность со скоростью ответов и придумали простую модель, которая оценивает время. «Чем выше скорость ответа, тем более недостоверным он может быть», — размышляли они. «При анализе данных мы заметили, что распределение ответов зависит от того, какой у вопроса порядковый номер. Например, можно было явно увидеть, что ответ на первый вопрос занимал больше времени у всех пользователей, кажется, будто они вникали в суть происходящего. А на остальные вопросы отвечали более или менее одинаково по времени. Мы строили разные модели, генерировали несколько признаков для опроса, изучали длину вопроса и ответа, сопоставляли эти данные, учитывали порядок вопросов, но принципиального различия в результатах до и после применения модели не обнаружили. Это означает, что достоверность не настолько зависит от скорости ответа респондента. Чтобы построить более точную модель, нужно учитывать больше факторов», — рассказывает Булат.

«Так как проект образовательный, нет задачи найти единственное решение, важно научить смотреть на проблему с разных сторон, использовать разные способы решения. Чтобы команда не потерялась в деталях, я предложил ребятам проанализировать результаты нашего внутреннего эксперимента, который мы проводили еще давно. В этом эксперименте мы задали респондентам простой вопрос вроде „Где встаёт солнце?“, на который есть правильный и логичный ответ („На востоке“), неправильный ответ „На западе“ и ответ „Не знаю“».

Результаты получились интересные: только 53% выбрали вариант «На востоке». Ребята анализировали данные этой «псевдоразметки» и пришли к выводу, что, если респондент отвечает неправильно («Не знаю» или «На западе»), это не всегда означает, что он отвечает недостоверно. Он действительно может не знать ответа или запутаться. И понимание этих факторов помогло нам обучить более сложную модель уже на изначальном наборе данных.

«Модель работала относительно неплохо по точности предсказания, но было понятно, что есть ещё куда улучшать. У нас было ещё множество идей, но, к сожалению, мы не успели их реализовывать», — добавил Никита Гущин.

В условиях условиях онлайн-смены сложнее поддерживать мотивацию, заставлять себя работать, в том числе в силу факторов, отвлекающих во время самоизоляции. Но у Булата и Никиты получилось справиться с задачей лучше, чем представлял себе их ментор Алексей Сотов. «Они включились в работу, быстро разобрали данные и задали логичные вопросы. Когда они находили аномалии в данных, то старались найти причины и дать им объяснение. Видно, что у ребят аналитический склад ума, они умеют погружаться в задачу, умеют интерпретировать данные. И Никита, и Булат — сильные участники».

Ребята рассказали, что для работы использовали Trello, чтобы записывать идеи и распределять задачи, а также GitHub, чтобы сохранять и поддерживать версии кода. Обычно работа строилась так: каждый либо делает свою задачу, либо подходит к решению со своей стороны. Потом они созванивались с Алексеем и обсуждали, что получилось. Отправляли результаты в чат в Telegram, а потом созванивались, подводили итоги и планировали дальнейшие шаги.

DISH ID: всё о еде по фото

Команда Владислава Патрушева, Ольги Разуваевой, Ильи Щуки, Анастасии Табишевой и Сайдаша Мифтахова строила модель машинного обучения, которая по фотографии определяет название блюда, а затем подбирает рецепт, указывает состав и калорийность. В этом проекте было два ментора: Мария Тихонова и Алёна Феногенова, так они могли уделять команде больше внимания.

На первом этапе ребята обучили модель распознавать ингредиенты по фотографии и определять название блюда. На втором этапе — определять состав, калорийность и подбирать рецепт. В качестве данных для обучения команда использовала методы из области компьютерного зрения и обработки естественного языка (NLP) и датасет с аннотированными фотографиями из открытых источников. Одна из важных частей проекта — адаптация алгоритмов к специфике задачи и объединение этапов в единую модель.

«Это уже моя третья смена в „Сириусе“, — рассказывает Мария Тихонова, ментор проекта. — Если ты ментор, ты предлагаешь тему, в которой разбираешься и о которой знаешь, что в ней есть решение. А также понимаешь, как помочь студентам это решение найти. В нашем проекте алгоритм был понятен, но решения ещё не было. Найти его по силам студентам».

Ребята выбрали проект DISH ID по разным причинам. Ольга Разуваева до этой смены никогда не работала с распознаванием изображений, ей показалось это полезным опытом. Илье Щуке давно хотелось поработать в команде, а ещё этот проект заинтересовал его мультимодальностью: «Так называются задачи на стыке компьютерного зрения и обработки естественного языка. Я немного знал, что такое анализ данных на Python, но ничего не знал про искусственный интеллект».

В этом проекте менторы разделили ребят на две команды. Идея была в том, чтобы команды двигались параллельно, пробовали разные подходы и в конце выбрали лучшее решение. Мария поначалу опасалась, что ребята не поймут идею и начнут соревноваться. Но этого не произошло. Каждая команда проектировала свою архитектуру для выделения ингредиентов и они вместе разрабатывали бота. «Нужно не только сделать готовый продукт, но и научиться работать сообща. Это у студентов стало получаться далеко не сразу, но к концу смены они отлично сработались», — вспоминает ментор.

«На удалёнке было сложновато. Ты не мог показать наработки команде, чтобы сразу получить обратную связь. Поэтому приходилось созваниваться, обмениваться скриншотами, договариваться. Естественно, это усложняет дело и увеличивает время работы над проектом, — говорит Оля Разуваева. — Ещё было сложно работать с моделями, до этого я с ними не сталкивалась. Любой участник мог написать, что у него есть какие-то дела, и ему давали выходной. Каждый работал в своем темпе. Мне кажется, все внесли равный вклад в создание проекта».

«Нам здорово помогали менторы», — вспоминает Илья Щука. «Я иногда слишком уходил в обучение модели. Все уже работают над следующим этапом, а я ещё обучаю модели в надежде получить хорошие метрики валидации. Но нужно было двигаться дальше, и менторы нам это объясняли».

Илья рассуждает, что, если бы хватило времени, он бы попробовал больше моделей для выделения ингредиентов по фотографии. «Мы использовали простую и легкую модель. Но есть более тяжеловесные, которые по последним исследованиям дают интересные результаты с лучшим качеством».

Презентацию все делали вместе: создавали слайды, добавляли информацию, занимались оформлением и потом репетировали выступление перед защитой. Участники считают, что для такого короткого срока и весьма стесненных условий они сделали законченный проект. «Естественно, перед защитой было немного нервно, но, мне кажется, у нас получилось неплохо. Во время защиты любой мог протестировать нашего бота», — рассказывает Илья.

«Конечно, на удалёнке было сложно и нам, и ребятам», — вспоминает Мария. — Когда вы друг друга толком не знаете и не видите, работаете дома, эта работа идёт в свободное время. Одно дело, когда ты едешь специально на две недели в Сочи, где всё обустроено для проекта. И другое дело — месяц работать удалённо. У студентов нет опыта командной работы, как, скажем, у нас. Но ребята с этим отлично справились. Поначалу они больше работали поодиночке, но постепенно под нашим руководством стали объединяться. Нам было приятно это видеть.

Мы порекомендовали ребятам развить идею, студенты успешно прошли с этим проектом в SMILES (The Summer School of Machine Learning at Skoltech), в планах написание статьи. У команды классный настрой, это радует».

Больше по теме

Разработка, Яндекс в вузах, Анализ данных

Как посмотреть мир, справиться со стрессом и научиться проходить собеседования

Рассказывают участники олимпиады «Я — профессионал»

Менеджмент, Разработка, Анализ данных

Как взять максимум от стажировки

Опыт стажёра и советы сотрудников Яндекса

Анализ данных

Что было, что будет. Как предсказывать погоду и поведение человека

Ира Руденко о магистратуре в МФТИ, Яндекс.Погоде и автономных автомобилях

Анализ данных

ML-разработчик о том, зачем он пошел учиться краудсорсингу

«Для новых, прорывных задач данных нет вообще!»

Анализ данных, Яндекс в вузах

Каково получать магистерское образование онлайн?

Борьба с прокрастинацией, дружба через Slack и поиск мотивации

Анализ данных

Чем занимаются стажёры-аналитики в Яндексе

«Могу попасть в любую команду, и у каждой — свои задачи»

Анализ данных

Простой гид по байесовскому А/B-тестированию на Python

Перевод материала из блога Towards Data Science