Найти тему
Nikita_Zhurovich

Как я учил Data Science с гуманитарным бэкграундом

Оглавление

Привет.

Полгода назад я решил из гуманитария стать Data Science боярином и заработать все деньги в мире. Пока получается, а как и почему – сейчас разберемся :)

Изначально такая мысль поселилась у меня еще в 2017 году после стажировки в Paper Planes. Там коллеги делали очень подробный и комплексный анализ, который я тогда не мог уловить - не хватало знаний. Это заставило задуматься и мысль поселилась в моей голове на очень долгое время. Окончательно я созрел в феврале этого (2019 года) и забрал документы из магистратуры Высшей Школы Экономики. Решение далось с трудом, но понимание того, что нужно развиваться, а не спокойно получать диплом перевесило все остальные плюсы.

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

Мне же ближе всего определение, которое дал Вячеслав Архипов из Банубы:

Вот что он говорит:

"Дата сайентист - это человек, который работает с данными. Бизнес анализ, анализ данных, тренировка нейронных сетей, дата инжиниринг - это все частные случаи дата сайентиста. "

То есть, есть несколько базовых сфер можно выделить, и их нужно знать. А именно:

  • Математика
  • Программирование
  • Экспертная область

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

Экспертиза

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

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

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

Математика

Отучившись 7 лет на гуманитарных специальностях, с математическим языком и логикой я знаком был слабо. Поэтому открыв ВУЗовские учебники по предмету, я так их и закрыл. Было очень сложно читать и понимать сухие математические формулы, моему мозгу было сложно воспринимать их и понимать всю красоту за ними скрытую. Поэтому я полез в интернет, изучил вузовские программы ВШЭ, MIT, МГУ и вот такие статьи - какая математика нужна для работы с данными. Получилась вот такая учебная программа.

  • Логарифмические и показательные преобразования
  • Тригонометрия
  • Линейная алгебра
  • Комплексные числа
  • Математический анализ: пределы функции, производные, интегрирование, ряды
  • Дифференциальные уравнения
  • Дискретная математика: Теория вероятности, комбинаторика, теория графов
  • Статистика

В общем и целом, программа очень схожа с таковой в технических вузах. Например, в БГУ на мехмате изучают примерно эти вещи. Но у меня нет двух лет в запасе - нужно было осваивать все намного быстрее. Что и сформировало такой подход: сначала понять суть изучаемого предмета, зачем он нужен и как работает; затем изучить проблемы, которые инструмент решает, ну и разумеется - практика, практика и еще раз практика. :)

А теперь самое интересное - источники :)

Начинал я учить на сайте, который здорово помогал, когда высшая математика была в университете - mathprofi. Он выручал в университете, но там мало написано про суть предмета и зачем он нужен - только способы решения тех или иных академических задачек. Разумеется, такой подход меня не устраивал.

Через какое-то время я нашел Академию Хана. Она бесплатная, короткие лекции с большим количеством практического материала позволяют быстро понять что к чему. Сал - отличный учитель, огромное ему спасибо за то, что он делает. Посмотрите его выступление на TED, вдохновляет - он знает, как надо учить.

Когда-то мне было сложно понять, что такое матрицы и зачем они нужны - несколько дней не мог понять. Потом наткнулся на хабре на статью, которая неплохо объясняет это. Выложил ее на фейсбук. А в комментариях приятель мне подкинул один YouTube канал - 3blue1brown. Там отлично объясняется смысл достаточно сложных вещей из мира математики. Он отлично дополнил академию хана и позволил разобраться во многих вещах намного быстрее, чем я планировал.

Когда я прошел практически все, что было на KhanAcademy по математике и начал читать статьи других авторов - я понял, что еще не достаточно хорошо знаю предмет и пришлось двигаться дальше. Если базовый математический анализ подается там отлично, то статистика - очень поверхностно. Поэтому пришлось искать другие источники.

