Привет.
Полгода назад я решил из гуманитария стать 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