Как стать автором
Обновить
0
Ситимобил
Творим городскую мобильность

Все что вы (не) хотели знать о Data Science

Время на прочтение10 мин
Количество просмотров66K

Всем привет! Меня зовут Михаил Дьячков, и в Ситимобил я занимаюсь анализом данных и машинным обучением. Сегодня я хочу поговорить о Data Science: что же это вообще такое в глазах кандидатов, работодателей и экспертов; о несовпадении ожиданий, грейдах и собеседованиях, а также о том, какие задачи решают дата саентисты в Ситимобил.

Что такое Data Science?

Пожалуй, самое лаконичное определение, которое мне удалось найти в интернете: 

Data science (Наука о данных) — это дисциплина, которая позволяет сделать данные полезными.

Я думаю, что если найти пересечение различных определений что же такое Data Science, то им будет лишь одно слово — данные. Всё это говорит о том, что широта применения Data Science огромна. Согласитесь, но ведь в этом нет ничего хорошего ни для кого: ни для вас, ни для бизнеса. Эта широта не дает никакой информации о вашей потенциальной деятельности. Ведь с данными можно делать всё, что угодно. Можно строить сложные отчеты или «шатать» таблички с помощью SQL. Можно предсказывать спрос на такси константой или строить сложные математические модели динамического ценообразования. А еще можно настроить поточную обработку данных для высоконагруженных сервисов, работающих в режиме реального времени. 

А вообще, причем здесь слово «наука»? Безусловно, под капотом у Data Science серьезнейший математический аппарат: теория оптимизации, линейная алгебра, математическая статистика и другие области математики. Но настоящим академическим трудом занимаются единицы. Бизнесу нужны не научные труды, а решение проблем. Лишь гиганты могут позволить себе штат сотрудников, которые будут только и делать, что изучать и писать научные труды, придумывать новые и улучшать текущие алгоритмы и методы машинного обучения.

К сожалению, многие эксперты в этой области на разных мероприятиях зачастую связывают Data Science в первую очередь с построением моделей с помощью алгоритмов машинного обучения и довольно редко рассказывают самое важное, по-моему, — откуда возникла потребность в той или иной задаче, как она была сформулирована на «математическом языке», как это всё реализовано в эксплуатации, как провести честный эксперимент, чтобы правильно оценить бизнес-эффект.

Кто такой Data Scientist?

Когда мы поняли, что ничего не поняли, стоит поговорить о data scientist’ах — специалистах по анализу данных.

Data Scientist в глазах потенциального работодателя
Data Scientist в глазах потенциального работодателя

Одни считают, что эта должность подразумевает построение нейросетей в Jupyter Notebook’e.  Другие ждут от таких специалистов, что те придут и будут закрывать все задачи «под ключ». А третьи просто хотят иметь в штате таких модных ребят. Такое разное понимание должности или непонимание вовсе может навредить при найме и вам, как кандидату, и компании.

Очень хорошую аналогию с Computer Science привел Валерий Бабушкин в своем докладе «Почему вы никогда не наймете дата саентиста». Постараюсь кратко ее передать.

Computer Science — некоторая область тесно связанных между собой дисциплин, но при этом почему-то никто не ищет на работу Computer Scientist’a. На работу ищут разработчика, тестировщика, DevOps’ов, архитекторов. Даже разработчика ищут frontend- и backend-разработчиков, вплоть до того, что ищут backend-разработчика на C++. Почему это хорошо? Потому что даже из названия вакансии на 90 % понятно, чем будет занят backend-разработчик на C++. Это дает довольно много информации и снижает энтропию. А если вы вдруг ищете Computer Scientist’a, то по-русски это что, компьютерщик? Это что-то из девяностых или нулевых. «У нас сломался принтер, позовите компьютерщика». 