Курсы по статистике я нашел на stepik.org. От Института Биоинформатики мне понравилась серия курсов по статистике и data science. Я пробовал смотреть их еще в начале обучения, но заходило сложно. Но теперь, курсы Анатолия Карпова смотрелись легко и с увлечением. Там рассматривались очень важные для анализа данных темы, начиная от проверки распределения на нормальность и центральной предельной теоремы до логистической регрессии. Продвинутые курсы сопровождаются заданиями по R. Возможно, я к ним вернусь, так как на тот момент уже знал Python, но время слишком ценно и отвлекаться не хотелось. Хотя тем, кто выбрал R в качестве первого языка - отличная возможность попрактиковаться.

Я не успел покрыть весь математический аппарат, который хотел - так, теорию графов и дифференциальные уравнения я пока отложил, но очень надеюсь вернуться к этим темам, это очень интересно!

Программирование.

Наверное, все таки будет корректнее этот блок назвать Computer Science, потому что важно не только программирование, а еще и много других не менее интересных и важных тем, а именно:

  • Программирование на Python
  • Библиотеки Python для анализа и визуализации данных.
  • Базы данных. SQL.
  • Алгоритмы
  • Машинное обучение/Нейронные сети
  • Big Data: Spark/Hadoop etc.

Перед каждым, кто изучал или изучает анализ данных, в первую очередь стоит задача выбора: Python, R, Matlab. И этот выбор не такой очевидный. После нескольких дней поиска и чтения самых разных статей, форумов, каналов - я остановил свой выбор на Python. Почему так?

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

Вот так я начал учить Python. Разумеется, для того, чтобы нормально понять язык и усвоить программирование на интуитивном уровне нужно много программировать. Поэтому я не полез сразу в изучение библиотек, а сконцентрировался на решении школьных/олимпиадных задачек. И начал я с курса на степике от уже известного нам института бионформатики.

На курсе хорошо объясняют логику работы языка, знакомят с основной рабочей средой для анализа данных - Jupyter/Ipython notebook и дают практические задачи, но мне показалось, что задачек как то маловато, да и некоторые темы затрагивались не слишком подробно. Была еще неуверенность в своих знаниях, и не напрасная. Поэтому я начал искать. И нашел. Оказывается, в открытом доступе есть курс от моей любимой ВШЭ на платформе Coursera и это даже не специализация. Особенностью курса было то, что практических задачек не просто много, а ОЧЕНЬ много.

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

Дальше нужно было изучить библиотеки для анализа данных. Вот эти библиотеки - pandas, numpy, scipy, matplotlib, seaborn, scikitlearn. Их на самом деле очень много, те же PyTorch, TensorFlow очень широко используются при обучении нейронных сетей, но к этому блоку я еще не перешел, поэтому где и как их учить пока не скажу - не знаю.

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

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

Но все же, платформа эта платная - 25/50 долларов в месяц за обычную/премиум подписку. Для тех, кто не имеет лишних 30 долларов, советую обратить на курс «Введение в Data Science» на том же степике. Сам его сейчас прохожу - объяснение решающих деревьев и случайного леса там превосходное. И практических задач хватает.

На данный момент, на этом я и остановился, поэтому поделюсь планами на будущее.

На степике есть два курса по глубинному обучению: базовый «Нейронные сети» от Института Биоинформатики и курс по компьютерному зрению от Samsung. За их качество не скажу, но изучить их по крайней мере стоит.

Очень хвалят курс Andrew NG на Coursera. Мельком глянул - мало практических задач, но очень хорошее покрытие темы машинного обучения. А задачки можно найти и на другом, не менее интересном ресурсе. А именно - Kaggle.

Послесловие

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

За сим и откланяюсь.

Мои профили:

https://www.khanacademy.org/profile/Zhurovich/

https://stepik.org/users/60349331

https://app.dataquest.io/profile/mutcyxude

https://github.com/lastmzfk