Карьера в IT: должность Data Scientist / Machine Learning Engineer
Зимой-весной этого года на DOU был хороший цикл статей про IT-должности, начиная от QA Engineer и заканчивая CTO. Я хотел бы продолжить этот цикл статьей про пока редкие в Украине, но уже очень популярные в развитых странах должности Data Scientist и Machine Learning Engineer.
Отмечу, что данная статья — плод моего субъективного (а значит, несовершенного) понимания ситуации. И если кто-то захочет поправить меня или дополнить, я буду очень рад.
Data Science и Machine Learning
Согласно Вики, «Data Science — это область исследования, изучающая проблемы анализа, обработки представления данных в цифровой форме».
Пока звучит не очень круто.
Но далее следует кое-что поинтереснее: «Объединяет методы по обработке данных в условиях больших объёмов и высокого уровня параллелизма, статистические методы, методы интеллектуального анализа данных и приложения искусственного интеллекта для работы с данными, а также методы проектирования и разработки баз данных.»
А дальше — больше: «... с начала
Т.е. 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 — напишите в комментариях, какие темы были бы вам интересны, и мы с коллегами постараемся рассказать о них.
Все про українське ІТ в телеграмі — підписуйтеся на канал DOU
62 коментарі
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.