Машинное обучение и анализ данных — обзор Специализации от Яндекcа & МФТИ (5 курсов + финальный проект), предложенной на образовательной платформе Coursera. Статья представляет собой исключительно мнение автора как выпускника, не является рекламой и/или умышленной критикой, а скорей служит вводным инструктажем для тех, кто начинает обучение по данной тематике.
Вам может быть полезна данная статья если:
- Вы хотите “попробовать на вкус” программирование на Python и понять для себя основные принципы работы моделей машинного обучения, использующихся для работы с данными
- Вы рассматриваете для себя возможность пройти какой-либо обучающий курс по данной тематике и вам интересно оценить, насколько Специализация от Яндекса & МФТИ подходит для этого
Почему после прохождения всех пяти курсов Специализации появилось желание написать данную статью: если бы я “тот”, который только начинал первый курс данной Специализации, использовал советы, данные в этой статье, эффективность и скорость обучения была бы в разы выше. И плюс до начала обучения я представлял собой чистый лист: ни строчки кода в жизни, только базовые знания теории вероятности, статистики и линейной алгебры, а значит проходил путь с нуля и застревал на каждом шагу, где от студента ждали больше в плане программирования, чем было положено! Тем самым, я представляю собой репрезентативного подопытного.
Почему формат Специализации — это лучшее, что можно выбрать в начале пути? В целом, для обучения на русском языке есть широкий перечень возможностей: аналогичные по форме, но иные по содержанию онлайн-программы (от Вышки и Яндекса на Coursera, курсы по теме на Stepik’e и т.д.), лекции профессора Воронцова, платные курсы типа New Professions Lab, Нетологии и многое другое. Но, на мой взгляд, именно сочетания теории, видео-лекций и контролируемых/проверяемых (!!!) практических работ без необходимости подчиняться какому-то расписанию — лучшее по форме самообразование с наивысшим соотношением цена/качество/удобство. Структура Специализации построена таким образом, что концепция “методов работы с данным” раскрывается постепенно, и ты успеваешь за темпом обучения, даже если ничего не знаешь до начала курсов (за исключением исключений). Если стараться просто “впитывать” теорию или неструктурированно браться за какие-то практические задачи есть риск не сдвинуться с места в общем понимании предмета!
Всего в данной Специализации курсов пять:
- Математика и Python для анализа данных — вводный курс, наполненный повторением основ мат. анализа и линейной алгебры, жизненно необходимых для прохождения пути
- Обучение на размеченных данных (обучение с учителем) — курс, посвященный моделям типа линейной/логистической регрессии, введенению в работу с решающими деревьями и другими моделями, обучение которых возможно только при наличии тех самых “размеченных” данных
- Поиск структуры в данных (обучение без учителя) — это про изучение и обучение моделей классификации/кластеризации, используемых в отсутствии размеченных данных
- Построение выводов по данным — несмотря на название, этот курс не про визуализацию данных… Он про статистику, про принципы проверки гипотез, в т.ч. множественных, про построение доверительных интервалов и так далее, т.е. про то, как из полученных результатов вашей модели ПРАВИЛЬНО сделать выводы (правильные или нет уже зависит от самой модели и исходных данных))
- Прикладные задачи анализа данных
Какое самое важное препятствие Вас ждет, если также как и я, Вы не писали ни строчки кода до начала обучения? Полное непонимание структуры языка Python, с которым предстоит очень много работать в процессе обучения. К сожалению, формат Специализации не подразумевает длинного вводного курса и подготовка идет “на бегу” в ходе первого курса. Быстрое повторение основ линейной алгебры, статистики и краткий обзор Python — вот и вся подготовительная работа. Этого очень мало. Несмотря на то, что в требованиях к курсу указано базовое знание основ программирования, презентуется эта программа везде как шанс пройти путь программирования на Python c нуля.
Что я хотел бы знать до начала обучения? Необходимость изучения основ Python применительно к анализу данных и только потом — прохождение курсов специализации. Очень важно понимать структуры и типы данных, основные методы работы с числовыми данными, таблицами и основными библиотеками — numpy & pandas. Понимать, уметь работать с кодом (элементарные преобразования, работа с табличными данными и так далее) и знать источники (!) информации, когда чего-то не знаешь (stock overflow, форумы, блоги, каналы в слаке и так далее). Как получить весь базовый набор на русском языке я не знаю, т.к. не ставил цели именно на русском учиться, поэтому в качестве ориентира на данном этапе считаю данную книгу, написанную создателем библиотеки Pandas: «Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython» ©. Если бы всех студентов Специализации заставляли бы ее прочесть и освоить материал до начала учебы — КПД вырос бы минимум вдвое потом! Отдельно хочется попросить оторвать руки создателям первого курса за задание с работой с текстом — я сейчас делаю финальный проект по итогам пяти курсов и с ужасом вспоминаю, как пришлось тратить часы и дни поиском по форумам, чтобы не имея ни малейшего представления Python, токенизировать тексты и рассчитывать их сходство, используя примитивные циклы, потому что ничего лучше тогда ты не знаешь… Это очень жестоко, я думаю немало людей бросили всю учебу на этом моменте!
Проходя второй курс Специализации, снова и снова придется возвращаться к основам — до понимания и разбора реальных моделей обучения на размеченных данных (другое название — обучение с учителем) порой просто не доходило! Сидишь и тратишь по 2–3 часа на преобразования и очистку числовой информации, подготовку таблиц и так далее, потому что нет навыка писать на Python, с трудом в голове откладывается его семантика, когда сразу бросают на работу с моделями линейной регресии и другими. В целом, курс очень насыщенный и требует много практической работы — в ходе видео-лекций дается теория по моделям линейной и логистической регрессий, объясняется принцип работы алгоритма градиентного бустинга и других ключевых для работы с данными темами (метрики, оптимизация и прочее). Общее впечатление — идеальное сочетание теории и практики, за исключением сегмента про нейронные сети — очень скомкано и ничего не понятно.
Относительно третьего курса могу сказать, что он получился хуже остальных (исключительно мое мнение). Вам предстоит попробовать строить модели для работы с данными в ситуации, когда даже в целях обучения нет тестовых ответов (то есть нет разметки в данных). Но, судя по моему представлению по итогам завершения Специализации и дальнейшего обучения, тема обучения без учителя настолько сложная и глубокая, что реально в рамках третьего курса вы, можно сказать, успеете прочесть “определения из википедии” и сделать пару-тройку элементарных примеров, то есть ощущения того, что хоть чуть “знаешь” не возникнет, а если возникнет — это самообман.
По мере движения вперед и изучения основ Python, вы будете все чаще сталкиваться с пробелами в знаниях теории вероятностей, статистики и линейной алгебры. И сильнее всего это будет чувствоваться на четвертом курсе, который по сути полностью посвящен концепциям из тер. вера и статистики в части тестирования гипотез, построения доверительных интервалов, оценки корреляций и так далее. И это вторая главная проблема всей Специализации — вроде как от студентов ждут “базовых знаний” в начале, но по мере прохождения курсов все отчетливей становится ясно — вы либо ХОРОШО знаете мат. часть, либо будет очень ПЛОХО. Реально не отделаться общими словами и “общим” пониманием — чтобы суметь разобраться как “под капотом” работают те или иные модели, на основании каких теорем/аксиом/концепций они строятся и почему результат именно такой, потребуется нечто большее, чем “базовые знания”. Отсюда вывод — если вы собираетесь погружаться в DS в общем и в Специализацию в частности, будьте готовы взяться за повторение мат. аппарата и вспомнить университетские годы — на коленке «попитонить» и видео интересные посмотреть не получится!
Вот и все! Дальше идет практика (5 курс и отдельно 7-ми недельный финальный проект), а критически оценить насколько задания сложные или легкие я не могу: у меня опыт в инвестициях и работе на финансовых рынках, а не DS, так что мое мнение в этом вопросе не имеет “веса” …) Одно могу сказать — организовано все очень достойно, в плане разъяснения информации, разнообразия заданий и ощущения эффективности обучения по мере их самостоятельного решения! Плюс, конечно, огромную роль играет определенное community в slack’е — поток студентов на Специализации большой и всегда есть с кем обсудить любой вопрос.
Отвечая на вопрос “порекомендовал бы или нет” данную обучающую программу, отвечу однозначным да! Хотя у меня ушло на нее больше года при постоянной full-time занятости, самое важное — что пришло детальное представление о методах работы с данными с использованием моделей машинного обучения, Python теперь свободно вертится в голове (как когда изучаешь иностранный язык, после определенного уровня уже можешь на нем думать и как-то структурированно изъясняться) и понятно, куда развивать свое хобби дальше — в работу с временными рядами, но это уже совсем другая история. Надеюсь, данный обзор будет вам полезен и позволит сэкономить немного времени / денег или повысит скорость обучения по данной тематике! Успехов.
Автор: призывник