Как самостоятельно выучиться на дата-саентиста — адаптированная подборка
Меня зовут Айра, я веду блог про математику, продукты и ML, делаю проекты в DS/ML, а также курсы по созданию ML-проектов. От своей аудитории блога и знакомых часто получаю вопросы в духе «Cтоит ли тратить деньги на тот или иной дорогой курс с codename «Стань DS за два месяца» или все же выучиться на дата-саентиста самостоятельно и бесплатно, и в таком случае, с чего начать?»
Недавно собрала ответ на этот вопрос достаточно развернуто, на мой взгляд, чтобы поделиться им с широкой аудиторией. Не все платные курсы плохие (хотя большинство — да — из-за механизмов отбора, продаж и слабой программы), но о них напишу отдельно. Мне кажется, нужно учитывать больше персонализированных параметров для того, чтобы грамотно выбирать хороший курс за деньги.
Во-первых, в список вошли бесплатные онлайн-курсы и ресурсы для самостоятельного обучения, которые проходила сама или советует профессиональное сообщество аналитиков и дата-саентистов (часто упоминающиеся в ODS.ai), где не нужно проходить какой-то отбор или быть ограниченным офлайн-посещением.
Во-вторых, конечно, это далеко не полный список онлайн-курсов, который вы можете встретить, зато в него попали лучшие курсы от сильных математических и Computer Science-школ мир и другие распространенные ресурсы среди профи из того, что я смогла отфильтровать на свой вкус.
В-третьих, начну с короткого списка, с которого, как мне кажется, стоит начинать обучение предмету, и он идет сразу же следующим абзацем.
С чего советую начать, чтобы тратить время эффективно?
Предполагая, что начинающий дата-саентист уже прошел подготовительные курсы а-ля гарвардский CS50 по основам программирования, pythontutor.ru или курс на Stepik от Института Биоинформатики, посоветую несколько шагов, которые должны стать твердой базой. Далее ссылки все полные, чтобы было легче копировать:
Зарегистрироваться в самом популярном в СНГ профессиональном slack-сообществе Open Data Science ODS.ai, вступить в как можно больше чатов, в том числе про менторство, обучение и карьеру и общаться с местными, чтобы расширить свой кругозор относительно работодателей, требований к прохождению интервью, к позиции и их различиях в разных компаниях и др, найти хороших наставников, тк. такие в сообществе есть!
Пройти вводный курс «Математика и Python для анализа данных» на Coursera — платный, недорогой и хороший. www.coursera.org/learn/mathematics-and-python
По программированию — пройти в leetcode.com все релевантные упражнения: это бесплатные или недорогие в премиальной версии в соотношении цена/качество тренажеры (в нем есть в том числе упражнения на интервью в FAANG).
Пройти mlcourse.ai — это открытый курс машинного обучения от ODS. Авторы смогли разработать курс машинного обучения с балансом между теорией и практикой, когда в лекции вы разбираете достаточно подробно математику, а затем упражняетесь сначала в блокноте, затем на Kaggle.
Для обучения решению разнообразных задач и оптимизации кода — участвовать в соревнованиях по анализу данных и машинному обучению на платформе kaggle.com.
Математика для DS/ML
Приятный курс Стэнфорда по DS «Introduction to Statistics» www.coursera.org/learn/stanford-statistics
Коротенький интерактивный курс по теории вероятностей и математической статистике «Seeing Theory» seeing-theory.brown.edu/
Хороший вводный курс по математике для анализа данных, более объёмный «Специализация Математика для анализа данных:. Можно послушать только интересную тему: дискретная математика / линейная алгебра / математический анализ / теория вероятностей. www.coursera.org/specializations/maths-for-data-analysis
Довольно подробная и читаемая книга по теорверу и матстату «Dekking, A Modern Introduction to Probability and Statistics» cis.temple.edu/
Python&SQL для DS/ML
Упомянутый выше бесплатный тренажер по Python с нуля: pythontutor.ru/
Отличный курс по инструментам по DS от IBM «Специализация Data Science Fundamentals with Python and SQL» www.coursera.org/specializations/data-science-fundamentals-python-sql
Упомянутый выше русский курс по питону и математике (платный, недорогой и хороший) «Математика и Python для анализа данных (Coursera)» www.coursera.org/learn/mathematics-and-python
Упомянутый выше https://leetcode.com/: пройти все релевантные упражнения, это бесплатные или недорогие в премиальной версии в соотношении цена/качество тренажеры (в нем есть в том числе упражнения на интервью в FAANG).
Начальные курсы по ML
Как бы этот курс не ругали из-за устаревшего языка программирования Octave (на котором пишут на Matlab), на мой вкус — это пока что самый простой и понятный курс по ML. Машинное обучение (Coursera) https://www.coursera.org/learn/machine-learning — стэнфордский курс по машинному обучению от Andrew Ng
mlcourse.ai — это открытый курс машинного обучения от ODS. Авторы смогли разработать курс машинного обучения с балансом между теорией и практикой, когда в лекции вы разбираете достаточно подробно математику, а затем упражняетесь сначала в блокноте, затем на Kaggle.
Более продвинутые курсы по ML
Если хочется погрузиться в математические доказательства методов машинного обучения, то есть прекрасные ШАДовские лекции К.В. Воронцова: плейлист «Курс «Машинное обучение» 2019” на YouTube-канале “Компьютерные науки», www.youtube.com/watc? v=SZkrxWhI5qM&list=PLJOzdkh8T5krxc4HsHbB8g8f0hu7973fK&index=2
Также хорош ежегодный гарвардский курс «Advanced Topics in Data Science CS109B». harvard-iacs.github.io/2020-CS109B/
Или курс по углубленным алгоритмам Advanced ML от ВШЭ: «Специализация Продвинутое машинное обучение» www.coursera.org/specializations/aml
Deep learning
(Мне кажется, можно пройти один курс из списка, а остальные смотреть на предмет дополнений)
Рекомендованный Стэнфордовский курс по DL «CS231n: Convolutional Neural Networks for Visual Recognition» cs231n.github.io/
Хороший курс от Университета Карнеги—Меллон «11-785 Introduction to Deep Learning» deeplearning.cs.cmu.edu/F21/index.html
Курс от MIT: «Practical Deep Learning for Coders» https://course.fast.ai/
ШАДовский курс по глубокому обучению доступен в github: «Practical_DL» github.com/yandexdataschool/Practical_DL
Бесплатные классные курсы от МФТИ: dlschool.org/
Также есть курс по DL у ODS.ai, который тоже советуют проходить в самом сообществе: «Deep Learning на пальцах» dlcourse.ai/
А еще есть курс у Samsung AI Research Center на Stepik.org stepik.org/course/50352/info
Natural Language Processing
Стэнфордовский «CS224n: Natural Language Processing with Deep Learning » web.stanford.edu/class/cs224n/
Второй курс у Samsung AI Research Center на Stepik.org https://stepik.org/course/54098/promo
Reinforcement Learning & Self-driving cars
От Deepmind «RL Course by David Silver» www.youtube.com/watc? v=2pWv7GOvuf0
Австралийский курс StarAi «Deep Reinforcement Learning Course » www.starai.io/course/
Data Engineering & MLOps
Бесплатный курс по DE от Дмитрия Аношина, дата-инженера из Microsoft, ex-Amazon: Getting start with Data Engineering and Analytics https://datalearn.ru/ (курс готовится in progress)
Соревнования
Ну, и для обучения решению разнообразных задач и оптимизации кода — участвуйте в Kaggle. https://kaggle.com/
Кроме Kaggle, есть еще несколько соревнований:
Самообучение в Data science, с нуля до Senior за два года
Хочу поделиться методами освоения Data science с нуля человеком из другой ИТ специальности. Цель: дать понять, подходит ли Вам эта специальность в принципе, и рассказать про эффективные подходы к самообучению, которые мне помогли (отдельно планирую потом детальные статьи по отдельным темам).
Отличные материалы уже существуют по большинству конкретных тем, я сам по ним учился.
Думаю, многим будут полезны «мета» материалы о том, как выбирать курсы и статьи, по которым учиться. Например, я пересмотрел десятки статей и книг, пробовал много разных он-лайн курсов, но полезной оказалась лишь малая часть всего доступного. Надеюсь, что смогу серьезно сэкономить вам время и помочь достигнуть большего, показав более эффективный путь самообучения.
И важно сказать сразу: я верю, что любой человек с аналитическими способностями и структурным мышлением может стать специалистом по машинному обучению/data science. Еще 4 года назад я сомневался, потеряв веру в свои математические способности из-за преподавателей университета. Теперь верю: основы машинного обучения и минимально необходимую математику сможет выучить любой сильно замотивированный человек.
Когда я понял, что скоро мне стукнет 30 лет, решил уйти в другую сферу и переехать из РФ. В своей сфере (1С) я был карьерно успешен, но стало ясно, что дальнейший рост очень затруднителен и требует выполнять работу, которая мне неинтересна и почти противна.
Через полгода перебора вариантов решил, что Data science мне интереснее всего.
Ещё через год имел достаточную квалификацию и прошёл собеседование на работу в Чехии (оговорка: у меня еще до этого было неплохое знание английского).
Ещё через год стал Senior Data scientist в Vodafone (мой LinkedIn).
Мне помогло то, что до этого я сформировал привычки к самообразованию, а экономность не позволила мне пойти по самому простому пути: найти онлайн курс с именитыми преподами, заплатить им много денег и довериться, что они всему научат лучше всего. В итоге я перебирал много бесплатно доступных книг и курсов (книги часто были найдены на b-ok.org). Из всех курсов и книг отбирал самые лучшие, забрасывая то, что казалось слишком теоретизированными или плохо структурированным.
На основе этих десятков книг и курсов я и сформировал то мнение, которым хочу поделить. Вероятно, существует еще более эффективный и быстрый способ научится этому всему. То, как учился я, было всего-лишь быстрее большинства платных программ, которые я видел, и заодно бесплатным (на многие лучшие англоязычные курсы всегда можно записаться бесплатно; покупал я только книги русских авторов и пару книг, которые иначе не смог найти).
Сначала надо понять, что такое Data science/машинное обучение и подойдет ли оно вам
Потому что если это просто модное слово и вы хотите получать много денег или работать в Гугл, то легче заработать на позиции маркетолога или веб-аналитика, и это тоже достаточно аналитичная работа.
Если вы человек творческий, возможно, разработка интерфейсов (фронтенд, мобильные приложения) вам подойдёт больше.
Если вы от природы аналитик и любите разбираться в данных, но программирование вас не заинтересует, а на изучение всей математики вам не хватает времени, стоит выбрать тот же самый учебный путь! Просто сделать акцент на мнее математических задачах, и не лезть в программироване сложных систем. Аналитики, знающие основы data science, тоже нужны в компаниях.
Важно, чтобы работа зажигала. Без искреннего интереса «грызть» Data science будет тяжело, потому что надо разобраться в куче нюансов, особенно если у вас нет за плечами хороших знаний в статистике, линейной алгебре и мат.анализе.
Как понять, будет ли вам интересно заниматься именно data science?
Мне кажется, что идеально эту роль выполняет книга Datasmart (выше писал сайт, на котором я нашёл её бесплатно). На русский она тоже переведена: «Много цифр. Анализ больших данных при помощи Excel, Джон Форман». Хотя, если вы хотите работать в data science, знание английского необходимо (технический английский выучить намного легче разговорного, и это будет очень полезно для любой работы в ИТ).
Эта книга показывет многие из технических методов Data science на уровне интуиции и даёт сразу достаточно детальное представление о решаемых задачах и где в бизнесе можно применить данные модели.
Если эта книга не вызовет интерес разобраться во всех указанных алгоритмах детальнее, вероятно, работа в data science не для вас.
Если книга интересн вызовет, но вам также хочется больше программировать, скорее всего, вам интересно будет стать machine learning engineer. Разница между data scientist и machine learning engineer в том, что первый должен общаться с людьми и понимать, какую задачу имеет смысл решать, а второй должен уметь состыковать программы с «искусственным интеллектом» с другими ИТ системами, мобильными телефонами или требованиями обрабатывать огромные объемы данных.
Что учить
Если вы решили, что готовы «грызть гранит науки», то в образовании специалиста data science есть два кита:
Непосредственные методы Data science, которые стоят на трёх математических черепахах: теории вероятностей и статистике, линейной алгебре и основах мат.анализа (только основах, там требуется минимум сверх школьного курса «алегбра и начало анализа»). Кстати, вся эта математика далеко не так сложна. Проблема в том, что её плохо и неинтересно объясняют во многих вузах. Позже поделюсь советами, как её можно легче освоить.
Программирование на Python (+SQL и подобные), которое позволит применить все изученные методы с помощью логичных и простых в своей сути библиотек готовых функций.
Даже примерный учебный план для изучения методов Data science требует отдельного поста. Ниже напишу чуть подробнее про Python и SQL
Английский необходим!
Принципы эффективного обучения
Программирование: что и как учить?
Что такое SQL и зачем его учить?
SQL является стандартом для получения данных в нужном виде из разных баз данных. Это тоже своеобразный язык программирования, который дополнительно к своему основному языку используют многие программисты. Большинство самых разных баз данных использует один и тот же язык с относительно небольшими вариациями.
Как учить SQL:
Наберите в Гугле «sql tutorial» и начните учиться по первой же ссылке. Если она вдруг окажется платной, выберете другую. По SQL полно качественных бесплатных курсов.
На русском языке тоже полно курсов. Выбирайте бесплатные.
На изучение достаточно всего лишь от 10 часов (общее понимание), до 20 часов (уверенное владение большей частью всего необходимого).
Почему именно Python?
У всех других языков программирования какие-либо специализированные библиотеки для машинного обучения есть только в зачаточном состоянии.
Как учить Python
Прочитать основы и пройти все упражнения с этого сайта можно за 5-40 часов, в зависимости от вашего предыдущего опыта.
После этого варианты (все эти книги есть и на русском):
Learning Python, by Mark Lutz (5 издание). Существует и на русском.
Есть много книг, которые сразу обучают использованию языка в практических задачах, но не дают полного представления о детальных возможностях языка.
Эта книга, наоборот, разбирает Python досконально. Поэтому по началу её чтение будет идти медленнее, чем аналоги. Но зато, прочтя её, вы будете способны разобраться во всём.
Я прочёл её почти целиком в поездах в метро за месяц. А потом сразу был готов писать целые программы, потому что самые основы были заложены в pythontutor.ru, а эта книга детально разжевывает всё.
В качестве практики берите, что угодно, когда дочитаете эту книгу до 32 главы, и решайте реальные примеры (кстати, главы 21-31 не надо стараться с первого раза запоминать детально. Просто пробежите глазами, чтобы вы понимали что вообще Python умеет).
Не надо эту книгу (и никакую другую) стараться вызубрить и запомнить все детали сразу. Просто позже держите её под рукой и обращайтесь к ней при необходимости.
Прочитав эту книгу, и придя на первую работу с кучей опытных коллег, я обнаружил, что некоторые вещи знаю лучше них.
Python Crash Course, by Eric Matthes
Automate the Boring Stuff with Python
Книга хороша примерами того, что можно делать с помощью Python. Рекомендую просмотреть их все, т.к. они уже похожи на реальные задачи, с которыми приходится сталкиваться на практике, в том числе специалисту по анализу данных.
Какие трудозатраты?
Путь с нуля до уровня владения Python, на котором я что-то уже мог, занял порядка 100ч. Через 200ч я уже чувствовал себя уверенно и мог работать над проектом вместе с коллегами.
Следующие статьи по данной теме
Для желающих могу выступить в роли ментора
Как стать Data Scientist в 2019 году
Data Scientist — это эксперт по аналитическим данным, который обладает техническими навыками для решения сложных задач, а также любопытством, которое помогает эти задачи ставить. Эти специалисты несут основную ответственность за преобразование данных в Результативные идеи с помощью самостоятельно созданных прогностических моделей и специального анализа в соответствии с требованиями компании.
Другими словами, быть Data Scientist — чрезвычайно важная работа в нынешнем веке данных. Настолько, что статья в Harvard Business Review даже назвала ее (и это побуждает стать одним из них!).«Самой сексуальной работой 21-го века»(и это побуждает стать одним из них!).
И также не повредит тому, что работа Data Scientist очень хорошо окупается при средней зарплате 1022 тыс. в год. Именно поэтому эта статья является полным руководством для того, чтобы стать Data Scientist в 2019 году. Это дорожная карта, которой вы можете следовать, если хотите узнать больше о Data Science.
Но все еще существует большая путаница между различиями в роли Data Analyst и Data Scientist, поэтому мы начнем с этой статьи и перейдем к другим темам, таким как требования к образованию и требования к навыкам, чтобы стать специалистом в этой области.
Разница между Data Analyst и Data Scientist
Очевидно, что и у Data Analyst, и у Data Scientist есть описание работы, связанное с данными. Но какие между ними есть различия? Это вопрос, который возникает у многих людей относительно различий между этими специальностями. Так что давайте проясним это сомнение здесь!
Data Analyst использует данные для решения различных проблем и получения полезных данных для компании. Это делается с помощью различных инструментов на четко определенных наборах данных, чтобы ответить на корпоративные вопросы, такие как «Почему маркетинговая кампания более эффективна в определенных регионах» или «Почему продажи продукта сократились в текущем квартале» и так далее. Для этого основными навыками, которыми обладает аналитик данных, являются Data Mining, R, SQL, статистический анализ, анализ данных и т. д. Фактически, многие Data Analysts получают дополнительные необходимые навыки и становятся Data Scientists.
С другой стороны, Data Scientist может разрабатывать новые процессы и алгоритмы для моделирования данных, создавать прогностические модели и выполнять пользовательский анализ данных в соответствии с требованиями компании. Таким образом, основное отличие заключается в том, что Data Scientist может использовать тяжелое кодирование для проектирования процессов моделирования данных, а не использовать уже существующие для получения ответов из данных, таких как Data Analyst. Для этого основными навыками, которыми обладает Data Scientist, являются Data Mining, R, SQL, Машинное обучение, Hadoop, Статистический анализ, Анализ данных, OOPS и т. д. Таким образом, причина, по которой ученым Data платят больше, чем аналитикам Data, заключается в их высокой уровни квалификации в сочетании с высоким спросом и низким предложением.
Требования к образованию, чтобы стать Data Scientist
Существует много путей достижения вашей цели, но имейте в виду, что большинство из этих путей проходят через колледж, поскольку четырехлетняя степень бакалавра является минимальным требованием.
Самый прямой путь заключается в том, что вы получаете степень бакалавра в области Data Science, поскольку она, несомненно, научит вас навыкам, необходимым для сбора, анализа и интерпретации больших объемов данных. Вы узнаете все о статистике, методах анализа, языках программирования и т. д.,, которые только помогут в вашей работе в качестве Data Scientist.
Другой обходной путь, который вы можете выбрать, — это получить любую техническую степень, которая поможет вам в роли Data Scientist. Некоторые из них — компьютерные науки, статистика, математика, экономика. После получения степени вы будете иметь навыки кодирования, обработки данных, количественного решения проблем. Которые можно применять в Data Science. Затем вы можете найти работу начального уровня или получить степень магистра и доктора наук для более специализированных знаний.
Требования к навыкам, чтобы стать Data Scientist
Для Data Scientist требуется несколько навыков, охватывающих различные области. Большинство из них упоминаются ниже:
1. Статистический анализ. Как специалист по обработке данных, ваша основная задача — собирать, анализировать и интерпретировать большие объемы данных и создавать полезные для компании идеи. Очевидно, что статистический анализ является большой частью описания работы.
Это означает, что вы должны быть знакомы хотя бы с основами статистического анализа, включая статистические тесты, распределения, линейную регрессию, теорию вероятностей, оценки максимального правдоподобия и т. д. И этого недостаточно! Немало важно иметь понятие о том, какие статистические методы являются подходящим подходом для данной проблемы данных, еще важнее понять, какие из них не являются. Кроме того, есть много аналитических инструментов, которые очень полезны в статистическом анализе для Data Scientist. Наиболее популярными из них являются SAS, Hadoop, Spark, Hive, Pig. Поэтому важно, чтобы вы хорошо их знали.
2. Навыки программирования. Навыки программирования являются необходимым инструментом в вашем арсенале. Это потому, что намного легче изучать и понимать данные, чтобы делать полезные выводы, если вы можете использовать определенные алгоритмы в соответствии со своими потребностями.
В общем, Python и R являются наиболее часто используемыми языками для этой цели. Python используется из-за его способности к статистическому анализу и его удобству к прочтению. Python также имеет различные пакеты для машинного обучения, визуализации данных, анализа данных и т. д. (Например, Scikit-learn), которые делают его подходящим для науки о данных. R также позволяет очень легко решить практически любую проблему в Data Science с помощью таких пакетов, как e1071, rpart и многих других.
3. Машинное обучение. Если вы каким-либо образом связаны с технологической отраслью, скорее всего, вы слышали о машинном обучении. Это в основном позволяет машинам изучать задачи из опыта, не программируя их специально. Это делается путем обучения машин с использованием различных моделей машинного обучения с использованием данных и различных алгоритмов.
Таким образом, вы должны быть знакомы с алгоритмами контролируемого и неконтролируемого обучения в машинном обучении, такими как Линейная регрессия, Логистическая регрессия, Кластеризация K-средних, Дерево решений, Ближайший сосед и прочее. К счастью, большинство алгоритмов машинного обучения могут быть реализованы с использованием R или Библиотеки Python (упомянутые выше), Поэтому вам не нужно быть экспертом по ним. В чем вы нуждаетесь, это в умении понять, какой алгоритм требуется, основываясь на типе данных, которые у вас есть, и на задаче, которую вы пытаетесь автоматизировать.
4. Управление данными и обработка данных. Данные играют большую роль в жизни Data Scientist. Таким образом, вы должны быть опытными в управлении данными, которое включает извлечение, преобразование и загрузку данных. Это означает, что вам нужно извлечь данные из различных источников, затем преобразовать их в необходимый формат для анализа и, наконец, загрузить их в хранилище данных. Для обработки этих данных существуют различные платформы, такие как Hadoop, Spark.
Теперь, когда вы завершили процесс управления данными, вы также должны быть знакомы с обработкой данных. Обработка данных — это в основном означает, что данные в хранилище должны быть очищены и унифицированы согласованным образом, прежде чем их можно будет проанализировать для получения каких-либо действенных данных.
5. Интуиция данных. Не стоит недооценивать силу интуиции данных. Фактически, это основной нетехнический навык, который отличает Data Scientist от Data Analyst. Интуиция данных в основном включает в себя поиск шаблонов в данных там, где их нет. Это почти то же самое, что найти иголку в стоге сена, которая является реальным потенциалом в огромной неисследованной куче данных.
Интуиция данных — это не тот навык, которому можно так просто научиться. Скорее это происходит из опыта и продолжающейся практики. А это, в свою очередь, делает вас гораздо более эффективным и ценным в своей роли Data Scientist.
6. Навыки общения.Вы должны хорошо владеть навыками общения, чтобы стать экспертом в области Data Scientist. Это потому, что, хоть вы и понимаете данные лучше, чем кто-либо другой, вам необходимо преобразовать полученные данные в количественную оценку, чтобы нетехническая команда смогла принять решение.
Это также может включать data storytelling! Таким образом, вы должны иметь возможность представлять свои данные в формате повествования с конкретными результатами и значениями, чтобы другие люди могли понять, что вы говорите. Это связано с тем, что в конечном итоге анализ данных становится менее важным, чем практические выводы, которые можно получить из данных, что, в свою очередь, приведет к росту бизнеса.



