Трудности перевода: как говорить на одном языке с data scientist’ами

Инженеры, аналитики, ученые — какие специалисты сегодня работают с данными? Как data scientist’ов называют на русском языке? Чем в эксплуатации данных могут быть полезны разработчики? И как ставить им задачи для построения идеальных моделей? Рассказывает Евгения Сумина, программист-исследователь в VK, спикер курса «Data Analyst Junior» в Skillbox. Статья написана по материалам эфира для комьюнити Skillbox Code Experts.

Сцена из фильма "Матрица"

Комьюнити экспертов «Программирования» в Skillbox — это сообщество для взаимодействия авторов, спикеров, амбассадоров и кураторов образовательных программ направления. Сообщество включает более 170 участников из Сбера, Яндекса, Авито и других компаний с экспертизой в разных ИТ-сферах. Специалисты общаются на профессиональные темы, обмениваются опытом, получают помощь в развитии личного бренда, выступают с докладами по hard- и soft-скиллам на внутренних мероприятиях и внешних конференциях, публикуют свои материалы в медиа.

Какие специалисты работают с данными

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

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

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

  • Data scientist (или программисты-исследователи) — чуть меньше работают с данными и с построением классических гипотез, но уже строят и обучают модели, используя для этого сложные алгоритмы и ML-технологии. Отличие data scientist'а от ML-инженера в том, что они обычно не уходят вглубь моделей, а используют уже готовые решения. У них достаточно много работы с данными, например, предварительная обработка данных.
  • ML-инженеры строят и улучшают модели машинного обучения изнутри, совершенствуют под конкретную задачу или продукт, много работают с кодом.

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

В чем сложность наименования профессии data scientist

Программист-исследователь — кодовое название data science специалистов во многих российских компаниях. Этот человек на основе данных строит модели, позволяющие решать поставленную бизнесом задачу. По своему опыту скажу, что в российском бизнесе англоязычное название профессии встречается редко. Например, выполняя задачи data scientist, я занимала такие должности, как программист-исследователь или аналитик больших данных. У моих знакомых из других компаний эту должность иногда называют аналитик-разработчик.

Почему же употребляется название «программист-исследователь»? Потому что для специалиста по данным, data scientist, исследования — значительная часть работы. Любую задачу приходится делать каким-то уникальным способом. Даже если задачи друг на друга похожи, могут быть различия в подходе к обработке данных. Исследователи пишут код, так что и приставка «программист-» корректна.

Если говорить о функционале, то и здесь многие компании трактуют обязанности программиста-исследователя по-разному. Взаимопонимание важно определять на этапе оценки описания вакансии и собеседования. В одних компаниях хотят что-то более data-инженерное, в других — просят больше навыков разработчика. Можно встретить и полную путаницу, когда смешивают понятия аналитика, менеджера и product owner'а.

Какие навыки программиста-исследователя оценивают на собеседовании

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

Для работы исследователю необходимо владение Python и С++. Это стандартные языки для сферы работы с данными.

Также часто спрашивают про алгоритмы, причем не только в «Яндекс», где алгоритмы — мастхев. Могут спросить про опыт работы с программами: Hadoop, MLflow, Airflow. Но этот вопрос не принципиален. Многие компании готовы дать время, чтобы специалист научился пользоваться принятым в компании софтом.

Стоит прокачать знание английского языка, так как большинство статей по data science публикуются именно на нем. Чтобы оставаться в теме трендов индустрии, нужно хорошо понимать профессиональные термины. Особенно актуально это для сферы deep learning (deep learning – глубокое обучение или нейросети). Стоит чуть-чуть отстать — и окажешься далеко позади.

Следом на собеседованиях обычно дают кейсы на system-design: ставят задачу и просят предложить решение. Кейсы обычно связаны с тем, чем занимается предполагаемая команда соискателя. Например, в компании по доставке могут попросить придумать, как оценивать работу курьеров, рассчитывать их оплату, ускорять маршруты.

Важно не только уметь работать с данными и строить модели. Исследователю понадобятся и soft-скиллы: коммуникативные навыки и эмпатия. Специалист по работе с данными должен уметь объяснять сложное понятным языком. Мало просто показать метрики и графики заказчику, нужно объяснить, что именно они значат.

Чем занимается программист-исследователь

Примерный план работы data scientist выглядит так:

  • Сбор требований заказчика или их получение от бизнес-аналитика.

  • Составление предварительного плана работы.

  • Сбор и анализ данных.

  • Выбор конкретной модели, проведение экспериментов.

