Изучение Науки О Данных С Нуля: Этапы И Этапы

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

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

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

Эту логику можно объяснить и наоборот: сразу обучать нейронным сетям опасно, т.к.

нет спроса на человека, который что-то о них знает, но не умеет эффективно применять их на практике.

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

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

Для каждого этапа указываю примерные трудозатраты при условии более-менее эффективного подхода и изучения только минимально необходимого объема (при неэффективном подходе каждый пункт можно изучать в десять раз дольше) Позже в отдельной статье я напишу хорошие курсы и книги, соответствующие каждому этапу (некоторые курсы и книги для первых этапов я уже указал ранее в первой статье этой серии).



ЭШаг 1. Основные инструменты анализа данных: SQL, Excel.

  • SQL, основы (20 часов).

    Самостоятельное знание SQL может пригодиться для выполнения множества других задач.

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

  • Основы Excel (10 часов): фильтры и сортировка данных, формулы, ВПР, сводные таблицы, базовая работа с диаграммами.

    Коллеги, партнеры или руководство будут отправлять входящие данные в Excel, и вам нужно будет уметь их быстро понять и изучить.

    Часто результаты анализа, выполненного на Python, удобнее подготовить и представить в Excel.

  • Базовый английский (20-200 часов в зависимости от предыдущего уровня), на уровне самостоятельного чтения технической документации и специализированной литературы.

    Например, вам абсолютно необходимо уметь читать официальную документацию pandas/scikit, а также многие хорошие материалы по Python доступны только на английском языке.

Некоторые компании нанимают людей с такими знаниями на должности: аналитик/младший аналитик/веб-аналитик.

В Москве хорошее знание этих вещей иногда может дать зарплату до 100 тысяч, но скорее зарплата около 50-70 тысяч и начальная должность.



ЭНажмите 2. Основы Python и Pandas.

  • Основы Python (80 часов).

    Без знания Python невозможно использовать львиную долю инструментов машинного обучения.

    Другие языки менее эффективны в этой области и непопулярны.

  • панды (20 часов) – основы работы с данными на Python. На первое время достаточно хотя бы самых базовых знаний: индексация, выборка данных по условиям, группировка данных и соединение разных датафреймов.

  • Также изучите основы работы с различными API и парсинга данных ( Запросы , красивый суп )
На этом этапе дополнительные знания Python позволяют извлекать данные из различных API или с помощью веб-скрапинга.

От вас не ожидается знания Python на позиции аналитика.

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

Ваши шансы получить работу на этом этапе не увеличатся, но ваша зарплата может увеличиться, если вы примените это эффективно.



ЭНажмите 3. Основные понятия и классические алгоритмы машинного обучения.

(Этот этап может занять 200-400 часов в зависимости от того, насколько хороши ваши математические навыки на начальном этапе) Основные концепции машинного обучения:
  • Перекрестная проверка
  • Переобучение
  • Регуляризация
  • Утечка данных
  • экстраполяция (понимание возможностей в контексте различных алгоритмов)
Базовые алгоритмы, которые достаточно знать на уровне базовых принципов:
  • Прогноз и классификация:
    • Линейная регрессия
    • Древо решений
    • Логистическая регрессия
    • Случайный лес
    • Повышение градиента
    • кНН
  • Кластеризация: k-средние
  • Работа с временными рядами: экспоненциальное сглаживание
  • Уменьшение размерности: PCA
Основные методы подготовки данных: фиктивные переменные, горячее кодирование, tf-idf. Математика:
  • умение рассчитывать вероятности: основы комбинаторики, вероятности независимых событий и условные вероятности (формула Байеса).

  • Поймите смысл фразы: «корреляция не подразумевает причинно-следственную связь», чтобы правильно интерпретировать результаты моделей.

  • Математические методы, необходимые для полного понимания того, как работают ключевые модели машинного обучения: Градиентный спуск.

    Максимальное правдоподобие, понимание того, почему на практике используются логарифмы (log-likelihood).

    Понимание того, как построить целевую функцию логистической регрессии (зачем логарифмировать шансы), понимание сути логистической функции (часто называемой «сигмовидной»).

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

    Но понимание математики поможет вам глубже понять различные модели и придаст уверенности в их использовании.

    Позже, для старшего уровня, эти знания уже обязательны:

