How-to: из экономиста в Data Scientist-ы

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Идея написать пошаговое руководство «Как рядовому студенту экономического факультета стать data scientist-ом, заниматься машинным обучением и другим волшебством» теплилась в моей голове достаточно давно, поскольку за последние пару лет я прошел уже достаточно большое количество курсов по Data Science на самых разных платформах (Coursera, Stepik и т.д.). Следовательно, я уже понимал, что будет полезно, а на что лучше не тратить свое время и, конечно, хочу поделиться своими впечатлениями с тобой, ведь ты так просил.

Спасибо Динару за супер-футболку с:

Однако, я не мог написать эту статью, не имея формального права кого-либо учить, ведь на тот момент конечного результата я не добился — я не был data scientist-ом, то есть все мои советы могли оказаться пустышкой. Не было никакой гарантии, что человек, который освоит все рекомендованные мною курсы и книжки, в конечном итоге получит работу в Data Science, так как таких людей попросту не было.

С недавнего времени я, наконец, получил эту привилегию. Это значит, что, во-первых, полезность этих курсов и книжек подтвердилась и их не стыдно советовать людям, а во-вторых, я получил более полное представление о том, что такое работа в Data Science, и могу рассказать о достаточно надежном пути в область.

Дисклеймер. Я еще не работал ни с картинками, ни с видео, то есть в статье речь пойдет о том, как заниматься классическим анализом данных. О том, как обучать модные нейросетки и генерировать котиков пока рассказать не могу :с

xgb.fit(X_train, y_train).predict(X_test)

Итак, что будет ниже: как понять, стоит ли вам погружаться в Data Science, что для этого потребуется и какими ресурсами необходимо обладать и, наконец, руководство: какие курсы проходить, какие книжки читать, с чего начинать и куда идти дальше, чтобы через 1-1,5 года быть волшебником data scientist-ом.

Зачем нужна эта статья?

Возвращаясь на 2 года назад, я помню, как мне было страшно. Я собирался осваивать совершенно новую область и был ни в чем не уверен. Не слишком ли поздно начинать? Хватит ли у меня упорства и ума конкурировать с ребятами, которые с первых курсов осваивают анализ данных? Не потрачу ли время впустую, осознав на полпути, что это не мое?

Все эти переживания были вызваны двумя основными обстоятельствами:

1) Не было четкого алгоритма действий и плана. Machine Learning, Neural Networks, SQL, Big Data и т.д. — сложна_сложна_непонятно.mp4. Анализ данных — это новая, но в то же время широчайшая область. Это значит, что нужно изучить огромное количество разных концепций и инструментов, но с чего начинать? Одни советуют браться за SQL, другие — изучать Python, третьи возмущаются, если кто-то притрагивается к компьютеру, не научившись перед этим строить линейную регрессию на бумажке. Такое количество вариантов пугало меня, поскольку я ненавижу распыляться и хочу четко понимать, как та или иная вещь приведет меня к цели.

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

Вывод #1: Легче что-то изучить, когда есть определенный план действий и не нужно идти вслепую.

2) Не было человека из ближайшего окружения, который проделал тот же самый путь и доказал, что стать data scientist-ом из экономиста — возможно. Казалось бы: в сети по запросу «How to become a data scientist?» можно найти сотни статей от кого-либо из миллиарда индусов со своей историей успеха и собственным планом действий. Проблема в том, что я не знал ни одного из этих людей, мне не известен их бэкграунд, исходный набор навыков, мотивацию и характер, а следовательно, мне было сложно набраться уверенности в том, что если смог он, то смогу и я.

Все могло быть намного проще, окажись в моем ближайшем окружении человек, который уже прошел этот путь из экономики в data science. Мой ход мыслей мог быть очень простым: «Я помню, кем он был тогда, я вижу, кем он стал сейчас. Значит это действительно возможно. Что мешает мне приложить те же усилия? Чем я хуже него?».

Вывод #2: Людям свойственно сомневаться в своих силах. Для обретения уверенности нужен живой пример перед глазами.

Как понять, что тебе подойдет работа в Data Science?

