Виктория Тюфякова — не только один из ведущих дата-сайентистов в компании, но также ментор по Data Science в SkillFactory. Она объясняет, как устроено машинное обучение, как подготовиться к собеседованию и в каких сферах популярна наука о данных.
Чем я занимаюсь
Дата-сайентист с помощью навыков программирования и знания математических алгоритмов пытается извлечь пользу из данных. Понимая, что приносит бизнесу прибыль, он решает ежедневные проблемы: с помощью методов машинного обучения автоматизирует процессы, строит прогнозы, которые раньше считались вручную более простыми методами и полагались на опыт менеджмента, чтобы бизнес мог совершенствоваться.
Я ведущий дата-сайентист в компании «ИТ Магнит». Я пришла в проект три года назад, когда он только зарождался: сейчас мы прогнозируем оборот магазинов в новых локациях. Каждый следующий магазин все сложнее открывать, так как сеть большая и кажется, что мест больше нет. Чтобы находить максимально лучшее расположение, мы изучаем локации. Это может делать как опытный риелтор, который разбирается в недвижимости, так и дата-сайентист с помощью данных.
Мы анализируем геоданные с карт: количество жителей в локации, остановки, дороги, расположение магазина (во дворе, на окраине) и другие показатели. Также мы используем внутренние данные компании о работающих магазинах: например, площадь, прибыль. Благодаря машинному обучению мы можем спрогнозировать, какой оборот будет у будущего магазина.
В другом проекте мы прогнозируем каннибализацию магазинов: какие риски нас ждут, если мы откроем два магазина рядом. Для этого мы также используем геолокационные данные и данные с карт лояльности или из чеков. Это универсальные для ритейла задачи, с ними сталкивается много компаний.
Обучая модели, мы прогнозируем результат для новой локации. Цикл построения такой модели состоит из четырех этапов: сбор данных, feature engineering, обучение модели и анализ результатов.
Сбор данных
В нашей команде рабочий процесс построен так, что этим этапом в основном занимаются дата-инженеры: собирают информацию с карт, заливают базу данных, — а дата-сайентисты вытаскивают эти данные из базы с помощью SQL-запроса.
Мы рассказывали, чем занимается дата-инженер, в этой статье.
Feature engineering
Это конструирование признаков (обработанных данных) — формирование, перебор признаков, с помощью которых модель даст лучший результат.
Feature engineering происходит как перед обучением модели, так и после. После первого этапа обучения нужно проверить, насколько модель ошибается, на каких объектах, почему именно здесь, как улучшить результат, что нужно добавить. Например, она могла найти закономерность в данных и сделать важным признак, который, по логике, не должен влиять на оборот, это важно контролировать, так как, возможно, есть ошибка в признаке.
Построение модели
Модель обучается на размеченных данных: в нашем случае на магазинах, которые уже работают. Мы знаем правильный ответ, сколько они приносят прибыли, и должны максимально приблизиться к этому числу. Модель изучает эти данные и прогнозирует потенциальный результат.
Перед запуском мы устанавливаем гиперпараметры — исходные параметры алгоритма для управления процессом обучения. Это важный этап всего эксперимента, потому что гиперпараметры обеспечивают точность и позволяют контролировать переобучение.
Их подбирают с помощью перебора по сетке. Я, например, использую HyperOpt — это библиотека для перебора. Еще можно использовать GridSearch — она менее продвинутая, так как продолжает перебирать комбинации, даже если они неудачные.
Анализ результатов
Для анализа результатов используется контрольная выборка — это данные о работающих магазинах, которые не подаются в модель. Проверяя работу модели на этой выборке, можно выяснить, насколько точно она обучилась и как отображает реальность. Обычно большая часть всех данных идет на обучение, а процентов 20–30 отправляется на контроль. Если данных очень много, то выделяют еще и валидационную выборку — это вторая контрольная выборка для проверки надежности результатов.
Кроме математических метрик, нужно учитывать метрики бизнеса. Для них разница между прогнозом и истиной ничего не значит. Поэтому мы не можем просто отдать экспертам код или модель, которую построили, — нужно упаковать их, чтобы незнакомый с программированием человек мог нажать кнопку и получить цифру. Наша модель обернута в веб-интерфейс, где можно ввести параметры, значения признаков и увидеть результат.
Если нужно показать точность модели на контрольной выборке, мы оформляем это в отчеты, дашборды, а бизнес дальше изучает графики и метрики и принимает решение. Хорошо, если модель близко попадает в прибыль, которую получает магазин. Если модель ошибается больше чем на n процентов, то в ней нет смысла. То есть модели — это инструмент для принятия решений, но не само решение.
Как мы выбираем алгоритмы для построения моделей
При работе с бизнесом важно учитывать, что, если результаты нельзя объяснить ясной логикой, их, скорее всего, не примут, — поэтому мы используем градиентный бустинг и линейные регрессии. Они понятно устроены, видно, как принимается решение или обучается модель.
Про градиентный бустинг и линейную регрессию рассказывал дата-сайентист Михаил Волович.
В Data Science постоянно появляются новые алгоритмы, одни способы решения задач приживаются, а другие вымирают. Какое-то время на соревнованиях в Kaggle (платформа организации конкурсов по исследованию данных) была популярна технология стекинга, при которой объединяются несколько разных моделей. Это позволяет уменьшить ошибку и сделать метрику точнее на доли процентов. Однако для реальных задач это слишком изощренный способ: на него затрачивается много времени, он громоздкий. Если что-то пойдет не так, быстро найти ошибку не получится. В нашей задаче достаточно предоставить примерное значение прибыли, а не прогнозировать с точностью до рубля.
Главное правило — следить за сферой и не переставать учиться. Новые библиотеки и технологии появляются постоянно, не нужно зацикливаться на стандартных решениях, так как вполне вероятно, что для некоторых задач уже существуют более оптимальные и интересные инструменты.
Читайте также: Кто такой Data Scientist?
Как выполнять тестовые задания
В тестовых заданиях на дата-сайентиста работодатели обычно проверяют знание базовых навыков:
- Python;
- библиотека Pandas;
- библиотека NumPy;
- библиотека Sklearn;
- библиотека XGBoost и другие «деревянные» алгоритмы;
- SQL.
Для дата-сайентиста очень важно программирование, поэтому можно попробовать изучить стандартный синтаксис Python самостоятельно. Программирование — серьезный навык, нужно быть готовым, что на его изучение потребуется не полгода, а как минимум года полтора-два. Сейчас новичков очень много, поэтому и требования у работодателей выше.
У нас есть подборка советов о том, как составить резюме дата-сайентисту.
Совет: Важно здраво оценивать свои силы. Несмотря на то что профессия очень разрекламирована, лучше сначала окунуться в сферу, наработать базовый набор навыков: разобраться в математике, статистике, теории вероятности, чтобы не разочароваться в сфере на полпути из-за того, что слишком сложно.
При этом от человека не будут требовать знания специфической библиотеки, с которой работают в компании. В тестовом задании больше смотрят на базу и рассуждения кандидата.
Важно не просто выполнить стандартный сценарий, который дают на курсах: провести базовый анализ, построить пару графиков, распределить признаки, построить классическую модель. Нужно анализировать результаты, делать выводы, предлагать решения. Это неизбежно, потому что с первого раза модель не будет идеально точной.
Кандидат должен уметь объяснить ошибку, даже если она ужасная и ее не получилось исправить. Этим он покажет, что умеет не просто манипулировать цифрами, но и искать логику в данных, придумывать новые способы, делать выводы, — зачастую это намного важнее механического использования библиотек.
Когда я пришла в компанию, «Магнит» только начинал заниматься развитием направления Data Science. Мне дали тестовое задание на алгоритмы с плохими геоданными, в которых было много пропусков. Если на учебных проектах у меня была максимальная точность, то в этой задаче получались отрицательные показатели. Я неделю сидела над данными, сделала все, что могла, думала, что это провал. Но в итоге меня все равно взяли на работу, потому что они проверяли, какие нетривиальные решения я изобрету.
Где работают дата-сайентисты
За счет того, что рынок сейчас дифференцирован, дата-сайентист может выбирать, в каком направлении развиваться. Раньше исследователи делали все: доставали данные, обрабатывали их, анализировали, отправляли в продакшн. Сейчас за каждую задачу могут отвечать разные специалисты: дата-сайентисты, дата-инженеры, дата-аналитики, ML-инженеры.
Так как форматов данных очень много, то у дата-сайентистов большое поле для выбора специализации:
— можно работать над поиском или переводчиком, такие специалисты разбираются в NLP (Natural Language Processing);
— можно, как я, исследовать табличные данные, это популярно в продажах;
— можно изучать deep learning и работать с нейронными сетями и изображениями;
— можно заниматься распознаванием речи, speech recognition, — это тоже работа с текстом, но в аудиоформате.
Год назад я поняла, что хочу не только совершенствовать навыки или работать с разными форматами данных, но и улучшать свои софт-скиллы. Поэтому я стала ментором на курсе, начала выступать на конференциях. Кроме того, я завела блог — мне интересно делиться опытом, рассказывать о передовых технологиях.
Это еще один трек развития дата-сайентиста — можно расти не только вертикально, но и горизонтально: учиться понятно рассказывать о технических нюансах профессии, чтобы на работе грамотно представлять результаты коллегам из бизнеса.