Как бесплатно изучить науку о данных
Полный путь обучения, включая ресурсы, которые не будут стоить вам ни цента
Средняя стоимость получения степени магистра в традиционных учебных заведениях обойдется вам в сумму от 30 000 до 120 000 долларов. Даже программы на получение степени в области науки о данных в Интернете не дешевы и стоят минимум 9 000 долларов. Так что же делать, если вы хотите изучать науку о данных, но не можете себе этого позволить?
Я сделал карьеру специалиста по данным, не получая никакого формального образования по этому предмету. В этой статье я собираюсь поделиться с вами моей личной учебной программой по изучению науки о данных, если вы не можете или не хотите платить тысячи долларов за более формальное обучение.
Учебная программа будет состоять из 3 основных частей, технических навыков, теории и практического опыта. Я буду включать ссылки на бесплатные ресурсы по каждому элементу обучения, а также буду включать некоторые ссылки на дополнительные «недорогие» варианты. Поэтому, если вы хотите потратить немного денег на ускорение обучения, вы можете добавить эти ресурсы в учебную программу. Я включу предполагаемую стоимость каждого из них.
Технические навыки
Первая часть учебной программы будет посвящена техническим навыкам. Я рекомендую сначала изучить их, чтобы вы могли применить сначала практический подход, а не сначала изучать математическую теорию. Python на сегодняшний день является наиболее широко используемым языком программирования, используемым в науке о данных. В опросе Kaggle Machine Learning and Data Science, проведенном в 2018 году, 83% респондентов заявили, что используют Python ежедневно. Поэтому я бы рекомендовал сосредоточиться на этом языке, но также потратить немного времени на другие языки, такие как R.
Основы Python
Прежде чем вы сможете начать использовать Python для науки о данных, вам необходимо получить базовое представление об основах, лежащих в основе этого языка. Итак, вы захотите пройти вводный курс Python. Есть много бесплатных, но мне больше всего нравятся программы Codeacademy, поскольку они включают в себя практическое программирование в браузере.
Я бы посоветовал пройти вводный курс для изучения Python. Это охватывает базовый синтаксис, функции, поток управления, циклы, модули и классы.
Анализ данных с помощью Python
Затем вы захотите получить хорошее представление об использовании Python для анализа данных. Для этого есть ряд хороших ресурсов.
Для начала я предлагаю пройти хотя бы бесплатные части пути обучения аналитика данных на dataquest.io. Dataquest предлагает полные схемы обучения для аналитиков данных, специалистов по данным и инженеров данных. Довольно много контента, особенно на пути аналитика данных, доступно бесплатно. Если у вас есть деньги, которые можно потратить на обучение, я настоятельно рекомендую потратить их на оплату нескольких месяцев премиальной подписки. Я прошел этот курс, и он дал фантастические знания основам науки о данных. Мне потребовалось 6 месяцев, чтобы пройти путь исследователя данных. Цена варьируется от 24,50 до 49 долларов в месяц в зависимости от того, платите вы ежегодно или нет. Лучше приобрести годовую подписку, если вы можете себе это позволить.
Python для машинного обучения
Если вы решили оплатить полный курс по науке о данных на Dataquest, тогда вы будете хорошо разбираться в основах машинного обучения с помощью Python. Если нет, то есть много других бесплатных ресурсов. Я бы сосредоточился на scikit-learn, который на сегодняшний день является наиболее часто используемой библиотекой Python для машинного обучения.
Когда я учился, мне посчастливилось посетить двухдневный семинар, проводимый Андреасом Мюллером, одним из основных разработчиков scikit-learn. Однако он опубликовал все материалы из этого и других курсов в этом репозитории Github. Они состоят из слайдов, заметок к курсу и записных книжек, с которыми вы можете работать. Я определенно рекомендую проработать этот материал.
Тогда я бы посоветовал взять несколько руководств из документации scikit-learn. После этого я бы предложил создать несколько практических приложений для машинного обучения и изучить теорию, лежащую в основе работы моделей, о чем я расскажу чуть позже.
SQL
SQL - жизненно важный навык, которому нужно научиться, если вы хотите стать специалистом по данным, поскольку одним из фундаментальных процессов моделирования данных является, в первую очередь, извлечение данных. Чаще всего это связано с выполнением SQL-запросов к базе данных. Опять же, если вы не выбрали полный курс Dataquest, вот несколько бесплатных ресурсов для изучения этого навыка.
Codeacamdemy предлагает бесплатное введение в Курс SQL. Опять же, это очень практично при полном кодировании в браузере. Если вы также хотите узнать о запросах к базе данных в облаке, тогда Google Cloud BigQuery очень доступен. Существует бесплатный уровень, поэтому вы можете бесплатно опробовать запросы, широкий спектр общедоступных наборов данных для тестирования и очень хорошую документацию.
R
Чтобы быть разносторонним специалистом по данным, неплохо было бы немного диверсифицироваться, используя только Python. Поэтому я бы посоветовал также пройти вводный курс в R. Codeacademy и пройти вводный курс по их бесплатному тарифному плану. Здесь, вероятно, стоит отметить, что, как и в случае с Dataquest, Codeacademy также предлагает полный план обучения науке о данных как часть своей профессиональной учетной записи (это стоит от 31,99 до 15,99 долларов в месяц, в зависимости от того, сколько месяцев вы платите вперед). Я лично считаю, что курс Dataquest намного более всеобъемлющий, но он может оказаться немного дешевле, если вы хотите следовать по пути обучения на единой платформе.
Программная инженерия
Хорошая идея - получить представление о навыках и передовых методах разработки программного обеспечения. Это поможет сделать ваш код более читаемым и расширяемым как для вас, так и для других. Кроме того, когда вы начнете запускать модели в производство, вам потребуется уметь писать качественный, хорошо протестированный код и работать с такими инструментами, как контроль версий.
Для этого есть два отличных бесплатных ресурса. Python как вы имеете в виду охватывает такие вещи, как руководство по стилю PEP8, документация, а также очень хорошо охватывает объектно-ориентированное программирование.
Руководство по вкладу scikit-learn, хотя и написано для облегчения внесения вклада в библиотеку, на самом деле очень хорошо описывает передовой опыт. Он охватывает такие темы, как Github, модульное тестирование и отладка, и все написано в контексте приложения для анализа данных.
Глубокое обучение
Для всестороннего введения в глубокое обучение, я не думаю, что вы можете найти что-то лучшее, чем совершенно бесплатный и без рекламы fast.ai. Этот курс включает введение в машинное обучение, практическое глубокое обучение, вычислительную линейную алгебру и введение кода в обработку естественного языка. Все их курсы основаны на практическом подходе, и я их очень рекомендую.
Теория
Изучая технические элементы учебной программы, вы познакомитесь с некоторыми теоретическими основами кода, который вы реализуете. Я рекомендую вам изучать теоретические элементы наряду с практическими. То, как я это делаю, заключается в том, что я изучаю код, чтобы иметь возможность реализовать технику. Давайте возьмем KMeans в качестве примера. Как только у меня что-то будет работать, я буду углубляться в такие концепции, как инерция. Опять же, документация scikit-learn содержит все математические концепции, лежащие в основе алгоритмов.
В этом разделе я представлю ключевые фундаментальные элементы теории, которые вам следует изучить наряду с более практическими элементами.
Ханская академия бесплатно охватывает практически все перечисленные ниже концепции. Вы можете адаптировать предметы, которые вы хотели бы изучать, когда вы зарегистрируетесь, и тогда у вас будет хорошая индивидуальная учебная программа для этой части пути обучения. Установив все флажки ниже, вы получите обзор большинства элементов, которые я перечислил ниже.
Математика
Исчисление
Исчисление определяется Википедией как математическое исследование непрерывных изменений. Другими словами, исчисление может находить закономерности между функциями, например, в случае производных, оно может помочь вам понять, как функция изменяется с течением времени.
Многие алгоритмы машинного обучения используют исчисление для оптимизации производительности моделей. Если вы хоть немного изучили машинное обучение, то наверняка слышали о градиентном спуске. Это функционирует путем итеративной корректировки значений параметров модели, чтобы найти оптимальные значения для минимизации функции стоимости. Градиентный спуск - хороший пример того, как исчисление используется в машинном обучении.
Что тебе нужно знать:
Деривативы
- Геометрическое определение
- Вычисление производной функции
- Нелинейные функции
Правило цепочки
- Составные функции
- Производные композитных функций
- Множественные функции
Градиенты
- Частные производные
- Направленные производные
- Интегралы
Линейная алгебра
Многие популярные методы машинного обучения, включая XGBOOST, используют матрицы для хранения входных данных и обработки данных. Матрицы вместе с векторными пространствами и линейными уравнениями образуют математическую ветвь, известную как линейная алгебра. Чтобы понять, как много методов машинного обучения работают, важно хорошо разбираться в этой области.
Что вам нужно изучить:
Векторы и пробелы
- Векторы
- Линейные комбинации
- Линейная зависимость и независимость
- Векторные точечные и кросс-произведения
Матричные преобразования
- Функции и линейные преобразования
- Умножение матриц
- Обратные функции
- Транспонировать матрицу
Статистика
Вот список ключевых понятий, которые вам необходимо знать:
Описательная / сводная статистика
- Как обобщить выборку данных
- Разные типы раздач
- Асимметрия, эксцесс, центральная тенденция (например, среднее, медиана, мода)
- Меры зависимости и отношения между переменными, такими как корреляция и ковариация
Дизайн эксперимента
- Проверка гипотезы
- Отбор проб
- Тесты значимости
- Случайность
- Вероятность
- Доверительные интервалы и двухвыборочный вывод
Машинное обучение
- Заключение о наклоне
- Линейная и нелинейная регрессия
- Классификация
Практический опыт
Третий раздел учебной программы посвящен практике. Чтобы по-настоящему усвоить изложенные выше концепции, вам нужно будет использовать навыки в некоторых проектах, которые в идеале очень похожи на реальное приложение. Поступая таким образом, вы столкнетесь с проблемами, с которыми придется работать, например с отсутствующими или ошибочными данными, и приобретете глубокие знания в этой области. В этом последнем разделе я перечислю несколько хороших мест, где вы можете получить этот практический опыт бесплатно.
Однако при осознанной практике цель состоит не только в том, чтобы раскрыть свой потенциал, но и в его наращивании, чтобы сделать возможным то, что раньше было невозможно. Это требует сложного гомеостаза - выхода из зоны комфорта - и принуждения вашего мозга или тела к адаптации , Андерс Эрикссон, Пик: секреты новой науки опыта
Каггл и др.
Соревнования по машинному обучению - хорошее место, где можно попрактиковаться в создании моделей машинного обучения. Они предоставляют доступ к широкому спектру наборов данных, каждый из которых содержит конкретную проблему, которую нужно решить, и имеет таблицу лидеров. Таблица лидеров - это хороший способ оценить, насколько хороши ваши знания при разработке хорошей модели и где вам, возможно, потребуется улучшить их.
Помимо Kaggle, существуют и другие площадки для соревнований по машинному обучению, в том числе Analytics Vidhya и DrivenData.
Репозиторий машинного обучения UCI
Репозиторий машинного обучения UCI - большой источник общедоступных наборов данных. Вы можете использовать эти наборы данных для создания собственных проектов данных, которые могут включать модели анализа данных и машинного обучения, вы даже можете попробовать создать развернутую модель с веб-интерфейсом. Хорошая идея - хранить ваши проекты где-нибудь в открытом доступе, например, на Github, так как это может создать портфолио, демонстрирующее ваши навыки, которые можно будет использовать в будущих заявках на вакансии.
Вклад в открытый исходный код
Еще один вариант, который следует рассмотреть, - это участие в проектах с открытым исходным кодом. Существует множество библиотек Python, которые полагаются на сообщество в их поддержке, и часто на встречах и конференциях проводятся хакатоны, к которым могут присоединиться даже новички. Посещение одного из этих мероприятий, безусловно, даст вам некоторый практический опыт и среду, в которой вы можете учиться. другие, одновременно отдавая что-то взамен. Numfocus - хороший пример такого проекта.
В этом посте я описал путь обучения и бесплатные онлайн-курсы и руководства, которые позволят вам бесплатно изучать науку о данных. Демонстрация того, что вы умеете делать, в форме портфолио - отличный инструмент для будущих заявлений о приеме на работу вместо формальных квалификаций и сертификатов. Я действительно считаю, что образование должно быть доступным для всех, и, конечно же, по крайней мере, для науки о данных Интернет предоставляет такую возможность. В дополнение к ресурсам, перечисленным здесь, я ранее публиковал список рекомендованной литературы для изучения науки о данных, доступный здесь. Все они также находятся в свободном доступе в Интернете и являются отличным способом дополнить более практические ресурсы, описанные выше.
Спасибо за прочтение!