1) Тебе нравится работать с данными. После 5 месяцев работы я могу с уверенностью сказать, что 80% времени я провел, работая с данными: очистка, агрегация, заполнение пропусков — все это вы будете делать постоянно и не один раз. Построению моделей уделялось лишь 10% времени (еще 10% — скролить инсту, пока че-то считается), следовательно вам должно быть комфортно часами напролет смотреть на «таблички».

Тест. Открой любой Excel-файл с количеством строк > 100000 и попробуй извлечь из сырых данных какую-либо ценную информацию. Понравилось — хорошо. Затошнило — дальше можно не лезть.

2) Тебя не пугает математика и формулы. Тем не менее, построение математических моделей — важнейшая часть Data Science. Признаваться в любви математике может и не обязательно, но если ты чувствуешь пульсирующую боль у виска при виде новой формулы — вряд ли в Data Science тебе будет комфортно.

Тест: Пройди по ссылке. Период времени, через которое ты закрыл ссылку прямо пропорционален желанию работать в Data Science.

3) Ты хорошо понимаешь английский текст. Банальный, но критически важный пункт. Без знания английского в программировании, как и в DS делать нечего. Документации библиотек, туториалы, лучшие примеры — 80% всей полезной и наиболее актуальной информации поступает на английском. Более того, готовьтесь, что вам придется постоянно гуглить, как та или иная вещь работает, а Stackoverflow вообще незаменимая вещь: какую проблему бы ты ни решал, до тебя это уже спрашивали, и ответ уже готов. Осталось его найти.

Количество обращений к Stackoverflow за последний месяц.

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

Итог. Если тебе нравится работа с данными в любой форме, ты обладаешь базовыми знаниями теории вероятностей, мат.анализа и линейной алгебры, а также знаешь английский — то у тебя все шансы стать data scientist-ом.

Собственно, план

На начальном этапе тебе необходимо параллельно развиваться по двум основным направлениям:

1) Знание Python и обработка данных с его помощью. Учись прогать на питоне и осваивай основные библиотеки — pandas, numpy, sklearn, без этого никак.

Как понять, что ты уже достиг приличного уровня? Если у тебя для какой-либо простой операции (заменить все запятые на точки, посчитать среднюю по столбцу и т.д.) не возникает соблазна открыть Excel, а комфортно все сделать на питоне — это успех.

2) Знание теоретических основ и основных концепций машинного обучения. Сюда входит целая плеяда вещей, которые обязан знать каждый data scientist. Помимо само собой разумеющихся основ математики, важно понимать принцип работы основных ML-алгоритмов, уметь правильно разбивать выборку на обучающую и тестовую, осознавать где лучше применить ту или иную модель и т.д.

глупый, глупый машин лернинг

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

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

Шаг #1. Установить Python через Anaconda

Иди по ссылке выше и устанавливай себе Python и Jupyter Notebook — среду, в которой ты и будешь работать всю жизнь и запускать команды и скрипты.

В инструкции четко написано, что и как делать. Запустив jupyter-тетрадку, ты сможешь писать свои первые команды:

Интерфейс Jupyter Notebook

Шаг #2. Пробуем Python: DataCamp и прогнозирование выживших на «Титанике»

Я начинал с DataCamp и для «нулевых» это прекрасная и очень комфортная платформа — короткие видео с крутыми инструкторами, легкие (порой слишком) задания — все сделано для того, чтобы любой мог попробовать писать на питоне. Недостаток — курсы там платные, кроме самого первого, он нам и нужен. Регистрируйся на платформе и начни его проходить (занимает 1-2 вечера).

О DataCamp. Я покупал годовую подписку на DataCamp и все мое начальное обучение заключалось в курсах на этой платформе. Мне нравился формат и простота изложения, однако главный недостаток — большинство заданий состоят из заполнения одной-двух строчек в уже написанном коде, то есть нагрузка не очень высокая и многие продвинутые вещи опускаются либо уже сделаны за тебя. Платформа активно развиваются, появляются куча новых курсов, поэтому может быть что-то изменилось.

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

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

Книжки к этому шагу. Для того, чтобы прокачаться в работе с данными на Python, можно читать 2,3 и 4 главы книги Python Data Science Handbook. Ее можно назвать выжимкой из документаций основных DS библиотек на питоне — numpy, pandas, matplotlib, sklearn. Там описано много лишних команд, которые ты возможно никогда и не используешь, однако примеры очень хорошие и полезно самому запустить некоторые из них, посмотреть, что делает тот или иной метод, перебирать параметры и т.д.

