Чем инженеры по машинному обучению отличаются от специалистов по данным и инженеров по данным?

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

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

Инженер по машинному обучению - это модная должность, и люди на этой должности хорошо оплачиваются. Согласно одному анализу, это была самая популярная новая вакансия в LinkedIn в период с 2012 по 2017 год. Действительно сообщил о средней зарплате в 140 536 долларов для инженеров машинного обучения в США по состоянию на 26 июня 2020 года. Не так уж плохо. 😀

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

Поток данных в организациях

Вот представление того, как данные проходят через организацию.

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

Затем данные можно использовать для создания моделей машинного обучения, вывода и анализа.

Если данные используются в моделях машинного обучения, то эти модели могут быть переданы миру через веб-сайты или API. Это путь слева. 📱

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

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

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

Роли данных

Оранжевые прямоугольники представляют людей, которые занимаются данными. 😀

  • Специалисты по обработке данных несут ответственность за создание конвейеров данных. Они создают системы, которые принимают данные, хранят их и преобразуют в удобную форму для специалистов по данным и аналитиков данных. 💻
  • Специалисты по обработке данных создают модели машинного обучения, которые помогают принимать решения и создавать инструменты прогнозирования. Они также могут проводить эксперименты и делать статистические выводы, используемые для вывода причинно-следственных связей. Эта вторая роль больше похожа на традиционную роль статистика. 🧪
  • Аналитики данных находят понимание существующих данных и делятся этой информацией с заинтересованными сторонами. 📊
  • Инженеры по машинному обучению берут экспериментальные модели машинного обучения, которые создают специалисты по данным, и превращают их в масштабируемые, оптимизированные и пригодные для обслуживания модели для использования в API и приложениях. 👩‍💻

Роли часто частично совпадают. 🙂

Обратите внимание, что специалисты по обработке данных могут уделять больше внимания машинному обучению или статистическим выводам. Это различие похоже на одно, проведенное Майклом Хохстером, который проводил различие между специалистами по данным типа A и типа B. Специалисты по обработке данных типа A больше занимаются статическим, статистическим выводом и анализом, а специалисты по данным типа B больше занимаются созданием систем машинного обучения и разработкой программного обеспечения. См. Отличную статью Роберта Чанга для обсуждения.

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

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

В этой статье мы уделяем внимание инженерам по машинному обучению, поэтому давайте подробнее рассмотрим, чем они занимаются.

Навыки инженера по машинному обучению

Чем работа инженера по машинному обучению отличается от работы специалиста по данным или инженера по данным?

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

Инженерам машинного обучения необходимо написать код, который:

  • хорошо предсказывает
  • готово ли производство и легко ли его понять
  • работает быстро и эффективно использует память
  • чувствителен к этическим соображениям

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

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

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

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

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

Метод

Я взял информацию из SimplyHired и Monster, чтобы увидеть, какие ключевые слова появляются с Машинным обучением инженера в списках вакансий в США. В своем анализе я использовал библиотеки Python Requests, Beautiful Soup, pandas и Plotly.

Я использовал технические ключевые слова, почерпнутые из моего анализа списков вакансий специалист по данным, инженер данных и аналитик данных. Действительно, не был включен, потому что иногда он не возвращал никакой информации для общих терминов, а иногда возвращал совершенно разные подсчеты для базового случая без ключевых слов. Поиск по LinkedIn не проводился, потому что ранее он заблокировал мне доступ к моей учетной записи после очистки своего сайта. ☹️

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

Полученные результаты

Вот график технологических терминов, которые появлялись как минимум в 15% объявлений о вакансиях 1 июля 2020 года.

Давайте нырнем! 😀

Большинство работодателей ищут инженеров по машинному обучению, обладающих навыками Python. Python присутствует в 3 из 4 вакансий! 🐍

TensorFlow - вторая по распространенности технология, которая встречается более чем в 40% всех списков инженеров по машинному обучению. TensorFlow - это фреймворк для глубокого обучения с открытым исходным кодом.

Давайте посмотрим на другие часто появляющиеся фреймворки глубокого обучения.

Керас был в 20% лотов. Keras - это высокоуровневый API для TensorFlow, который теперь тесно интегрирован с TensorFlow 2.0. Оба были разработаны в основном в Google.

PyTorch - еще один крупный фреймворк для глубокого обучения - встречается более чем в четверти листингов. Он моложе TensorFlow, но его использование растет. См. Мою статью о популярности PyTorch и TensorFlow здесь.

Java фигурирует почти в трети объявлений. Java - один из наиболее часто используемых языков разработки программного обеспечения. Однако для науки о данных ему не так много преподают, как Python или R.

Apache Spark часто используется в приложениях для работы с большими данными. Он поддерживает множество языков программирования, включая Java, Python, R и Scala.

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

Сравнение с другими терминами

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

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

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

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

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

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

Как бы то ни было, Java, C ++ и R были отмечены как опасные большим количеством людей, чем любимые в Опросе разработчиков Stack Overflow 2020.

Вот расширенный список технологий, встречающихся в среднем не менее чем в 5% списков.

Совет

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

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

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

Если вы хотите стать инженером по машинному обучению, убедитесь, что знаете Python. Это язык машинного обучения. Если вы новичок в Python, могу ли я предложить мою книгу Memorable Python? 😉

Затем изучите библиотеки машинного обучения NumPy, pandas и scikit-learn. Все эти термины встречаются во многих списках вакансий, и в основном предполагается, что они используются в рулевой рубке инженеров машинного обучения. У меня есть для вас книга панд, если вы тоже хотите выучить ее. 🐼

Ожидается, что вы будете знать Git. Кэти Силор-Миллер и Джулия Эванс опубликовали забавную книгу на эту тему, доступную здесь.

Как вы видели выше, работодатели часто хотят иметь опыт работы с фреймворками глубокого обучения. Для начала я рекомендую прочитать Deep Learning with Keras François Chollet, первоначального автора Keras. Вы можете использовать программу Ранний доступ Мэннинга, чтобы увидеть обновленную версию книги, прежде чем она будет выпущена в конце 2020 года. Эта книга отлично подготовит вас к работе с TensorFlow.

Если вы хотите изучить PyTorch, fast.ai MOOC - хорошее введение. Здесь есть отличные видеоролики и сообщество, поддерживающее глубокое обучение.

Выучить SQL - хорошая идея. У меня есть вводная книга по SQL с PostgreSQL, цель которой - мягкое введение.

Затем я предлагаю вам изучить основы AWS, чтобы вы познакомились с самой популярной облачной платформой. Linux Academy предлагает отличные интерактивные онлайн-курсы.

Я предлагаю вам изучить математику, которая вам нужна, так как она вам нужна для проекта. Трудно изучать математику без контекста. В какой-то момент вы, вероятно, захотите изучить линейную алгебру. На 3Blue1Brown есть потрясающие видеоролики с пояснениями на YouTube по этой и многим темам математики и машинного обучения.

На протяжении всего пути работайте над собственными проектами и запускайте их в производство. Регулярно заходите на GitHub и возвращайтесь к сообществу по мере продвижения. Участвуйте в соревнованиях Kaggle. Делитесь своими навыками со всем миром прямо на ходу. 🚀

Этого должно быть достаточно, чтобы вы были заняты. 😀

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

Помните, что каждый находится на своем собственном пути обучения - и всегда есть чему поучиться. Это делает машинное обучение захватывающим. 🎉

Сворачивать

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

Я пишу о Python, SQL и других технических темах. Если вас это интересует, подпишитесь на мой список рассылки потрясающих ресурсов по науке о данных и прочитайте больше, чтобы помочь вам развить свои навыки здесь. 👍

Удачного машинного обучения! 🚀