Хочу поделиться опытом обучения на ресурсе «Coursera», а именно — освоением курсов «Machine Learning Foundations: A Case Study Approach» и «Machine Learning: Regression». Эти курсы являются частью специализации «Machine Learning» (University of Washington).

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

Было несколько причин, побудивших выбрать именно портал «Coursera» и именно этот курс. Во-первых, читать статьи на разрозненные темы о мало знакомом предмете не приносит пользы, т.к. знания не систематизируются. Следовательно, возникает необходимость в выстроенном курсе. Во-вторых, был отрицательный опыт прослушивания лекций, где авторы очень долго пытались объяснить очевидные вещи, до сути так и не доходя. Что привлекло меня в курсе «Machine Learning», это то что, лекторы Carlos Guestrin и Emily Fox выглядят крайне увлечёнными своим предметом (passioned & excited), говорят быстро и по делу. И кроме того, заметно, что авторы имеют дело с практическим применением, т. е. с индустрией.

По словам авторов курса, причиной его создания была попытка донести задачи машинного обучения до широкой аудитории, т.е. для тех, у кого подготовка проходила в разных областях. К главным отличиям можно отнести то, что сперва делается акцент на конкретных задачах, которые можно встретить в существующих приложениях, и на то, как машинное обучение может помочь решить их. Затем разбираются применяемые методы, то как они устроены и как могут быть полезны. Таким образом, можно увидеть на простых примерах, как машинное обучение может быть применено на практике. Тем более, что в наши дни, по словам авторов, последствия применения машинного обучения заметны. Раньше оно воспринималось по-другому. Некий набор данных подавался на вход мало понятного алгоритма, в результате чего делался вывод «мой график лучше твоего», и результаты отсылались в научный журнал.

Занятия делятся на теоретическую и практическую часть, и на тесты. В теоретической части начитываются лекции (на английском языке, английские или испанские субтитры). Имеются pdf презентации, по которым можно готовиться к тестам. Также на форуме даны ссылки на дополнительную литературу. В 1-ом курсе «Machine Learning Foundations: A Case Study Approach» есть лекции, где обучают работать в интерактивной оболочке IPython. Здесь рассказывают об основах программирования на языке Python (только всё необходимое, чтобы иметь возможность выполнять задания). Помимо этого, имеются лекции, где рассказывают о принципах работы с библиотекой GraphLab Create. Тесты делятся на теоретические и практические. Вопросы в теоретических тестах требуют понимания, поверхностно прослушать материал и успешно сдать тест вряд ли получиться. Иногда лекций недостаточно и приходится пользоваться дополнительными материалами. Стоит отметить, что здесь в одном уроке вы можете сами себе продемонстрировать при помощи заданий основные теоретические моменты.

Практическая часть представляет собой тест с заданиями. Выполнение заданий предполагает умение обработать большой набор данных, а также произв��сти операции над ними. Авторы рекомендуют использовать библиотеку GraphLab Create, которая имеет API на языке Python. С её помощью вы сможете загружать из файла массивы данных в удобные структуры (SFrame). Эти структуры позволяют визуализировать данные (специальные интерактивные графики) и удобно их изменять (добавлять колонки, применять операции над строками и т. д.). В библиотеке имеются алгоритмы машинного обучения, с которыми предстоит работать. Для выполнения заданий можно использовать шаблон, реализованный в web-оболочке IPython Notebook. Это файл, который хранит каркас функций, а также рекомендации. Для локальной работы с GraphLab Create и IPython Notebook авторы рекомендуют использовать инсталлятор Anaconda. Также можно работать на web-сервисе Amazon EC2, где все необходимые программы уже установлены. Мною был выбран второй вариант, т. к. можно сразу приступить к работе.

Теперь стоит рассказать о плане курсов. Первый курс специализации «Machine Learning Foundations: A Case Study Approach» является вводным. Лекции первой недели посвящены описанию языка Python, библиотеке GraphLab Create. Также авторы кратко рассказывают, о содержании других курсов специализации. Это очень полезно, т. к. обозначенный план действий не даёт забывать в какую сторону вы двигаетесь и что должны уметь делать по итогам обучения. Остальные недели содержат введение в темы, которые будут подробно раскрыты в будущих курсах. То, что дано в этих введениях, требует хорошего понимания, также нужно уметь пользоваться алгоритмами в практических заданиях. Стоит отметить, что эти задания наглядно демонстрируют прочитанную теорию. Ниже приведён план курса «Machine Learning Foundations: A Case Study Approach».

  • Неделя 1. Введение. Авторы описывают учебные примеры, которые будут приведены в течение следующих недель данного курса. Этим же примерам подробно посвящены последующие курсы специализации. Авторы рассказывают, как методы машинного обучения помогают решить существующие задачи. Учат работать с GraphLab Create. Есть введение в язык Python и в оболочку IPython Notebook. Приводятся схемы структуры курса (пример смотри на рисунке 1).
  • Неделя 2. Регрессия: прогнозирование цен на недвижимость («Regression: Predicting House Prices»). Здесь рассказывают о методах, которые позволяют по имеющимся данным [цена за дом — его параметры], предсказать цену за дом, параметров которого нет в наборе. Регрессии посвящён второй курс специализации “Machine Learning: Regression”.
  • Неделя 3. Классификация: анализ тональности текста («Classification: Analyzing Sentiment»). Авторы рассказывают о способах классификации объектов. В качестве примеров приводятся такие задачи, как выставление оценки ресторану на основании текстов отзывов; определение тематики статей по их содержанию; определение того, что изображено на картинке. Классификации посвящён третий курс специализации «Machine Learning: Classification».
  • Неделя 4. Кластеризация и поиск подобия: извлечение документов («Clustering and Similarity: Retrieving Documents»). В качестве учебного примера здесь приведена задача рекомендации пользователю статей в зависимости статей, которые он уже прочитал. Рассказывают о методах представления текстовых документов и способах измерения подобия между ними. Описывают задачи кластеризации объектов (процесса их группирования по определённым признакам). Кластеризации посвящён четвёртый курс специализации «Machine Learning: Clustering & Retrieval».
  • Неделя 5. Рекомендация продуктов («Recommending Products»). Здесь рассказывают о приложениях, где системы рекомендации могут быть полезны; о способах построения систем рекомендации; о метриках оценки эффективности систем рекомендации. Системам рекомендации посвящён пятый курс специализации «Machine Learning: Recommender Systems & Dimensionality Reduction».
  • Неделя 6. Глубинное обучение: поиск изображений («Deep Learning: Searching for Images»). Последняя неделя посвящена многоуровневым нейронным сетям. Более подробно эта тема раскрыта в последнем курсе специализации «Machine Learning Capstone: An Intelligent Application with Deep Learning».

Course structure
Рисунок 1. Структура специализации Machine Learning (взято из материалов курса «Machine Learning: Regression», ©2015 Emily Fox & Carlos Guestrin)