Как дополнение для особо пытливых— книга «Data Science from Scratch» от Д. Граса, которая подойдет тем, кто хочет научиться писать сырой код на Python, вникая в суть методов каждой из библиотек. Отличная книга для того, чтобы вникнуть в логику питона и подтянуть навыки программирования. Кстати, на Хабре есть обзор на нее.

Шаг #3. Машинное обучение: курс от Open Data Science, специализация от Яндекса и МФТИ, Deep Learning

Сначала немного об Open Data Science. ODS — это крупнейшее в мире русскоязычное сообщество data scientist-ов, которое проводит мероприятия, организует курсы, ведет блог на Хабре (который рекомендуется читать всем, там куча полезного). По сути, вместо этой статьи, я мог просто скинуть тебе ссылку на ODS, ты присоединишься к сообществу и в Slack (мессенджер), где более 12000 пользователей в канале «for beginners» спросишь: «Я экономист. Хочу в DS. Что делать?». Люди, намного опытнее меня с радостью дадут тебе совет. Поэтому скорей переходи по ссылке и нажимай «Присоединиться», чтобы влиться в DS-тусовку.

Теперь к плану. Одна из лучших вещей по машинному обучению, что я проходил — это бесспорно «Открытый курс машинного обучения от ODS». В данном курсе замечательно все —отлично объяснены основные ML-концепции, рассмотрены все основные ML-алгоритмы, принципы их работы, преимущества и недостатки. Более того, на курсе есть интересные и достаточно сложные домашние задания, которые отлично укладывают все в голове, не говоря уже об огромном количестве дополнительных материалов.

Я проходил этот курс еще в формате серии статей на Хабре, а сейчас появились и видеолекции. Курс можно проходить как в рамках общего набора, так и самостоятельно. Рекомендую проходить именно первый способ, поскольку он не дает расслабиться и мотивирует: каждую неделю дедлайны, есть рейтинговая система участников курса. Следующий набор на курс будет, кажется, весной 2019 года, однако изучать статьи из серии можно уже сейчас, параллельно делая домашние задания из репозитория.

Параллельно с курсом от ODS начинай проходить специализацию «Машинное обучение и анализ данных» от Яндекса и МФТИ на Coursera, потому что к ней применимы те же эпитеты. В специализацию входит 6 курсов (я прошел 3 из них, поэтому ничего не могу сказать об оставшихся): «Математика и Python для анализа данных», «Обучение с учителем», «Обучение без учителя». Особенно отмечу первый курс — в нем дается необходимый бэкграунд математики и программирования, без которого обойтись просто нельзя.

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

В результате, пройдя эту специализацию и курс от ODS, ты поймешь насколько большим багажом знаний теперь обладаешь: кросс-валидация, деревья решений, градиентный бустинг — подавайте мне офферы за 300к/сек, я теперь дата саентолог!

Книжки к этому шагу. Здесь тебя ждут две уже легендарные книжки. Во-первых, это Deep Learning от Гудфеллоу и компании. Говорят, что если прочитать и осмыслить ее от начала до конца, то предложения от компаний Кремниевой долины будут залетать, как Гарри Поттеру.

Когда прочитал Deep Learning и рассматриваешь job-офферы

Однако пока тебя должна интересовать лишь первая часть книги — «Applied Math and Machine Learning Basics», но важно прочитать ее полностью и понять каждую строчку — в ней прекрасно изложены как математика машинного обучения, так и основные концепции: переобучение, оптимизация функции потерь и т.д. Есть на русском языке, однако лучше читать в оригинале, потому что некоторые термины просто не поддаются переводу.

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

Во-вторых, еще одна классика — это «Python и Машинное Обучение» от С. Рашки. Ее читать полностью, она проще, чем Deep Learning, так как упор сделан на использование классических библиотек, а не на математику. Более того, у каждой темы из курса ODS/специализации Яндекса есть соответствующий раздел в книге Рашки, поэтому максимального эффекта можно добиться, если читать ее после прохождения того или иного метода в рамках курсов. Большой плюс — есть на русском.

