Карьера в IT: должность Data Scientist / Machine Learning Engineer

Robot image via Shutterstock.

Зимой-весной этого года на DOU был хороший цикл статей про IT-должности, начиная от QA Engineer и заканчивая CTO. Я хотел бы продолжить этот цикл статьей про пока редкие в Украине, но уже очень популярные в развитых странах должности Data Scientist и Machine Learning Engineer.

Отмечу, что данная статья — плод моего субъективного (а значит, несовершенного) понимания ситуации. И если кто-то захочет поправить меня или дополнить, я буду очень рад.

Data Science и Machine Learning

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

Пока звучит не очень круто.

Но далее следует кое-что поинтереснее: «Объединяет методы по обработке данных в условиях больших объёмов и высокого уровня параллелизма, статистические методы, методы интеллектуального анализа данных и приложения искусственного интеллекта для работы с данными, а также методы проектирования и разработки баз данных.»

А дальше — больше: «... с начала 2010-х годов считается одной из самых привлекательных, высокооплачиваемых и перспективных профессий».

Т.е. Data Science — это такой же обширный «зонтик», как и Computer Science, только направленный на обработку данных и извлечение из них полезной информации.

Хорошо, с Data Science мы поверхностно разобрались. Что же такое машинное обучение (Machine Learning)?

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

Но лично мне намного больше нравится другое определение by Arthur Samuel:
«Machine Learning is a field of study that gives computers the ability to learn without being explicitly programmed».

То есть глобальная цель машинного обучения — это научить машину решать различные сложные задачи, которые сложно решить алгоритмически, используя лишь привычные нам циклы и ветвления. Например, узнавать человеческие лица или другие объекты, понимать голос, водить автомобиль (Google Self-Driving Car), диагностировать заболевания по симптомам (Watson), понимать тональность или смысл текста, принимать решения о рисках выдачи кредита, предсказывать продажи и спрос на аренду велосипедов в городе, советовать товары, книги (Amazon), фильмы (Netflix), выполнять функции личного помощника или секретаря (Siri, Android Now, Cortana), захватывать мир и многие другие.

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

Так чем же занимаются Data Science и Machine Learning специалисты?

Позиция Data Scientist

Если посмотреть на вакансии Data Scientist от различных компаний, можно увидеть достаточно большое разнообразие задач и требований. Иногда под Data Scientist позициями понимают даже обычных Data Analyst. Однако определенная срединная линия всё же прослеживается.

Стандартные задачи:

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

Кроме того, есть и более специфические задачи, зависящие от домена, в котором работает работодатель или выполняется проект.

Для выполнения этих задач в основном требуются такие знания и навыки:

  • Дискретная математика, статистика и статистический анализ
  • Machine Learning алгоритмы
  • Умение работать с хранилища данных (реляционными и нереляционными), владение SQL и другими языками запросов
  • Инструменты для анализа данных и моделирования:
    • R
    • Python (NumPy/SciPy)
    • Matlab
    • SPSS/SAS
  • В случае обработки больших объемов данных (Big Data) часто добавляются:
    • Hadoop и весь спектр сопутствующих технологий и инструментов: Pig, Hive и т.д.
    • Java
  • Визуализация данных
  • Понимание предметной области (крайне важно!)
  • Высокий уровень коммуникации

На тему экспертизы, требуемой Data Scientist для работы, есть хорошая картинка:

Самое интересное, что Data Scientist не обязан уметь хорошо программировать, а может ограничиться инструментами вроде Matlab, SPSS, SAS и др. Возможно, поэтому на эту позицию часто претендуют не столько разработчики, сколько бизнес аналитики (Business Analyst), аналитики данных (Data Analyst) и другие специалисты по анализу.

Из-за небольшого присутствия в специальности программистов чисто технические навыки, такие как умение программировать, работать с Big Data и базами данных, очень ценятся. По оценке Payscale.com знание Python, Java и Hadoop могут добавить к средней зарплате от 5% до 14%.

Таким образом, позиция Data Scientist может быть интересна не только программистам, но и специалистам в прикладной математике и статистике, Machine Learning, Business Intelligence, а также аналитикам данных.

Позиция Machine Learning Engineer

Позиция Machine Learning Engineer является более «технической», если можно так выразиться. Иными словами, ML Engineer имеет больше общего с классическим Software Engineering, чем Data Scientist.

Стандартные задачи ML Engineer в целом похожи на Data Scientist. Также необходимо уметь работать с данными, экспериментировать с различными Machine Learning алгоритмами, которые позволят решить поставленную задачу, создавать прототипы и готовые решения.

Требуемые знания и навыки для данной позиции тоже во многом пересекаются с Data Scientist. Из ключевых отличий я бы выделил:

  • Сильные навыки программирования в одном или нескольких популярных языках (как правило, Python и Java), а также в базах данных;
  • Меньший упор на умение работать в средах для анализа данных, но больший упор на алгоритмы Machine Learning;
  • R и Python для моделирования предпочтительнее Matlab, SPSS и SAS;
  • Умение использовать в приложении готовые библиотеки для различных стеков, например, Mahout, Lucene для Java, NumPy/SciPy для Python;
  • Умение создавать распределенные приложения, используя Hadoop и другие решения.

Кроме того, для более узких применений требуются дополнительные знания:

  • Natural Language Processing, Computer Linguistics, Sentiment Analysis для обработки, понимания и оценки тональности текста;
  • Computer Vision для распознавания изображений и видео;
  • Digital Signal Processing для работы со звуком, сенсорными данными и различными другими сигналами;
  • Recommender Systems для построение рекомендательных систем.

Для Data Scientist подобные требования встречаются намного реже. Как я уже упоминал, они больше работают с датасетами.

Кроме того, довольно часто компании, которые специализируются в более узких областях, могут и свои позиции называть уже, например, Text Mining Engineer, Senior Computer Vision Engineer, Computer Vision Scientist и т.д.

Как видите, позиция ML Engineer (или более узкие) требует больше знаний в Software Engineering, и, соответственно, хорошо подойдет опытным разработчикам. Довольно часто срабатывает кейс, когда обычному разработчику по долгу службы приходится решать ML задачу, и он начинает разбираться в нужных алгоритмах и библиотеках.

Преимущества и перспективы

А теперь я постараюсь объяснить, кому именно и почему это может быть нужно.

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

Сергей Шельпук, руководитель направления Data Science в V.I.Tech:

«Обычно наша, программистов, работа заключается в написании бизнес-логики „if — then — else“. Она позволяет программам работать намного быстрее, чем могли бы мы сами — компьютер не в пример продуктивнее человека в вычислениях. Но таким способом мы не можем создать программу, которая была бы умнее, чем тот, кто ее написал.

Но в Data Science мы создаем системы, которые умнее нас. Мы учим их учиться и, анализируя данные, принимать решения самостоятельно. Это как шашки Артура Сэмьюэла — его программа научилась играть лучше, чем он сам. Создание систем, которые умнее своего создателя, — этот элемент „магии“ привлекает меня в Data Science больше всего :)»

Виталий Юрьев, Data Scientist в Eleks:

«Data Science я почав займатися близько 2 років тому. Перше моє знайомство почалося з Computer Vision, коли прийшло завдання від клієнта розробити систему по знаходженню і розпізнаванню пляшок різних брендів. Для виконання цього завдання мені знадобилися знання з університету по матаналізу, статистіці, теорії ймовірності і лінійної алгебри. Після розробки прототипу я зрозумів, що Machine Learning — це те, чим я хочу займатися. За ці два роки я успішно пройшов декілька онлайн-курсів на Coursera, Udacity та інших MOOC.

Data Science для мене — це не buzzword, а надзвийчайно складний і наукоємний процес, результатом якого є створення грандіозних рішень, які роблять наше життя простішим.»

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

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

Если сравнить зарплаты Software Engineer и Data Scientist на том же Payscale.com, то можно увидеть, что и диапазон, и медиана выше для Data Scientist:
— Software Engineer — $75K
— Data Scientist — $95.5K

Такая же тенденция наблюдается, когда мы добавим приставку Senior к обеим позициям:
— Senior Software Engineer — $100.5K
— Senior Data Scientist — $124K

(К слову, рекомендую посмотреть подробнее информацию на сайте, особенно тем, кто планирует завести трактор в Штаты — весьма интересные графики, в том числе есть и разбивки по городам и крупнейшим работодателям).

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

Сервис поиска работы Indeed.com, который использует другую методику сбора данных, также считает, что за Machine Learning и Data Science работодатели платят больше денег:
— Software Engineer — $102K
— Machine Learning — $112K
— Data Scientist — $117K

Крупные и именитые компании, например, Google или Amazon, предлагают очень много вакансий по Machine Learning и Data Science.

Если вам интересно, почему существует подобная ситуация на рынке труда, советую также почитать неплохую статью Why Data Scientists Get Paid So Much, а также So you want to be a data scientist?.

Как видите, всё очень серьезно :)

Ситуация в Украине

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

На это я могу лишь ответить, что количество таких проектов постоянно растёт, о чем свидетельствует рост числа вакансий на рынке труда, не говоря уже о том, что некоторые компании уже создали отделы по Data Science / Machine Learning и развивают эту услугу.