Для прохождения второго курса специализации “Machine Learning: Regression” требуется иметь представление о производных, матрицах, векторах и базовых операциях над ними. Полезным будет умение создавать хотя бы простые программы на языке Python. Краткое описание второго курса специализации “Machine Learning: Regression” приведено ниже.

  • Введение. Авторы рассказывают, какое место занимает регрессия в области машинного обучения. Перечисляются приложения, где регрессия используется, и описываются задачи учебного примера — прогнозирования цен на недвижимость. Даётся обзор тем, который предстоит изучить. Эти темы проиллюстрированы на рисунке 2. В качестве моделей рассматриваются линейная регрессия (Linear regression), регуляризация (Regularization) двух типов (Ridge, Lasso), регрессия по ближайшим соседям (nearest neighbour regression), ядерная регрессия (непараметрическая регрессия — ядерное сглаживание) (kernel regression). Разобраны такие алгоритмы, как градиентный спуск (gradient descent), градиент координат (coordinate descent). Ключевыми терминами курса являются функция потерь (loss functions), компромисс между смещением и дисперсией (bias-variance tradeoff), кросс-валидация (cross-validation), разрежённость (sparsity), переобучение (overfitting), выбор модели (model selection), выбор характеристик (feature selection) (Прошу прощения, если перевод некорректен).
  • Неделя 1. Простая регрессия (Simple regression). Объясняется принцип этой модели, и говорится об особенностях выбора её входных данных. Вводится метрика оценки качества простой линейной регресси��. Приведены алгоритмы расчёта параметров модели, оптимизирующих метрики качества (градиентный спуск). Объясняется смысл параметров. Показывается, как осуществлять прогноз с помощью рассчитанных параметров. Обсуждаются источники ошибок.
  • Неделя 2. Множественная регрессия (Multiple regression). Рассказывается о полиномиальной регрессии и выводится модель регрессии с несколькими параметрами. Демонстрируется процесс минимизации метрики оценки качества и описываются алгоритмы вычисления параметров модели регрессии (градиентный спуск и градиент координат). Описывается алгоритм формирования предсказаний.
  • Неделя 3. Оценка производительности (Assessing performance). Вопросы, обсуждаемые в течение этой недели: метрики оценки качества модели; свойства функции потерь в сравнении с ошибкой обучения, ошибкой обобщения и тестовой ошибкой; последствия выбора тестовой ошибки в качестве метрики оценки производительности; компромисс выбора пропорции разбиения данных на тестовый и обучающий наборы; источники ошибки спрогнозированных данных; выбор сложности модели; валидационный набор.
  • Неделя 4. Гребневая регрессия (Ridge regression). Рассматривается поведение рассчитанных параметров модели при её избыточном обучении; описание зависимости коэффициентов модели от параметра регулировки гребневой регрессии; реализация алгоритма градиентного спуска; алгоритм кросс-валидации для выбора наилучшего параметра регулировки.
  • Неделя 5. Лассо регрессия (Lasso regression). Обсуждается выбор значимых параметров модели. Сравниваются «жадные» и оптимальные алгоритмы. Демонстрируются зависимости коэффициентов модели от параметра регулировки лассо регрессии. Описывается алгоритм кросс-валидации для выбора наилучшего параметра регулировки.
  • Неделя 6. Метод ближайших соседей и непараметрическая регрессия с ядерным сглаживанием (Nearest neighbor and kernel regression). Перечислены причины использования метода ближайших соседей. Дано определение ядерной регрессии и приведены примеры её использования.

Machine Learning. Regression
Рисунок 2. Темы, изучаемые в курсе «Machine Learning: Regression» (Взято из материалов курса «Machine Learning: Regression», ©2015 Emily Fox & Carlos Guestrin)

Нагрузка, распределённая по неделям, адекватная. Однако, второй курс «Machine Learning: Regression» является более насыщенным. Если вы опаздываете более чем на две недели, вам будет предложено переключиться на другую сессию, но этого делать не обязательно. Лекции мною прослушивались в течение рабочей недели, в пятницу или на выходных выполнялись практические задания. На них у меня уходило около трёх часов.

В заключении хотелось бы сказать, что описанные курсы специальности «Machine Learning» произвели хорошее впечатление. К достоинствам я отношу практические задания, они тщательно продуманы и иллюстрируют теорию. Мне понравились лекции, которые являются ёмкими и в которых нет «воды». Курсы структурированы, имеются схемы, которые помогают понять, какую «часть» машинного обучения вы сейчас изучаете, что вы знаете и чему предстоит научиться. Недостатками является то, что иногда прочитанной теории не хватает. Хотелось бы больше ссылок на другие ресурсы, хотя на официальном форуме приведены рекомендуемые книги, которые там же можно и скачать. В целом, курсы специализации «Machine Learning», будут весьма полезны, если вы хотите научиться практически применять методы машинного обучения.