воронцов введение в машинное обучение
Воронцов. Курс «Машинное обучение» 2019 (Школа анализа данных)
Воронцов Константин Вячеславович — профессор кафедры интеллектуальных систем факультета управления и прикладной математики МФТИ, доктор физико-математических наук, доцент кафедры математических методов прогнозирования факультета ВМиК МГУ, преподаватель Школы анализа данных Яндекса, профессор ВШЭ.
Школа анализа данных (ШАД) — это бесплатная двухгодичная программа для тех, кто хочет стать продвинутым датасаентистом или архитектором систем хранения и обработки больших данных. Лекции и семинары в ШАДе проводят сотрудники Яндекса, преподаватели ведущих университетов.
Вводная лекция
В первой половине лекции вводятся обозначения и понятия, которые будут использоваться на протяжении всего курса: объекты, признаки, функция потерь, предсказательная модель, минимизация эмпирического риска, обучающая выборка, тестовая выборка, переобучение, скользящий контроль. Во второй половине лекции приводятся примеры прикладных задач классификации, регрессии, ранжирования. В конце кратко обсуждаются некоторые вопросы методологии машинного обучения: особенности реальных данных, межотраслевой стандарт CRISP-DM, организация вычислительных экспериментов.
Линейная модель играет фундаментальную роль в теории машинного обучения. Это простейшая модель нейрона и основной строительный блок для нейронных сетей. Обучать её можно с помощью метода стохастического градиента. На практике он нуждается в различных эвристических усовершенствованиях. Одно из важнейших – регуляризация. Она делает решение устойчивым в случае мультиколлинеарных признаков и уменьшает переобучение. Постановка задачи построения разделяющей поверхности в терминах теории вероятности приводит к пониманию регуляризатора через априорное распределение параметров модели. В конце рассматривается логистическая регрессия – метод классификации, способный не только классифицировать объекты, но и давать оценки вероятностей классов.
Метод ближайшего соседа является, пожалуй, самым простым методом классификации. Разбирая один за другим его недостатки, мы приходим к методам взвешенных ближайших соседей, парзеновского окна, потенциальных функций… и осознаём, что снова пришли к линейному классификатору. Отбор эталонных объектов в ленивом обучении в некоторых задачах позволяет радикально уменьшить объём хранимых данных, а, если повезёт, то и улучшить качество классификации. Идея, что схожим объектам должны соответствовать схожие ответы, в регрессии приводит к непараметрическим методам типа ядерного сглаживания. Выводы на удивление те же, что и для классификации: подбор ширины окна принципиально важен для оптимизации качества модели, а выбор ядра сглаживания отвечает лишь за её гладкость. В конце рассматривается проблема обнаружения и отсева выбросов.
Снова линейный классификатор. Принцип максимума ширины зазора между классами приводит к выпуклой задаче квадратичного программирования, которая имеет массу замечательных свойств. Во-первых, её решение единственно. Во-вторых, оно зависит не от всей выборки, а только от горстки объектов на границе между классами, которые и называются опорными векторами. В-третьих, заменяя скалярное произведение между объектами (не совсем) произвольной функцией от пары объектов, можно из линейной модели классификации получить нелинейную. Это один из самых красивых математических трюков во всём машинном обучении. Наконец, заменяя общепринятую L2 регуляризацию более экзотическими регуляризаторами, можно наделить SVM свойством отбора признаков. Интересный общий вывод: в линейных моделях негладкость функции потерь приводит к отбору объектов.
Классический способ обучения линейной модели регрессии – это метод наименьших квадратов. Сингулярное разложение матрицы признаковых описаний объектов позволяет изящно записать классическое решение МНК. Мультиколлинеарность или скрытые линейные зависимости между признаками приводит к неустойчивости решения и переобучению. Гребневая регрессия с помощью L2-регуляризации делает решение немного смещённым, но намного более устойчивым. Сингулярное разложение и в этом случае позволяет записать решение. Более того, оно позволяет эффективно оптимизировать параметр регуляризации. Метод LASSO или L1-регуляризация решает проблему мультиколлинеарности по-другому – отбрасывая лишние признаки. Третье решение – линейный переход от большого числа исходных признаков к малому числу новых признаков, но так, чтобы исходные по новым можно было восстановить как можно точнее. Это приводит к методу главных компонент, который оказывается обобщением всё того же сингулярного разложения.
Что делать, если модель регрессии не линейная или функция потерь не квадратичная? Общий рецепт такой: применение метода Ньютона-Рафсона приводит к итерационному процессу, на каждом шаге которого решается задача линейной регрессии. Смысл её сводится к тому, чтобы поточнее настроиться на тех объектах, на которых модель в текущем её приближении работает недостаточно хорошо. В этот общий сценарий неплохо вписывается серия важных частных случаев. Нелинейная регрессия с квадратичной функцией потерь. Логистическая регрессия. Обобщённая линейная модель (GLM), в которой прогнозируемая величина описывается экспоненциальным семейством распределений. Логистическая регрессия является частным случаем GLM, и, благодаря этому факту, мы теперь понимаем, почему вероятность классов выражается через сигмоиду от дискриминантной функции. В конце немного про неквадратичные функции потерь: метод наименьших модулей, квантильная регрессия, робастная регрессия и SVM-регрессия.
Прогнозирование временных рядов – это специальный случай задачи регрессии, в которой объекты выборки линейно упорядочены по времени. Обучающая выборка находится в прошлом, тестовая – в будущем. В простых задачах из области эконометрики поведение временного ряда складывается из медленно меняющегося тренда, сезонной квазипериодичности и различных календарных эффектов. В этих случаях неплохо работают адаптивные методы краткосрочного прогнозирования. Они основаны на рекуррентных формулах, которые выводятся методом наименьших квадратов. Если модель временного ряда не известна, а временных рядов много, используются методы адаптивной селекции и адаптивного комбинирования моделей. Их точности вполне хватает для решения многих практических задач, а неоспоримым преимуществом является вычислительная эффективность.
Лекция состоит из двух слабо связанных частей. В первой части рассматриваются критерии качества классификации, от простейшего «числа ошибок» до правдоподобия, AUC и PR-AUC. Каждый из них имеет свои границы применимости и противопоказания. От них мы переходим к критериям, характеризующим обобщающую способность моделей. От скользящего контроля до разного рода штрафов за сложность модели: AIC, BIC, VC-bound и прочие. Во второй части рассматривается задача отбора признаков, имеющая экспоненциальную вычислительную сложность, и эвристические методы сокращения полного перебора. Жадные алгоритмы. Поиск в глубину и в ширину. Эволюционные алгоритмы. Случайный поиск с адаптацией.
Логическая закономерность в задаче классификации – это предикат с простой интерпретируемой формулой, выделяющий много объектов одного класса и мало объектов всех остальных классов. Самый распространённый вид предикатов – конъюнкции небольшого числа пороговых условий на признаки. Алгоритмы поиска информативных конъюнкций очень похожи на алгоритмы отбора признаков из предыдущей лекции. Специальный вариант – методы индукции решающих деревьев. Недостаток деревьев в том, что они не устойчивы к составу обучающей выборки и ошибкам в данных. Справиться с переобучением деревьев помогает процедура усечения (pruning) либо ансамблирование – разного рода решающие леса, в том числе очень известный метод случайного леса.
Специальный случай поиска логических закономерностей в форме правил «если выполняется конъюнкция признаков X, то выполняется также конъюнкция признаков Y». Это обучение без учителя, поскольку целевой признак-класс изначально не задан для объектов. Задача пришла из анализа рыночных корзин в конце 90х годов, но быстро нашла массу применений в других областях. Есть простой классический алгоритм APriori, но на больших данных он не эффективен. Большая часть лекции посвящена алгоритму FP-growth, основанному на построении очень эффективной структуры данных – префиксного дерева, позволяющего сохранить в оперативной памяти полную информацию о всех часто встречающихся наборах признаков за один линейный проход по всем объектам выборки.
Восстановление плотности распределения по выборке – важный класс задач машинного обучения. В частности, к ним сводится построение байесовского классификатора. Рассматриваются три подхода к восстановлению плотности. Самый простой – непараметрический, это оценка плотности Парзена-Розенблатта. Классическим считается параметрический подход, и мы рассматриваем его подробно на примере восстановления плотности многомерного нормального распределения. Третий подход – восстановление смеси вероятностных распределений. Познакомимся с ЕМ-алгоритмом в общем виде и в одном частном случае, когда компонентами смеси являются сферические гауссианы. В байесовском классификаторе это приводит к конструкции, одновременно похожей на метод потенциальных функций, SVM с гауссовским ядром и двухслойную нейронную сеть с радиальными базисными функциями.
Задача кластеризации – это обучение без учителя. Требуется разбить конечное множество объектов на кластеры по их взаимной близости. Если для части объектов, обычно очень небольшой, классификации всё же известны, то это задача с частичным обучением. Самый известный метод кластеризации – k-средних, если внимательно присмотреться, является сильно упрощённым вариантом ЕМ-алгоритма для разделения смеси сферических гауссиан. Метод DBSCAN более удобен в тех задачах, где нельзя делать предположение о сферичности кластеров. Если требуется иерархически объединять мелкие кластеры в более крупные, используется алгоритм Ланса-Уильямса. Все методы кластеризации очень легко приспосабливаются для частичного обучения. Есть и противоположный подход – приспосабливать методы классификации с учителем. Кроме простых эвристических методов, существует трансдуктивный SVM и различные подходы на основе регуляризаторов.
Любую непрерывную функцию можно приблизить многослойной нейронной сетью с любой заданной точностью. Теоретически, двух слоёв для этого достаточно. На практике для обучения искусственных нейронных сетей чаще всего используется метод BackPropagation – обратное распространение ошибок. Он позволяет эффективно вычислять градиент функции потерь по вектору параметров сети. Чтобы этот метод действительно работал, приходится использовать совокупность эвристик для ускорения сходимости, выбора начального приближения, градиентного шага и регуляризации. Методы разреживания сети позволяют радикально сокращать число нейронов и связей.
Современный бум искусственных нейронных сетей обязан своим появлением конкурсу по классификации изображений ImageNet. Свёрточные нейронные сети осуществили прорыв в компьютерном зрении, впервые обеспечив высокое качество распознавания при обучении по большим данным. Свёрточные слои осуществляют обучаемое преобразование сырого представления объекта в векторное представление фиксированной размерности, с которым далее работает полносвязная сеть, как правило, из небольшого числа слоёв. Для обработки сигналов и текстов используются рекуррентные нейронные сети, для которых есть свой вариант метода BackPropagation. Одна из самых известных рекуррентных сетей – LSTM, а также её упрощённый вариант GRU. Вкратце рассматриваются важнейшие нейросетевые техники – автокодировщики, перенос обучения, самостоятельное обучение, генеративные состязательные сети.
Композиционные методы машинного обучения дают положительный конструктивный ответ на вопрос, возможно ли из большого числа ненадёжных алгоритмов построить один надёжный. Алгоритм AdaBoost строит последовательность алгоритмов так, чтобы каждый следующий стремился исправлять ошибки предыдущих. В AdaBoost используется экспоненциальная аппроксимация пороговой функции потерь и дискретно-значные базовые классификаторы. Градиентный бустинг обобщает эту идею и позволяет использовать произвольную функцию потерь и вещественно-значные базовые алгоритмы. С помощью градиентного бустинга можно решать задачи регрессии и ранжирования. Алгоритмы MatrixNet и CatBoost, разработанные в Яндексе, представляют собой градиентный бустинг над решающими деревьями специального вида.
Бэггинг похож на бустинг, но использует простое голосование вместо взвешенного, бутстрепинг объектов обучающей выборки вместо их перевзвешивания, независимое параллельное построение базовых алгоритмов вместо строго последовательного. По критерию качества бустинг, бэггинг и случайные леса, как правило, сопоставимы. Во многих приложениях базовые алгоритмы проще обучать на отдельных частях признакового пространства, называемых областями компетенции. Такие методы похожи на восстановление смеси распределений и используют ЕМ-подобные алгоритмы для поочерёдной оптимизации базовых алгоритмов и их областей компетенции.
Задача ранжирования отличается от классификации и регрессии тем, что вместо правильных ответов на объектах обучающей выборке задаётся отношение частичного порядка. Модель ранжирования – это функция от объекта (как и в задаче регрессии), с помощью которой можно отранжировать произвольное множество объектов. Задачи ранжирования решаются в информационно-поисковых, рекламных и рекомендательных системах. Критерии качества ранжирования весьма разнообразны, наиболее важные из них рассматриваются в лекции. Методы обучения ранжированию делятся на три большие группы: поточеченые, попарные и списочные. Поточечные являются незначительными модификациями методов классификации или регрессии. Попарные оптимизируют критерии, представляющие собой сумму по парам объектов, а не по отдельным объектам. Для оптимизации часто используется метод стохастического градиента. Списочные методы приближённо оптимизируют качество ранжирования в списках поисковой выдачи.
Имеются транзакционные данные о предпочтениях объектов клиентами. Требуется для заданного клиента спрогнозировать, какие объекты для него наиболее предпочтительны. Простые и уже устаревшие методы коллаборативной фильтрации основаны на поиске схожих клиентов, которые предпочитают схожие множества объектов. Более современные методы основаны на поиске латентных векторов интересов клиентов и объектов. Для этого используются методы матричных разложений. Качество рекомендаций измеряется многими критериями: это не только точность предсказания известных предпочтений, но и разнообразие, новизна, покрытие, догадливость. Кроме того, рекомендательная система должна обеспечивать адекватность рекомендаций даже в условиях «холодного старта», когда по объекту или по клиенту не хватает информации о предпочтениях.
Имеется коллекция текстовых документов. Требуется выявить тематическую кластерную структуру коллекции и оценить, к каким темам относится каждый документ, и какими словами описывается каждая тема. Как и в рекомендательных системах, задача сводится к построению низкорангового неотрицательного матричного разложения. Данная задача является многокритериальной и некорректно поставленной, поскольку имеет бесконечное множество решений. Для нахождения устойчивого решения вводятся дополнительные критерии-регуляризаторы и используется регуляризованный ЕМ-алгоритм. В лекции рассматриваются регуляризаторы для учёта дополнительной информации, ограничений и требований к тематической модели.
Процесс обучения представляется в виде игры агента со средой, в которой агент совершает действия, среда в ответ даёт премии, и агент должен корректировать свою стратегию принятия решений таким образом, чтобы максимизировать суммарную будущую премию. Задача имеет черты классификации и прогнозирования. В простейшем случае это задача выбора действия по накопленной статистике премий, называемая задачей о многоруком бандите. В более сложном случае на каждом шаге известно, в каком из состояний находится среда. Если состояние среды описывается вектором признаков, то для принятия решений возможно приспособить инкрементные методы классификации, а для оптимизации стратегии агента применять градиентные методы. Во всех случаях основным вопросом обучения с подкреплением остаётся компромисс «exploration-exploitation» между изучающими действиями и действиями, непосредственно нацеленными на получение премий.
Активное обучение используется в тех случаях, когда получение ответа от учителя стоит дорого, но есть возможность выбирать, какой объект предъявить учителю следующим. Активное обучение позволяет сокращать объём обучающей выборки по сравнению с пассивным случайным выбором. Для сэмплирования объектов используются различные стратегии: по неуверенности, по ожидаемому изменению модели, по ожидаемому сокращению ошибки, по уменьшению дисперсии параметров модели. Как и в обучении с подкреплением, здесь также имеется компромисс «exploration-exploitation» и методы для введения изучающих действий.
В заключительной лекции даётся беглый обзор курса, выделяются многочисленные сходства и взаимосвязи между различными методами машинного обучения, обсуждаются идеи разнообразных гибридных подходов.
Курс по машинному обучению на Coursera от Яндекса и ВШЭ
Когда-то мы публиковали на Хабре курс по машинному обучению от Константина Воронцова из Школы анализа данных. Нам тогда предлагали сделать из этого полноценный курс с домашними заданиями и разместить его на Курсере.
И сегодня мы хотим сказать, что наконец можем выполнить все эти пожелания. В январе на Курсере пройдёт курс, организованный совместно Яндексом (Школой анализа данных) и ВШЭ. Записаться на него можно уже сейчас: www.coursera.org/learn/introduction-machine-learning.
Сооснователь Coursera Дафна Коллер в офисе Яндекса
Курс продлится семь недель. Это означает, что по сравнению с ШАДовским двухсеместровым курсом он будет заметно упрощен. Однако в эти семь недель мы попытались вместить только то, что точно пригодится на практике, и какие-то базовые вещи, которые нельзя не знать. В итоге получился идеальный русскоязычный курс для первого знакомства с машинным обучением.
Кроме того, мы верим, что после прохождения курса у человека должна остаться не только теория в голове, но и скилл «в пальцах». Поэтому все практические задания построены вокруг использования библиотеки scikit-learn (Python). Получается, что после прохождения нашего курса человек сможет сам решать задачи анализа данных, и ему будет проще развиваться дальше.
Под катом можно прочитать подробнее обо всех авторах курса и узнать его примерное содержание.
О преподавателях
Лектор курса – Константин Воронцов. Константин Вячеславович много лет преподает основы машинного обучения студентам ШАД, Вышки, МФТИ и МГУ.
Практическую часть курса подготовили Петр Ромов, Анна Козлова и Евгений Соколов, который также читает несколько лекций. Все трое работают в Яндексе (Женя и Петя в Yandex Data Factory, Аня — в отделе машинного перевода) и применяют машинное обучение в своей ежедневной деятельности. Ребята в курсе происходящего в области анализа данных и постарались подготовить задания так, чтобы их выполнение принесло максимальную пользу слушателям курса.
Программа
Это описание модулей курса в том виде, в котором оно откроется на «Курсере» одновременно со стартом курса.
1. Знакомство с анализом данных и машинным обучением.
В этом модуле мы расскажем о задачах, которые решает машинное обучение, определим базовый набор понятий и введем необходимые обозначения. Также мы расскажем про основные библиотеки языка Python для работы с данными (NumPy, Pandas, Scikit-Learn), которые понадобятся для выполнения практических заданий на протяжении всего курса.
2. Логические методы классификации.
Логические методы делают классификацию объектов на основе простых правил, благодаря чему являются интерпретируемыми и легкими в реализации. При объединении в композицию логические модели позволяют решать многие задачи с высоким качеством. В этом модуле мы изучим основной класс логических алгоритмов — решающие деревья. Также мы поговорим про объединение деревьев в композицию, называемую случайным лесом.
3. Метрические методы классификации.
Метрические методы проводят классификацию на основе сходства, благодаря чему могут работать на данных со сложной структурой — главное, чтобы между объектами можно было измерить расстояние. Мы изучим метод k ближайших соседей, а также способ его обобщения на задачи регрессии с помощью ядерного сглаживания.
4. Линейные методы классификации.
Линейные модели — один из наиболее изученных классов алгоритмов в машинном обучении. Они легко масштабируются и широко применяются для работы с большими данными. В этом модуле мы изучим метод стохастического градиента для настойки линейных классификаторов, познакомимся с регуляризацией и обсудим некоторые тонкости работы с линейными методами.
5. Метод опорных векторов и логистическая регрессия.
Линейные методы имеют несколько очень важных подвидов, о которых пойдет речь в этом модуле. Метод опорных векторов максимизирует отступы объектов, что тесно связано с минимизацией вероятности переобучения. При этом он позволяет очень легко перейти к построению нелинейной разделяющей поверхности благодаря ядровому переходу. Логистическая регрессия позволяет оценивать вероятности принадлежности классам, что оказывается полезным во многих прикладных задачах.
6. Метрики качества классификации.
В машинном обучении существует большое количество метрик качества, каждая из которых имеет свою прикладную интерпретацию и направлена на измерение конкретного свойства решения. В этом модуле мы обсудим, какие бывают метрики качества бинарной и многоклассовой классификации, а также рассмотрим способы сведения многоклассовых задач к двухклассовым.
7. Линейная регрессия.
В этом модуле мы изучим линейные модели для регрессии и обсудим их связь с сингулярным разложением матрицы «объекты-признаки».
8. Понижение размерности и метод главных компонент.
В прикладных задачах часто возникает потребность в уменьшении количества признаков — например, для ускорения работы моделей. В этом модуле мы обсудим подходы к отбору признаков, а также изучим метод главных компонент, один из самых популярных методов понижения размерности.
9. Композиции алгоритмов.
Объединение большого числа моделей в композицию может значительно улучшить итоговое качество за счет того, что отдельные модели будут исправлять ошибки друг друга. В этом модуле мы обсудим основные понятия и постановки задач, связанные с композициями, и обсудим один из наиболее распространенных способов их построения — градиентный бустинг.
10. Нейронные сети.
Нейронные сети позволяют находить сложные нелинейные разделяющие поверхности, благодаря чему широко используются в таких трудных задачах, как распознавание изображений и речи. В этом модуле мы изучим многослойные нейронные сети и их настройку с помощью метода обратного распространения ошибки. Также мы поговорим о глубоких нейросетях, их архитектурах и особенностях.
11. Кластеризация и визуализация.
Этот модуль посвящен новому классу задач в машинном обучении — обучению без учителя. Под этим понимаются ситуации, в которых нужно найти структуру в данных или произвести их «разведку». В этом модуле мы обсудим две таких задачи: кластеризацию (поиск групп схожих объектов) и визуализацию (отображение объектов в двух- или трехмерное пространство).
12. Частичное обучение.
Под частичным обучение понимается задача, находящаяся между обучением с учителем и кластеризацией: дана выборка, в которой значение целевой переменной известно лишь для части объектов. Такие ситуации встречаются, когда разметка объектов является дорогой операцией, но при этом достаточно дешево можно подсчитать признаки для объектов. В этом модуле мы обсудим отличия частичного обучения от рассмотренных ранее постановок, и разберем несколько подходов к решению.
13. Машинное обучение в прикладных задачах
В этом модуле мы подведем итоги курса, вспомним основные этапы решения задачи анализа данных. Также мы разберем несколько задач из прикладных областей, чтобы подготовиться к выполнению финального проекта.
Машинное обучение 1
Содержание
О курсе
Курс читается для студентов 3-го курса ПМИ ФКН ВШЭ в 1-2 модулях.
Проводится с 2016 года.
Полезные ссылки
Почта для сдачи домашних заданий (на самом деле задания сдаются в AnyTask, но если он не работает, то присылайте на почту): hse.cs.ml+ @gmail.com (например, hse.cs.ml+171@gmail.com)
Чат в telegram для обсуждений (предназначение чата до конца не ясно, вопросы может быть правильнее задавать в чатах групп): https://t.me/joinchat/NRpKJ09prtRlMTli
Оставить отзыв на курс: форма
Вопросы по курсу можно задавать в телеграм лектору (esokolov@) или семинаристу. Вопросы по материалам лекций/семинаров и по заданиям лучше всего задавать на форуме.
Семинары
Группа | Преподаватель |
---|---|
191 (МОП) | Хрушков Павел Вадимович |
192 (МОП) | Соколов Евгений Андреевич |
193 (МОП) | Садртдинов Ильдус Рустемович |
194 (АДИС) | Цвигун Аким Олегович |
195 (РС) | Каюмов Эмиль Марселевич |
196 (РС) | Шабалин Александр Михайлович |
197 (АПР) | Глазкова Екатерина Васильевна |
198 (ТИ) | Ульянкин Филипп @ppilif |
199 (МИ) | Семенкин Антон Александрович |
1910 (ПР) | Биршерт Алексей Дмитриевич |
ФЭН | Зехов Матвей Сергеевич |
Пермь (БИ) | Собянин Кирилл Валентинович |
Пермь (ПИ) | Собянин Кирилл Валентинович |
Консультации
Правила выставления оценок
В курсе предусмотрено несколько форм контроля знания:
Итоговая оценка вычисляется на основе оценки за работу в семестре и оценки за экзамен:
Итог = Округление(0.15 * ПР + 0.4 * ДЗ + 0.15 * КР + 0.3 * Э)
ПР — средняя оценка за самостоятельные работы на семинарах
ДЗ — средняя оценка за практические домашние работы на Python
КР — оценка за контрольную работу
Э — оценка за экзамен
Правила сдачи заданий
За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются. Даже при опоздании на одну секунду. Сдавайте заранее. Есть исключение: в течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна — в этом случае за каждый день просрочки продолжает вычитаться по одному баллу (если не оговорено иное).
При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента.
При наличии уважительной причины пропущенную проверочную можно написать позднее, а дедлайн по домашнему заданию может быть перенесён. Дедлайн по домашнему заданию переносится на количество дней, равное продолжительности уважительной причины. Решение о том, является ли причина уважительной, принимает исключительно учебный офис.
Лекции
Ко всем конспектам на GitHub есть исходники. Исправления и дополнения всячески приветствуются!
Лекция 1 (3 сентября). Введение в машинное обучение. Основные термины, постановки задач и примеры применения. [Конспект] [Запись лекции]
Лекция 2 (10 сентября). Модель линейной регрессии. Подготовка данных для линейных моделей. Измерение ошибки в задачах регрессии. Устойчивые к выбросам функции потерь. Относительные функции потерь. [Конспект] [Запись лекции]
Лекция 3 (17 сентября). Переобучение. Отложенная выборка и кросс-валидация. Аналитическое решение для линейной регрессии и MSE. Градиентный спуск. [Конспект] [Запись лекции]
Лекция 4 (24 сентября). Стохастический градиентный спуск. SAG, Momentum, AdaGrad, Adam. Регуляризация линейных моделей. [Конспект] [Запись лекции]
Лекция 5 (1 октября). Разреженные линейные модели. Линейные классификаторы. Обучение линейных классификаторов через верхние оценки на пороговую функцию потерь. [Конспект] [Запись лекции]
Лекция 6 (8 октября). Метрики качества классификации. Доля верных ответов. Точность, полнота, F-мера и другие способы усреднения. ROC-кривая и PR-кривая, площади под ними. [Конспект] [Запись лекции]
Лекция 7 (15 октября). Оценивание вероятностей. Логистическая регрессия. [Конспект] [Запись лекции]
Лекция 8 (29 октября). Метод опорных векторов. Многоклассовая классификация. Метрики качества многоклассовой классификации. [Конспект по SVM] [Конспект по многоклассовой классификации] [Запись лекции]
Лекция 9 (5 ноября). Решающие деревья. Жадный алгоритм обучения дерева. Функционалы качества предикатов. Связь решающих деревьев и линейных моделей. Разложение ошибки на смещение и разброс. [Конспект по деревьям] [Конспект по BVD] [Запись лекции]
Лекция 10 (12 ноября). Бэггинг и случайные леса. Out-of-bag оценка. Градиентный бустинг. [Конспект по бэггингу и RF] [Конспект по бустингу] [Запись лекции]
Семинары
Семинар 1. Типы данных и виды задач машинного обучения [Ноутбук]. Библиотека pandas [Ноутбук].
Семинар 2. Исследование данных. Библиотека scikit-learn. Подготовка данных для линейных моделей. [Ноутбук]
Семинар 4. Обработка данных. Работа с категориальными и текстовыми данными. Mean-target encoding. [Конспект] [Ноутбук]
Семинар 5. Метрики качества классификации. [Конспект]
Семинар 6. Оценивание вероятностей классов. Калибровка вероятностей. Квантильная регрессия. [Конспект] [Ноутбук]
Семинар 7. Решающие деревья. Критерии информативности. [Конспект] [Ноутбук]
Семинар 8. Разложение ошибки на смещение и разброс. [Конспект]
Семинар 9. Почему градиентный бустинг так устроен? [Конспект] [Ноутбук]
Практические задания
Задание 1. Pandas и распределение студентов ПМИ по элективам.
Мягкий дедлайн: 25.09.2021 23:59 MSK.
Жесткий дедлайн: 28.09.2021 23:59 MSK.
Задание 2. Разведочный анализ данных, линейная регрессия и разработка признаков.
Мягкий дедлайн: 11.10.2021 23:59 MSK.
Жесткий дедлайн: 14.10.2021 23:59 MSK.
Задание 3. Градиентный спуск своими руками.
Мягкий дедлайн: 27.10.2021 23:59 MSK.
Жесткий дедлайн: 29.10.2021 23:59 MSK.
Задание 4. Классификация.
Мягкий дедлайн: 10.11.2021 23:59 MSK.
Жесткий дедлайн: 13.11.2021 23:59 MSK.
Задание 5. Решающие деревья.
Мягий дедлайн: 23.11.2021 23:59 MSK.
Жестокий дедлайн: 26.11.2021 23:59 MSK.
Теоретические домашние задания
Теоретические ДЗ не проверяются, но задачи из них могут войти в проверочные работы на семинарах.
Соревнования
Правила участия и оценивания
В соревновании по анализу данных вам предлагается по имеющимся данным решить некоторую задачу, оптимизируя указанную метрику, и отправить ответы для заданного тестового множества. Максимальное количество посылок в сутки ограничено (как правило, разрешается сделать 2 посылки), ближе к концу соревнования вам будем необходимо выбрать 2 посылки, которые вы считаете лучшими. Тестовые данные делятся на публичные и приватные в некотором соотношении, на основе которых строятся публичный и приватный лидерборды соответственно, при этом публичный лидерборд доступен в течение всего соревнования, а приватный строится после его окончания для выбранных вами посылок.
В лидербордах каждого из соревнований присутствуют несколько базовых решений (бейзлайнов), каждое из которых соответствует определённой оценке. Например, для получения оценки не ниже 8 баллов необходимо, чтобы ваше решение на приватном лидерборде оказалось лучше соответствующего бейзлайна. Далее для студента, преодолевшего бейзлайн на N_1 баллов, но не преодолевшего бейзлайн на N_2 балла, итоговая оценка за соревнование рассчитывается по равномерной сетке среди всех таких студентов в зависимости от места в приватном лидерборде среди них; если быть точными, то по следующей формуле:
где M — количество студентов (из всех студентов, изучающих курс), преодолевших бейзлайн на N_1 баллов, но не преодолевших бейзлайн на N_2 балла;
i — место (начиная с 1) студента в приватном лидерборде среди всех таких студентов.
Единственное исключение из формулы — студенты, преодолевшие самый сильный бейзлайн, получают прибавку 1/M к своей оценке.
Чтобы вас не пропустили при проверке решений соревнования, необходимо использовать следующий формат для имени команды (вкладка Team):
«[ПМИ] Имя Фамилия номер_группы»
В течение 3 суток после окончания соревнования в соответствующее задание на anytask необходимо прислать код, воспроизводящий ответы для посылки, фигурирующей в приватном лидерборде. При оформлении кода предполагайте, что данные лежат рядом с ним в папке data, а в результате выполнения кода ответы должны быть записаны в файл solution-N-Username.csv, где N — номер соревнования, Username — ваша фамилия. У нас должна быть возможность запустить код и получить те же ответы, что и в вашей посылке, — в частности, это означает, что:
1. Если вы отправляете файл *.py, мы будем запускать его при помощи команды python *.py в вышеуказанном предположении о местонахождении данных.
2. Если вы отправляете ноутбук *.ipynb, мы последовательно запустим все ячейки ноутбука и будем ожидать в результате его работы формирование файла с ответами.
3. Если вы отправляете код с использованием другого языка программирования, в том же письме направьте нам инструкцию по его запуску с тем, чтобы получить тот же файл с ответами.
В случае отсутствия кода, воспроизводящего результат, в установленный срок студенту выставляется 0 в качестве оценки за соревнование. Студенты, попавшие в топ-3 согласно приватному лидерборду, смогут получить бонусные баллы, если в течение недели после окончания соревнования сдадут в anytask отчет о получении решения, фигурирующего в приватном лидерборде. Если не оговорено иное, использовать любые внешние данные в соревнованиях запрещено. Под внешними данными понимаются размеченные данные, где разметка имеет прямое отношение к решаемой задаче. Грубо говоря, сборник текстов с википедии не считается внешними данными.
В некоторых соревнованиях данные взяты из завершившегося соревнования на Kaggle. Категорически запрещено использовать данные из оригинального соревнования для восстановления целевой переменной на тестовой выборке.
Соревнование 1
Задача: выявление мошеннических тразнакций
Это соревнование на бонусные баллы, оно не является обязательным.
Дедлайн: 13.12.2021 23:59MSK
В задании всего один бейзлайн (lightgbm), ненулевые баллы получают решения, преодолевшие его на приватном лидерборде. Все решения выше этого бейзлайна оцениваются по равномерной шкале от 0 до 5.
Обратите внимание на раздел Baselines на Kaggle — там можно найти много полезного.
Бонусы за соревнования
За успешное участие в соревнованиях по анализу данных могут быть выставлены бонусные баллы, которые можно прибавить к оценке за любое практическое или теоретическое домашнее задание, а также за самостоятельную работу. Под успешным участием понимается попадание в топ-10% мест; если соревнование особо сложное и крупное, может рассматриваться и попадание в топ-20% мест. Конкретное число баллов определяется преподавателями и зависит от сложности соревнования и занятого места. За одно соревнование можно получить не более 5 баллов. Для получения оценки необходимо предоставить краткий отчёт о решении задачи.
Контрольная работа
Контрольная работа состоится 3 декабря на лекции. Продолжительность — 80 минут. Проходит в zoom, студенты должны будут писать работу с включенным камерами и расшаренным экраном. На фотографирование и сдачу листочков дополнительно даётся 5 минут.