Полгода назад я написал статью Ландшафт искусственного интеллекта в Украине, где перечислил продуктовые и сервисные компании, которые были мне известны на тот момент. В комментариях мне набросали еще много названий компаний, про которые я не знал. Кроме того, когда мы начали подготовку конференции AI Ukraine 2014, на нас вышли представители еще нескольких украинских компаний, которые активно используют ИИ алгоритмы в своей работе, например. Представители многих из них выступят на нашей конференции и расскажут о своем опыте.

С чего начать

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

Если вы заинтересовались, но не знаете, с чего начать:

1. Data Science / Machine Learning
Есть множество курсов по Machine Learning и Statistical Learning на Coursera, Udacity и других ресурсах. Советую начать с нескольких:
— Machine Learning by Stanford
— Introduction to Data Science by UoW
— Data Analysis by Johns Hopkins
— Data Science by Harvard

2.Язык R
— Swirl: swirlstats.com
— Try R: tryr.codeschool.com
— Computing for Data Analysis by Johns Hopkins.
— R Tutorial

3.Statistics
— Statistical Learning by Stanford
— Statistics by UoT
— Statistics One by Princeton

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

После того как вы немного разберетесь с R, анализом данных и Machine Learning, можно попробовать выполнить учебные задания на Kaggle. Например, попробовать предсказать выживаемость пассажиров Титаника, распознать рукописные цифры или предсказать спрос на аренду велосипедов в городе.

Конференция AI Ukraine 2014

Если вы дочитали статью до этого места, то вы, вероятно заинтересовались темой :) В связи с этим приглашаю вас на конференцию AI Ukraine 2014, где будет намного больше примеров использования Data Science и Machine Learning в реальных проектах. Я отвечаю за составление программы конференции и могу сказать, что мы постарались найти и отобрать самые интересные доклады, которые покрывают различные области ИИ.

Расписание конференции, инфо о каждом докладе и докладчике, а также регистрация — на сайте AI Ukraine 2014. Для этого достаточно кликнуть на докладе в программе. Все новости конференции публикуются на нашей страничке в Facebook.

Для пользователей DOU действует скидка 5% по промокоду DOU.

В завершение хочется сказать, что это первая масштабная конференция, посвященная применению различных алгоритмов искусственного интеллекта в Харькове, и одна из первых в Украине. Здесь будут интересные доклады на любой вкус. Не пропустите её!

P.S. Если вы заинтересовались Data Science и Machine Learning — напишите в комментариях, какие темы были бы вам интересны, и мы с коллегами постараемся рассказать о них.

Маєте важливу новину про українське ІТ? Розкажіть спільноті. Це анонімно.І підписуйтеся на Telegram-канал редакції DOU

👍НравитсяПонравилось0
В избранноеВ избранном1
Подписаться на автора
LinkedIn



Підписуйтесь: Soundcloud | Google Podcast | YouTube


62 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

datacamp — очень хороший сервис для изучения R.

Спасибо за статью, будет что сбросить собеседнику, когда опять спросят «Кем-кем вы себя видите через 5 лет??»
:)

Мне обе эти области интересны.

А вы не злитесь :)
Люди верят в хорошее. Сегодня нет. Завтра будут.
И потом, где нет вакансий? В Украине и Белоруси? Так в других странах, зато, есть. И у нас, значит, будут.
Мне не важно, как называется позиция в компании. Мне важно, чтобы было интересно заниматься любимым делом.

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

У меня тут знакомый с бородой продает свои услуги Default-банку. Сам себе директор/разработчик. Чем не вариант? Правда, надо кроме навыков круто кодить еще уметь с людьми договариваться.

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

Это нормально — у всех бывает отстойное настроение «все пропало», «время ушло» и т.д. Потом идешь и делаешь, тыжпрограммист :) Глаза боятся, руки — делают.

Да какой вы аутист? Вон сколько на форуме написали!

Кстати, кто-то будет ехать из Киева на машине на день ? :) Если что, пишите в личку, тема интересна.

По поводу самообучения. lukstafi.blogspot.com/...university.html чудак составил программу на 5 лет :) Все быстро меняется, но взглянуть было интересно.

Сейчас идет MMDS: мне нравится :) Есть введение в тему ML на корсере: Machine Learning (Andrew Ng), если вдруг кто не видел. Специализация от John Hopkins University показалась довольно скучной, но я не проходил, может кто прошел сможет дать отзыв.

ЗЫ Были на корсере еще 2 очень крутых курса по NLP, надеюсь они повторят. Но лекции и сейчас доступны для просмотра. Очень клевые. На Udacity тоже есть материалы, но для полноты ощущений надо оплатить курс, я не пробовал; но может доберусь отпишусь про их полезность.

