День из жизни data scientist’а: практический опыт от Александра Кондуфорова

Автор статьи: Александр Кондуфоров
Machine Learning Engineer, руководитель направления Data Science в AltexSoft

 

Если говорить о работе data scientist’а, здесь нужно сделать важную оговорку: так как Data Science – это расплывчатое понятие, то в разных компаниях под ним понимают достаточно разные вещи.

В отличие от уже более-менее устоявшейся и понятной профессии программиста, QA или даже системного администратора, которые имеют плюс-минус один и тот же набор обязанностей в разных компаниях, требования к должности Data Scientist’а и сфера выполняемых им задач может варьироваться от анализа и обработки данных с использованием готовых инструментов до постоянного написания кода, а также от использования готовых алгоритмов с целью решения конкретной задачи до создания собственных новых алгоритмов и полноценной научно-исследовательской деятельности.

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

В нашей компании мы занимаемся в основном Predictive Modeling (прогнозное моделирование), причем не научным, а практическим. Т.е. в сферу нашей деятельности сейчас не входят Descriptive Analytics (описательная аналитика) и Exploratory Analysis (исследовательский анализ). И несмотря на то, что мы также проводим массу исследований и экспериментов, создавая свои собственные алгоритмы, мы все же стоим на плечах гигантов, которые занимаются наукой и продвигают ее по-настоящему.

Этапы работы

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

Соответственно, в этой работе очень много знакомых всем программистам стадий – анализ требований, проектирование, разработка, тестирование, развертывание. С той лишь разницей, что к этому набору до стадий проектирования и разработки добавляется очень важная стадия исследования (тот самый Research в термине R&D), цель которой – разработать алгоритм решения задачи и создать его прототип.

В определенной степени этот прототип можно назвать proof of concept, без успеха которого дальнейшая разработка бессмысленна. Проблема со стадией исследования заключается в том, что она очень сложно поддается планированию, особенно если мы не занимались подобной задачей ранее. Здесь слишком много неизвестных факторов, начиная от качества данных у клиента и заканчивая достижением требуемого бизнесом (клиентом) уровня точности алгоритма.

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

Если говорить про стадию исследования, то она, как правило, содержит стандартные этапы:

  1. сбор (если нужно), подготовка и очистка данных;
  2. анализ данных, выявление закономерностей;
  3. создание и тестирование моделей для решения задачи, используя различные подходы, feature extraction;
  4. выбор наилучшего решения.

При этом первый этап содержит основную часть рутинной работы, а самые интересные – второй и третий этапы.

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

Важность «командной игры»

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

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

Инструментарий data scientist’а

Если говорить об инструментах для моделирования, то мы используем R и Python в качестве основных языков, их статистические и ML библиотеки. Matlab, SAS или другими подобными, как правило платными инструментами, мы не пользуемся. При этом есть желание найти простой инструмент для быстрой обработки, анализа и визуализации данных, т.к. программирование этих рутинных действий отнимает больше времени. Пока что этим вопросом мы серьезно не занимались.

Александр Кондуфоров для DataReview

 

Добавить комментарий

Ваш адрес email не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =