Зимой-весной этого года на 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 — напишите в комментариях, какие темы были бы вам интересны, и мы с коллегами постараемся рассказать о них.