Виктор, наверно, вы плохо прочитали топик. В нем рассказывается и про Data Science/Machine Learning как field of study, и про позиции Data Scientist/Machine Learning Engineer.

Что касается вакансии, то она про Big Data и Natural Language Processing. NLP — это тоже машинное обучение, поэтому писать дополнительно Machine Learning не нужно. Хотя в целом название вакансии действительно более крутое, чем то, что внутри.

Сложно сказать по описанию вакансии, сколько времени человек будет уделять условному ML, и сколько — программированию на Java — надо спрашивать на собеседовании. Важно понимать, что если вы не занимаетесь только exploratory analysis, то вам все равно придется реализовывать ваши алгоритмы на конечной платформе. В данном случае это Java. Это как раз тот самый случай, когда требуется программист со знанием ML.

У Java сейчас один из самых продвинутых стеков в плаге ML и обработки больших данных. Это можно считать косвенным доказательством того, что её производительности достаточно для решения многих задач.

Посмотри Apache Hadoop, Mahout, Lucene. Плюс у них там еще куча всего есть.

> А тормоза? Или уже Java в математических вычислениях не хуже С++? Странно как-то это.

А что здесь странного? Java и плюсы уже давно конкурируют по производительности.

NLP — это не машинное обучение. Машинное обучение — это лишь один из подходов к обработке естественного языка.

на корсере кстати только что начался курс mining massive datasets от stanford-а — www.coursera.org/course/mmds
Пока правда тяжело судить насколько он хорош.

Прохожу на курсере по вот этому списку: www.coursera.org/...ience/1/courses
прошел уже больше половины, но пока всё какое-то очень уж простое, надеюсь в capstone project будет что-то более интересное и сложное, а вот по ml курс там понравился больше.

Интересно было бы узнать больше о реальном применении всего этого, но не в области рекламы и e-commerce, а ещё интересно какой процесс работы у ml/ds специалистов, как проходит рабочая неделя, насколько больше работы в этой области, чем специалистов умеющих её хорошо делать:)

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

Процесс работы мало чем отличается от обычного программирования :) Тоже разбираешься с чем-то, думаешь, пишешь код. Что именно вас интересует?

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

очень хорошо применяется в хэдж фондах в виде различных quant позиций

соглашусь — украинских хэдж фондов я не знаю (

собссно, поддержу по поводу (пока что) маленького рынка труда в Украине. Кроме того, среди существующих вакансий в основном идёт «перекос» в сторону «программерских», а не статистических/аналитических скиллов.
А в РБ есть Гугл, например? они по идее обработкой сигналов и речи интересуются.

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

Периодически появляются. Там пока не нанимают людей пачками, как на Java или PHP. В 90-е годы и пачек вакансий обычных программистов, как сейчас, не было, а теперь есть.

Не знаю, как в РБ, а в Украине это направление потихоньку развивается.

Так вам на Odesk дорога. Вакансії там не кожен день, але підберете собі. Kaggle job-board як варіант

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

Отличная статья, спасибо!

Мы в Одессе тоже проводим подобную конференцию — AI&BigData Lab — bit.ly/1BydB1w, видео-записи докладов с которой можно найти здесь: bit.ly/1yxHmDj.
В следующем году мы планируем ее провести в мае.

Кстати, наша команда работает над стартапом FlyElephant — облачный маркетплейс для агрегации данных и высокопроизводительных вычислений. Сейчас проводим маленький опрос и я буду очень благодарен всем, кто сможет уделить немного времени и ответить на несколько вопросов: bit.ly/1uZgHZZ.

Неплохие доклады, посмотрел с удовольствием

интересно. а в Киеве чтото подобное бывает — оччччень хотелось бы побывать.

В Киеве есть встречи Grammarly AI Club. Возможно, есть и какие-то конференции, но я о таких не слышал. А вообще Харьков всего в 4.5 часах езды на экспрессе :)

я видел ссылки только на одну стречу в 2012 году. Можете указать на актуальное расписание этих встреч?

Я не организатор киевского клуба. Лучше обратитесь напрямую к Всеволоду Дёмкину из Grammarly ( контакты есть здесь: dou.ua/...users/vseloved ). Насколько я знаю, они обычно публикуют анонсы в Событиях на DOU.

да, обычно есть анонсы на ДОУ. после похода на одну из встреч мне анонсы приходят на почту, что весьма удобно тоже :)

Вот такие события были, например:
dou.ua/...rchive/tags/AI

Спасибо, Саша :) До прочтения этого коммента я не думал, что до Харькова так близко и можно смотаться за день.

Подписаться на комментарии