Из всего этого вырисовывается проблема. Если сходить на 10 собеседований, даже не обязательно в разные компании, в которых ищут Data Scientist’a, то вы поймете, что на каждом собеседовании от вас будут ожидать совершенно разного, и в конечном итоге у вас будут совершенно разные задачи. Где-то вам предложат в рамках ИИ-трансформации 200 Excel-файлов. В другом месте предложат поднять кластер на несколько петабайт. На третьем собеседовании вам расскажут, что ожидают от вас визуализацию метрик в Tableau. На четвёртом вас попросят построить real-time рекомендательную систему, которая будет работать под нагрузкой в несколько тысяч запросов в секунду. На пятом собеседовании будут задачи по компьютерному зрению, а на шестом придётся писать сложные SQL-скрипты. В седьмой компании вас заставят читать статьи, строить красивые Jupyter notebook’и и писать какие-то прогнозы. А где-то ещё и  собрать эти расчеты в Docker-контейнер, и с помощью Kubernetes развернуть свой сервис на много машин.

Налицо проблема несовпадения ожиданий у кандидата и работодателя. Она в первую очередь касается неопытных ребят, которые думают, что они, наконец-то, попадут в мир Data Science, придут на работу и будут писать .fit() .predict() на уже готовеньком датасете.

Но проходит какое-то время и наступает суровая реальность: оказывается, что прежде чем обучать модели и подбирать гиперпараметры, нужно сделать очень много чего. Например, пообщаться с бизнесом и понять, какая же у них на самом деле головная боль, затем сформулировать эту боль на математическом языке, найти данные для задачи, очистить их, подумать над признаками, собрать модели, обернуть всё это в MLflow, положить в Docker-контейнер, оценить потенциальные нагрузки и отправить в эксплуатацию. Это можно сравнить с ситуацией, когда у вас спрашивают: «Ягоду будете?», вы отвечаете: «Да» и получаете арбуз — это ведь тоже ягода.

Как решать проблему несовпадения ожиданий?

Алексей Натекин в своем докладе «Чем отличаются data analyst, data engineer и data scientist» нарисовал картинку с распределением Дирихле, то есть с вероятностью вероятностей.

 Предположим, что в Data Science существуют три основные компетенции:

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

  2. Разработка. Всё, что связано с разработкой, инженерными составляющими проекта, DevOps, SysOps, SRE, и прочее.

  3. Предметная область. Навыки коммуникации с коллегами и бизнесом, чтобы понимать, какую проблему они хотят решить, на какие вопросы ответить.

И Data Scientist в этой парадигме — это некоторое наблюдение из нашего распределения Дирихле. Но с помощью этого распределения можно ввести несколько новых должностей, которые будут давать более ясное представление о вашей потенциальной деятельности. Рассмотрим несколько из них.

Если вы ищете работу на позицию Machine Learning Engineer, то, скорее всего, будете заниматься введением в эксплуатацию моделей машинного обучения и поддерживать их в актуальном состоянии. Для этого вам потребуются навыки и знания в области алгоритмов машинного обучения, ну и, конечно, разработки.

Если вы аналитик данных, то, вероятно, вы будете заниматься проверкой статистических гипотез, проектировать и проводить эксперименты. Для этого вам требуются фундаментальные знания математической статистики, а также необходимо держать руку на пульсе бизнеса. 

Дата-инженер — это человек, который занимается ETL-процессами, архитектурой хранилища, составляет витрины и поддерживает их, организовывает потоковую обработку данных.

Machine Learning Researcher занимается исследовательской работой. Пишет и изучает статьи, придумывает новые математические методы. Таких позиций в России довольно мало, да и встречаются они, как правило, в крупных компаниях, которые могут себе это позволить.

Аналитик — это человек, который отвечает на вопросы бизнеса, и его плотность вероятности приходится на предметную область.

Наконец, DevOps максимально сосредоточен на разработке и развёртывании вашего кода в продакшене.

Junior/Middle/Senior/Team Lead/...

Попробуем коротко сформулировать профиль человека, который будет находиться на каждом из грейдов в мире Data Science. Не стоит забывать, что от компании к компании уровень компетенций для каждого из грейдов может довольно сильно отличаться.

Junior Data Scientist

  • Умеет реализовать полный DS-пайплайн: «приготовить» данные, обучить модель, измерить ее качество. 

  • Делает только то, что ему сказали.

  • Нуждается в постоянной опеке и контроле.