Без практических навыков знание этого этапа мало что повысит ваши шансы найти работу.

Но они значительно облегчают общение с другими специалистами по данным, открывают путь к пониманию многих дополнительных источников (книг/курсов) и позволяют начать практиковаться в их использовании.



ЭНажмите 4. Набор основных навыков решения проблем.

Цель этого этапа — получить навыки использования всех ранее изученных методов машинного обучения с использованием scikit-learn, pandas (numpy).

По сути, это практика, основанная на теоретических знаниях предыдущего этапа.

Имеет смысл потратить на это 100-300 часов.

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

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

По завершении этого этапа есть шанс получить должность младшего специалиста по обработке данных.

Заработная плата будет низкой.

Но главное – продолжать учиться.

До достижения старшего уровня возможность учиться у коллег более ценна, чем ваша текущая зарплата.



Знакомство с основами нейронных сетей

На этом этапе могут быть полезны знания основ нейронных сетей, слоев CNN, RNN/LSTM, векторных вложений.

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

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

Также этот этап должен позволить вам примерно оценить, сколько ресурсов он от вас потребует, если вы решите в него погрузиться.

Я рекомендую ограничить это время 20-40 часами, что необходимо только для общего понимания концепций.



ЭНажмите 5. Дополнительные технические навыки, необходимые для работы.

Этот этап может занять 60-200 часов, в зависимости от степени перфекционизма.

Кажется оптимальным изучить все достаточно, чтобы понять ключевые принципы и команды, но не обязательно практиковаться на большом количестве обучающих примеров, т.к.

если вам удастся устроиться на работу, вы сможете получить практику и отточить свои навыки уже во время работы.

  • Conda: понимание проблем зависимости версий библиотеки и способы их решения
  • основы bash
  • Стандартная библиотека Python, если она не освоена ранее (требуется минимум itertools, коллекций, contextlib), умение эффективно разбивать код на функции и модули, классы; умение использовать контекстные менеджеры.

  • Основы git, а также очень полезная возможность работы с IDE: pycharm/vs code. Их использование облегчит работу с git, заменив работу с командной строкой графическим интерфейсом.

  • Библиотеки визуализации (matplotlib+seaborn,plotnine,plotly), если вы их раньше не освоили.

С таким багажом знаний наверняка можно найти должность младшего специалиста по данным (может она и по-другому называется, но суть та же).

В принципе, на этом уровне знаний можно работать годами, практикуясь в использовании разных уже изученных моделей, библиотек и инструментов, осваивая вспомогательные методы (feature Engineering), нюансы и способы решения аналогичных задач с использованием разных библиотек (xgboost, cat-boost).

).

Уровень зарплат будет постепенно повышаться.

Но это не уровень Старшего специалиста.



Изучаем по необходимости, 2-5 этапы



Визуализация данных

В какой-то момент вам понадобится возможность визуализировать данные, с которыми вы работаете.

Активно изучать это имеет смысл тогда, когда вы готовы сразу применить эти знания на практике, ведь иначе они не запоминаются.

В Python есть несколько библиотек (вот рекомендуемый порядок изучения):

  • matplotlib — на нем основаны следующие два варианта, и потенциально он умеет все.

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

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

  • seaborn — очень популярная библиотека, решающая множество стандартных задач одной строкой.

    Достаточно понимать принципы и уметь с помощью документации найти, как делать правильные вещи.

  • plotnine — позволяет создавать очень креативные графики.

    Сверхмощный инструмент, позволяющий создавать самые нетривиальные графики в несколько строк кода.

    Для сравнения, seaborn не обладает такой гибкостью, а в matplotlib вам будет сложно придумать, как сделать тот же график, если он не совсем примитивен.

    Однако поначалу для освоения сюжета требуется некоторое время.

    Если бы сюжет не существовал, это был бы самый мощный инструмент.

  • plotly — позволяет сделать все графики интерактивными.

    Труден в освоении и плохо документирован.

    Наверное, нет смысла его изучать, пока не поймешь, что именно тебе нужно (интерактивность).

