Data science

В постоянно меняющейся экосистеме инструментов для анализа данных вам придется часто изучать все новые и новые языки, чтобы идти в ногу со временем и эффективно работать в команде. В течении нескольких лет я писал код на языке R, но давно уже хотел перейти на Python, чтобы в полной мере использовать библиотеки глубокого обучения и инструменты, такие как PySpark. Кроме того, я начал работать в команде Data Science в Zynga, где Python является основным языком. Прошло всего несколько недель, но я уже начинаю осваивать анализ данных и прогнозное моделирование на Python. Это не первый случай, когда я пытался быстро освоиться с новым языком, но случай с Python оказался наиболее успешным. Я хочу дать вам несколько рекомендаций по работе с новым языком программирования в качестве сотрудника по анализу данных.

Сосредоточьтесь на результатах, а не на семантике языка

Понимание семантики языка, с которым вы собираетесь работать, безусловно важно и без этого никуда, однако я считаю, что для того, чтобы быстро освоить новый язык, достаточно понимания его основ. До знакомства с Python я прочитал вторую главу «Data Science from Scratch», этакий вводный курс в язык Python. Далее я составил список задач, которые мне необходимо было выполнить, используя Python, который включал следующее:

  • Чтение и запись данных в CSV — файлы
  • Выполнение базовых операций с таблицами данных, таких как отображение типов данных
  • Визуализация данных посредством гистограмм и линейных диаграмм
  • Подключение к базе данных и последующий вывод данных в таблицы (dataframes)
  • Создание модели логистической регрессии
  • Оценка показателей моделей, таких как lift и accuracy

Вместо того, чтобы полностью сосредоточиться на изучении семантики языка, например на понимании разницы между списками и кортежами в Python, я начал практиковаться в выполнении моих повседневных задач по анализу данных. Со всеми этими задачами я мог справиться посредством языка R, но теперь мне нужно было научиться делать тоже самое с помощью Python. Например, я узнал, что summary() в R аналогичен describe() в датафреймах Pandas.

Почти сразу я понял, что для выполнения тех или иных задач в Python, вам придется использовать несколько разных библиотек. Вышеупомянутые задачи намного проще выполнять при использовании библиотек Pandas и SciKit-Learn. Так я перешел к следующему этапу по освоению языка Python.

Изучайте экосистему, а не язык

Такие библиотеки, как Tidyverse, значительно расширяют базовый функционал языка R. Другие языки имеют схожие библиотеки, посредством которых вы получаете полезные расширения и функционал. Вместо того, чтобы сосредоточиться на изучении семантики языка, я включил изучение библиотек в мой первоначальный процесс изучения языка Python. В качестве отправной точки я изучил следующие библиотеки:

1) Pandas: обеспечивает функционал датафреймов, аналогичный языку R

2) Framequery: позволяет использовать SQL

3) SciKit-Learn: предоставляет модели машинного обучения со стандартными интерфейсами

4) Pandas-gbq: интерфейс BigQuery в Python.

Используя эти библиотеки, я облегчил себе выполнение тех задач, с которыми я раньше справлялся посредством других языков. Такие библиотеки как Framequery полезны при изучении новых языков, потому что они позволяет вам использовать SQL для работы с датафреймами, прежде чем вы начнете с ними работать посредством, например того же Pandas. Для меня Framequery оказался прост в использовании, потому что он похож на библиотеку sqldf, которую я уже использовал при работе с R.

Используйте межъязыковые библиотеки

Это очень здорово, если в процессе обучения, вы сможете применять библиотеки, с которыми ранее уже работали на других языках. Одной из таких библиотек, была библиотека глубокого обучения Keras, которую я изучил ранее, работая с R. Хоть синтаксис и будет отличаться, но те концепции, которые вы применяете при использовании библиотек, одинаковы, как для R, так и для Python. Вот пример настройки модели Keras на обоих языках:

# Creating a Keras model in R
model <- keras_model_sequential() %>%
  layer_dense(units = 64, activation = "relu",
              input_shape = 10) %>%
  layer_dense(units = 64, activation = "relu") %>%
  layer_dense(units = 1)
# Creating the same Keras model in Python
model = models.Sequential()
model.add(layers.Dense(64, activation='relu', 
          input_shape=10))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(1))

Сама возможность работы с той библиотекой, которую я уже знал, помогла мне ускорить процесс освоения Python. Plotly — еще одна библиотека, с которой я работал на языке R и которую сейчас я использую в Python.

Работайте с реальными данными

Примеры наборов данных, таких как diabetes dataset в sklearn, отлично подходят для запуска и работы с новым языком или новой библиотекой. Однако вы не освоите все тонкости языка, пока не начнете работать с реальными данными. Я бы порекомендовал вам, при изучении нового языка, сразу применять наборы данных вашей организации и пробовать решать те или иные задачи.

Работа с реальными данными будет полезна по следующим причинам:

  • Масштаб. Наборы учебных данных обычно невелики, по сравнению с реальными данными, которые включают в себя гораздо большие объемы, требующие таких методов, например, как выборка.
  • Представление. Используя данные вашей организации, вам нужно будет определить, как подписывать данные и программировать функции для моделирования.
  • Форматирование. Вам придется извлекать данные в память и выполнять определенные задачи, например, с отсутствием определенных значений.
  • Оценка. Используя реальные данные из вашей организации, вы сможете сравнивать свои результаты с использованием нового языка, с результатами, полученных при использовании других языков. Например, сравнить glm на языке R с sklearn.linear_model.

Если возможно, начните работать локально

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

Для работы с Python, рекомендации аналогичны. Jupyter Notebooks крайне полезен для данного языка программирования, но только в том случае, если вы уже хотя бы немного имеете опыт работы с Python. Для тех же, кто совсем не разбирается в теме, я рекомендую использовать IDE (Интегрированная среда разработки), типа PyCharm. Ну и наконец, когда вы созреете для сотрудничества со своими товарищами по несчастью, вам очень пригодится JupyterLab.

Приступайте к работе как можно раньше

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

Существует несколько подходов при изучении практической стороны какого-либо языка или библиотеки. Когда я изучал глубинное обучение с помощью R, я использовал предложенные библиотеки, чтобы начать работу над шаблонными проблемами. Некоторые компании предоставляют своим новым работникам — Jupyter Notebooks, чтобы они быстрее адаптировались. Подход, обычно используемый мною — это использование существующего набора данных при повторной реализации модели на новом языке.

Прогрессируйте в процессе обучения

После того, как вы изучили основы и научились выполнять общие задачи в области анализа данных, будет полезно опробовать некоторые из особенностей нового языка. Например, когда я впервые изучал R, я описал основные примеры использования функций в качестве параметров apply в датафреймах. На тот момент, я был относительным новичком в функциональном программировании, а эти примеры помогли мне узнать о новых идиомах программирования.

Просите о помощи

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

Во время моей последней работы в качестве единственного специалиста по данным, я обнаружил, что rstats subreddit — отличное место, где вы можете попросить о помощи. Также есть сообщества программистов, которые могут стать полезными для обучения. Я принимал участие в конференции useR в 2016 году и это было круто — особенно знакомства с различными учеными и специалистами, использующие R. У Python также есть подобные конференции, но мне еще не удалось на них побывать.

Заключение

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

Перевод статьи Ben WeberLearning A New Data Science Language