Согласно Вики, «Data Science — это область исследования, изучающая проблемы анализа, обработки представления данных в цифровой форме».
«Объединяет методы по обработке данных в условиях больших объёмов и высокого уровня параллелизма, статистические методы, методы интеллектуального анализа данных и приложения искусственного интеллекта для работы с данными, а также методы проектирования и разработки баз данных.»
«... с начала 2010-х годов считается одной из самых привлекательных, высокооплачиваемых и перспективных профессий».
Т.е. Data Science — это такой же обширный «зонтик», как и Computer Science, только направленный на обработку данных и извлечение из них полезной информации.
Хорошо, с Data Science мы поверхностно разобрались. Что же такое машинное обучение (Machine Learning)?
«Machine Learning — это обширный подраздел искусственного интеллекта, изучающий методы построения моделей, способных обучаться, и алгоритмов для их построения и обучения».
То есть глобальная цель машинного обучения — это научить машину решать различные сложные задачи, которые сложно решить алгоритмически, используя лишь привычные нам циклы и ветвления. Например, узнавать человеческие лица или другие объекты, понимать голос, водить автомобиль (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 не обязан уметь хорошо программировать, а может ограничиться инструментами вроде 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 задачу, и он начинает разбираться в нужных алгоритмах и библиотеках.
Машинное обучение Алматы
Источник: dou.ua