Эти шаги повторяются до тех пор, пока исследователь не получит результат. К нему можно, кстати, так никогда и не прийти. Тогда data scientist будет совершенствовать продукт до тех пор, пока работа на проекте не закончится. Самый длительный этап работы — загрузка датасета. Обычно его выносят именно на ночь. Пока исследователь спит, модели считаются.

Трудности перевода: как говорить на одном языке с data scientist’ами

Кто работает с data science инженерами

В команде исследователь взаимодействует с бизнес-аналитиками, дата-инженерами, бэкендерами, иногда клиентами и бизнесом. С кем именно и как часто — зависит от специфики компании, специальности и должности.

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

Как ставить техническое задание для программиста-исследователя

Главная отправная точка любого взаимодействия — правильно составленное техническое задание. Ведь важно заранее понять, какие данные нужны и какой результат необходимо получить в результате работы. Создание модели требует взаимодействия различных команд, поэтому техническое задание время от времени приходится составлять всем. Заказчику и бизнес-аналитику — на начальном этапе, когда требуется понять основные точки продукта. Data scientist’ам — на выгрузку и сбор данных.

Например, сейчас я работаю в NLP-отделе. За сбор нужных мне данных отвечают data-инженеры. Они просматривают сайты, выгружают из них информацию в таблицы. Чтобы не возникло недопонимания, я должна заранее подумать, какие данные мне понадобятся, и приложить качественное задание для инженеров.

Данные — это часто не только изображения, но и тексты — как в случае с чат-ботами. Текстовой модели для работы нужны тексты. Важно учитывать, что часто тексты, которые легко понимают люди, машиной обрабатываются плохо. Например, если делаешь чат-бота, который должен консультировать пользователей по содержимому инструкций, то для парсинга ты берешь страницы, на которых люди писали инструкции для таких же людей. Часто инструкции представляют собой большие тексты, которые бьются на подразделы, и в этих подразделах содержатся разные сторонние мысли. Data scientist может попросить технических писателей или толокеров (люди, которые за вознаграждение выполняют задания по тестированию и улучшению системы на краудфандинговой площадке «Яндекс.Толока») переписать эти тексты по-другому — понятно для машины. Ключевая мысль должна прослеживаться внутри каждого куска, потому что иначе получаются «мусорные» ответы.

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

«Подводные камни» работы с программистами-исследователями

В работе с data scientists есть своя специфика. Расскажу про некоторые особенности.

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

Если доступный набор данных для обучения DL-модели исчисляется в тысячах записей, получить хорошее качество будет довольно сложно. Достаточное количество данных — тоже растяжимое понятие. Обычно исследователи придерживаются политики «чем больше, тем лучше». Но иногда большее количество данных просто невозможно собрать, и приходится работать с тем, что есть.

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

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

В какой-то момент я просто сидела, отсматривала данные, и поняла, что у нас в половине датасета эти точки идут в неправильном порядке. Когда в половине объектов ответ в одном порядке, а в половине — в другом, это путает модель. Так ошибка нашлась, мы исправили датасет и сразу же все заработало. Помог перебор. Бывает и так.

Чтобы построить и обучить одну модель может уйти довольно много времени. Все зависит от того, насколько тяжелая модель, сколько ей нужно данных, и как долго она обучается. Бывают модели, которые обучаются несколько минут, но чаще это все-таки несколько часов. Тогда за сутки можно последовательно провести буквально несколько экспериментов.

Трудности перевода: как говорить на одном языке с data scientist’ами

Не все решения и разработки будут использоваться. В компании, где я работала, был кейс с чат-ботом, который после релиза остался невостребованным. Он должен был помогать людям, но по прошествии полугода им не начали пользоваться: людям было проще написать в личные сообщения, чем переписываться с роботом. С позиции data science инженеров эта задача была интересной, но пользователю инструмент оказался не нужен.

В моей практике была ситуация, когда менеджер продал решение клиенту как готовое, и уже потом пришел к нам и сказал его сделать. Ну а мы понимали, что задумка неосуществима. Нужно было предсказывать то, к чему у нас вообще не было доступа. Датасет невозможно было собрать. Мы предупредили, что решение работать не будет, но менеджер потребовал делать, потому что уже продал результат. Эвристическими методами мы добились результата на половину. Но модель в итоге предсказывала не то, что хотел заказчик, а лишь что-то приближенное. Это яркий пример того, как не надо взаимодействовать с программистами-исследователями.

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

Не стоит думать, что машинное обучение — это что-то волшебное, что сможет решить любые задачи. Заранее проанализируйте, есть ли у вас необходимые данные, сможете ли вы их предоставить. Ведь иногда данных и правда нет, а иногда — есть, но служба безопасности не дает их использовать. При этом сфера постоянно развивается, модели умеют все больше, и это вдохновляет.

88
Начать дискуссию