Прежде чем использовать его в реальной практике, можно ограничиться 10-20 часами на одну библиотеку для обучения.

Если вам не нужно сначала использовать Python для подготовки данных или вы хотите создать визуальные информационные панели, которые могут использовать другие люди, обратите внимание на PowerBI и Tableau, это чрезвычайно мощные и популярные инструменты визуализации данных.

Вы можете изучить каждый из этих инструментов на минимальном рабочем уровне примерно за 60 часов.

Знание комбинации SQL+Excel+PowerBI/Tableau откроет для вас позиции аналитиков и «BI-специалистов» с зарплатой в Москве от 100 тысяч; коммуникативные специалисты, хорошо владеющие этими инструментами, находят позиции с зарплатой от 150 тысяч.

Такие вакансии в основном встречаются в корпорациях и системных интеграторах.



Инструменты обработки данных

Вы можете учиться на разных этапах, в зависимости от задач, с которыми вы сталкиваетесь.

  • Основы регулярных выражений, они же RegExp (10 часов).

    Знание регулярного выражения необходимо для расширенной фильтрации данных в различных инструментах обработки данных.

  • PySpark (40 часов на изучение основ, 100–200 часов на приобретение хороших рабочих навыков).

    Это необходимо, когда у вас много данных, и вам приходится обрабатывать их сразу на целой группе серверов (кластере).

    Это уже Big data. Заниматься этим заранее нет смысла, потому что.

    знания не фундаментальны и легко забываются.

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

    Внутри Spark устроен совсем иначе, чем обычные базы данных, но с точки зрения использования он оказывается очень похожим, потому что… поддерживает почти стандартный синтаксис SQL или, как вариант, API, отдалённо похожий на pandas. Есть определенные концептуальные различия, но больших трудностей в освоении это не вызывает. В последнее время они продвигают библиотеку Koalas, которая будет использовать команды так же, как pandas, для работы со спарк-кластером, но пока я не рекомендую делать это основным подходом к работе со Spark.

  • Азы html необходимы, как минимум, для общения с коллегами и понимания их языка, если у вас есть хоть небольшой опыт работы с сайтами и необходимость их парсить или анализировать данные с них.



Энажмите 6



Углубление и развитие технических навыков

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

.

  • Python на хорошем уровне: декораторы, уверенное знание классов и наследования, изучение базовых классов, dunderscore __methods__ .

  • Уверенное использование bash, понимание основ Linux.
  • Полезно для изучения основ Docker
Всем этим вещам можно было научиться раньше.

Но, как правило, знать их заранее просто не обязательно.

Потому что вы больше пострадаете от отсутствия других навыков, данных на предыдущих шагах.



Другие области машинного обучения

В какой-то момент вам может потребоваться выйти за рамки подготовки прогнозных моделей или изучения и объяснения данных (кластеризация, EDA и визуализация).

Это может быть связано как с вашими интересами, так и с проектами на работе.

Например, это могут быть рекомендательные системы.

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

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



Нейронные сети

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

Раньше изучать их неэффективно, потому что.

многие проблемы можно эффективно решить другими методами.

И хотя ваши данные и прогнозы изначально числовые, обычно эффективнее решать их «классическими» методами.

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

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



Другие статьи

  1. Вводная статья о том, как понять, стоит ли вообще идти в data science и как сделать первые шаги
  2. Стоит ли обратить внимание на науку о данных?
  3. Принципы эффективного самообучения
  4. Обзор платформ онлайн-обучения
  5. Рекомендации книг и статей


Готов выступить наставником в самостоятельном обучении

Если после прочтения всех моих статей у вас остались вопросы, потому что.

ваша ситуация специфическая - я могу помочь вам индивидуально.

Писать: self.development.mentor в домене gmail.com, Олег И если мои статьи будут вам полезны, вы можете отблагодарить меня материально; под этой статьей должна быть кнопка «пожертвовать» для этих целей.

Теги: #Машинное обучение #Карьера в ИТ-индустрии #Большие данные #обучение #самообразование #онлайн-обучение #самообучение

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.