Middle Data Scientist

  • Имеет подтвержденный на практике результат, например, построил и внедрил модель оттока клиентов, которая экономит компании N млн. руб в год.

  • Может обсуждать бизнес-постановку задачи.

  • В меру самостоятельный.

  • Редко ошибается.

Senior Data Scientist

  • Имеет более обширный опыт по сравнению с мидлом.

  • Может самостоятельно формулировать и решать задачи.

  • Имеет опыт наставничества или готов быть ментором.

  • Обладает высоким уровнем эмоционального интеллекта.

  • Уровень технических компетенций выше мидла.

Если у middle ребят возникают проблемы с ростом и развитием, то зачастую это связано с

  • отсутствием проактивности

  • не готовностью брать ответственность и инициативу на себя и доводить дело до конца

  • неумением находить общий язык с бизнес заказчиками и смежниками

  • синдромом самозванца

  • недостаточным уровнем эмоционального интеллекта и/или отсутствия понимания его важности в рабочей деятельности

А дальше уже сложнее, потому что тимлид может руководить как командой из 2-3 человек, так и несколькими отделами. Вот примеры «уровней» тимлида:

  • Эксперт, который отвечает за конкретные участки DS-пайплайна. Работает в соответствие с поставленными перед ним задачами. Координирует работу нескольких младших коллег.

  • Ставит задачи экспертам в соответствии с заданным планом и координирует их работу. Несет ответственность за конкретное направление DS в компании.

  • Отвечает за продукт/проект/направление, имеющие большое значение для крупной компании. Определяет требования к команде и составляет планы в соответствии с заданным направлением действий.

  • Отвечает за стратегически важный продукт/проект/направление в крупной компании. Руководит большой командой data scientist’ов и аналитиков. Задает команде направление действий, оценивает сроки и затраты, отвечает за результаты проектов.

Чем выше ваш уровень, тем больше ответственности и тем сложнее направление R&D. А значит, и больше ваша зарплата.

Но всё же можно выделить характерные отличия тимлида. Безусловно, этот человек должен обладать техническими навыками (hard skills): он знает, как сделать так, чтобы «всё заработало», может ответить на специфичные для продукта вопросы, знает, как работает продукт. А еще тимлид планирует и формулирует задачи (впоследствии «продаёт»), раскладывает их на составляющие, напрямую общается с бизнесом, работает с командой, занимается развитием и ростом своих ребят. Для тимлида важно думать и жить в терминах продукта и бизнеса, быть проактивным и доводить дело до конца.

Подготовка к собеседованию

Я за свою карьеру провел немало собеседований и могу дать несколько советов начинающим специалистам, что нужно обязательно сделать перед отправкой резюме в компанию и собеседованием.

  1. Прежде чем откликаться на вакансию, внимательно прочитайте её описание до конца. Казалось бы, что за дурацкий совет. Но, как показывает практика, очень многие не делают даже этого. И на собеседовании порой возникают неловкие моменты.

  2. Попробуйте поискать информацию о вашей потенциальной компании. Было бы здорово иметь представление о ней и о продукте.

  3. Ознакомьтесь со списком ожидаемых знаний и навыков. Ответьте себе на вопрос, пересекаетесь ли вы с этим списком, и если да, то насколько глубоко.

  4. Определите для себя, на какую зарплату вы претендуете. Если не можете ответить, то можно посмотреть актуальные вакансии с вилками в сообществе OpenDataScience в канале #_jobs, и таким образом оценить текущее состояние рынка.

  5. Займитесь своим резюме. Его структура и выделение ваших ключевых особенностей, навыков и результатов очень важны при просмотре работодателем.

  6. Не нервничайте. Проходить собеседования тоже нужно уметь, и тут без опыта никуда.

Что будет на собеседовании