Шаг #4. Практика, Kaggle, соревнования.

каждый раз в голос

К данному этапу ты обладаешь всем необходимым, чтобы решать классические ML-задачи: регрессия, классификация, кластеризация. Все, что теперь нужно — это практика. Поэтому берешь весь свой багаж знаний и идешь на Kaggle, участвовать в соревнованиях по машинному обучению. О том, что это за соревнования хорошо рассказано тут.

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

На данном этапе важно не столько занять высокое место в рейтинге, сколько получить работы с реальными (почти) данными. С каждой новой задачей у тебя будут возникать все новые вопросы, которые не затрагивались в пройденных тобой курсах и книжках. К примеру, такой важный процесс, как отбор и генерация признаков для модели почти не затрагивается на курсах, поскольку этому сложно научить — у каждой ML-проблемы своя специфика, данный навык приходит лишь с опытом. В итоге, с ростом количества соревнований и датасетов, ты будешь совершенствоваться как специалист по анализу данных.

Думаю, дальше у каждого свой путь, и ты сам должен решить, что тебе интересней: обработка текстов, работа с картинками, классический DS или что-то еще, поэтому дерзай, у тебя все получится!

P.S. Мнение Лебовски о моем плане:

Напоследок, расскажу о некоторых курсах, которые я прошел, но по тем или иным причинам они не вошли в итоговый план:

Анализ данных на R от В. Аббакумова.

Курс в формате видеолекций с отличным преподавателем (который, кстати является консультантом по анализу данных в компании, где я работаю, и это просто потрясающе: 2 года назад я был его учеником, а теперь — коллега с:

Почему не вошел в план? Во-первых, это R, который, как по мне, менее удобен и востребован у компаний, чем Python (не представляешь, как приятно было переходить с R на Python). А во-вторых, лекции достаточно длинные (2-3 часа), со множеством отступлений, не хватало интенсивности обучения. Тем не менее, для общего развития курс хороший и слушать довольно интересно.

Machine Learning от Andrew Ng (Stanford University) на Coursera

Курс от Эндрю — живая легенда, которая дает фундаментальные знания по теории ML, его советуют абсолютно всем новичкам в области, однако по поводу него у меня сложились смешанные впечатления (прошел только 7 недель из 11). Из достоинств: в нем максимально просто объяснены принципы работы линейной регрессии, градиентного спуска, переобучения и самых простых нейронных сетей. В принципе, первые 5 недель курса — наиболее полезные и интересные, дальше как-то не зашло. Самый большой кайф получил от домашних заданий, где нужно было самостоятельно реализовать с нуля линейную регрессию и нейронную сеть, распознающую рукописные цифры (проще, чем кажется).

Почему не вошел в план? Причина та же, что и выше, только случай более тяжелый: весь код в рамках курса требуется писать на MATLAB. Конечно, для научных вычислений MATLAB хорош, но для полноценного анализа данных совершенно непригоден. К тому же, курс кажется немного затянутым, с множеством тем (особенно ближе к концу), которые можно пропустить (что я и сделал).

3-х месячный интенсив «Специалист по большим данным» от New Professions Lab

Данный «марафон» мне выпала возможность пройти в марте этого года, и это были самые интенсивные 3 месяца за все время моего обучения. Лабораторные работы каждую неделю, лекции 3 раза в неделю, 2 больших проекта (в одном из них нужно было прогнозировать пол и возраст человека по логам посещенных им сайтов) — все это было очень круто.

Отдельная тема — потрясающие преподаватели, каждый из которых отлично разбирается в теме и вдохновляет тебя своим примером. Кирилл Данилюк, Николай Марков, Петр Ермаков — просто супер-чуваки.

Наконец, я смог поработать с настоящим Hadoop-кластером, писать запросы на Spark-е и узнал кучу всего о Big Data архитектуре. В общем, огромное спасибо Newprolab, мне безмерно повезло!

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

Я буду очень рад, если этот набор советов поможет хотя бы одному человеку стать data scientist-ом, поэтому дерзай, дружище, у тебя все получится с:


Источник: m.vk.com

Комментарии: