Pull to refresh

Машинное обучение и анализ данных: разбор программы обучения и основные проблемы



Машинное обучение и анализ данных — обзор Специализации от Яндек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 теперь свободно вертится в голове (как когда изучаешь иностранный язык, после определенного уровня уже можешь на нем думать и как-то структурированно изъясняться) и понятно, куда развивать свое хобби дальше — в работу с временными рядами, но это уже совсем другая история. Надеюсь, данный обзор будет вам полезен и позволит сэкономить немного времени / денег или повысит скорость обучения по данной тематике! Успехов.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.