Беседа будет строится вокруг:

  • Вашего опыта, подтвержденного результатом. Важно понимать, как ваш проект повлиял на бизнес, а не как вы повысили auc roc на 2 %.

  • Ваших знаний о моделях и алгоритмах машинного обучения. Причем вряд ли на собеседовании на позицию, где предстоит заниматься задачами динамического ценообразования, вас будут спрашивать о глубоких нейронных сетях, которые решают задачи сегментации изображений.

  • Метрик оценки качества моделей (как оффлайн, так и онлайн).

  • Статистических критериев и всего, что каким-то образом связано с проведением экспериментов.

  • Программирования, например, на Python (задача для разминки: реверсировать список).

  • Возможно, алгоритмов и структур данных, если ваша работа как-то связана с высоконагруженными сервисами.

  • Технологий, с которыми вы работали и/или с которыми вам предстоит работать.

  • Culture fit и поведенческой составляющей.

Примеры популярных технических вопросов на собеседовании с начинающим специалистом, ответы на которые, увы, могут дать далеко не все:

  • Что такое логистическая регрессия и как она работает?

  • Чем фундаментально отличается градиентный бустинг на деревьях от алгоритма случайного леса?

  • Как проверить статистическую значимость в АБ-эксперименте?

  • Какие вы знаете метрики оценки качества в задачах бинарной классификации?

  • Какие встроенные структуры данных в Python неизменяемы?

На самом собеседовании не стесняйтесь задавать вопросы. Это не экзамен, здесь должен быть диалог. Поинтересуйтесь, какая у вас будет команда, задачи, какие технологии вы будете использовать в работе, какие от вас ожидают результаты, какие глобальные цели у компании. 

Как дела обстоят у нас

Мы создаем систему городской мобильности с человеческим отношением к пассажирам и водителям. И хотим сделать это отраслевым стандартом. Хотим встречать и провожать пассажиров в аэропорты и на вокзалы; доставлять важные документы по указанным адресам быстрее курьеров; сделать так, чтобы на такси было не страшно отправить ребёнка в школу или девушку домой после свидания, даем возможность выбрать транспорт — каршеринг, такси или самокат. И даже если нашим пассажиром является котик, то ему должно быть максимально комфортно.

У нас есть большой отдел эффективности платформы (или Marketplace), где в каждом из направлений работают специалисты по обработке и анализу данных.

  • Ценообразование: правильный и правдоподобный предрасчет цены для клиента на предстоящую поездку. Мы разрабатываем алгоритмы, которые тонко настраивают наши цены под специфические региональные и временные условия, а также помогают нам держать вектор оптимального ценового роста и развития

  • Клиентские мотивации: помогают нам привлекать новых клиентов, удерживать старых и делать нашу цену самой привлекательной на рынке. Основное направление — это разработка алгоритма оптимального распределения бюджета на скидки клиентам для достижения максимального количества поездок. Мы стремимся создать выгодное предложение для каждого клиента, поддержать и ускорить наш рост

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

  • Динамическое ценообразование: главная задача направления — гарантировать возможность уехать на такси в любое время и в любом месте. Достигается это за счет кратковременного изменения цен, когда желающих уехать больше, чем водителей в определенной гео-зоне.

  • Распределение заказов: эффективные алгоритмы назначения водителей на заказ уменьшают длительность ожидания и повышают заработок водителей. Задача этого направления — создать масштабируемые механизмы назначения, превосходно работающие как в целом по городам, так и в разрезе каждого тарифа.

  • Исследование эффективности маркетплейсов: центральное аналитическое направление, задачей которого является анализ эффективного баланса между количеством водителей на линии и пассажирами.

  • ГЕО сервисы: эффективное использование геоданных помогает различным командам эффективно настраивать свои алгоритмы, которые напрямую зависят от качества этих данных. Мы стремимся создавать такие модели, сервисы и алгоритмы, которые не только повышают качество маршрутизации и гео-поиска, но и напрямую воздействуют на бизнес, а также клиентский опыт.

Итог

Специалист по анализу данных (data scientist) может иметь очень широкий спектр обязанностей. Это сложная и увлекательная профессия, требующая самых разных навыков и позволяющая решать очень интересные задачи. Если вас заинтересовали наши направления, то обязательно заходите на нашу публичную страницу с вакансиями и откликайтесь на них.

Теги:
Хабы:
+18
Комментарии7

Публикации

Информация

Сайт
city-mobil.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия
Представитель
leleles

Истории