Машинное обучение 1/2023 2024

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

О курсе

borderless

Курс читается для студентов 3-го курса ПМИ ФКН ВШЭ в 1-2 модулях.

Проводится с 2016 года.

Лектор: Соколов Евгений Андреевич

Лекции проходят по пятницам, 12:10 - 13:30, ауд. 317.




Полезные ссылки

Карточка курса и программа

Репозиторий с материалами на GitHub

Почта для сдачи домашних заданий (на самом деле задания сдаются в AnyTask, но если он не работает, то присылайте на почту): hse.cs.ml+<номер группы>@gmail.com (например, hse.cs.ml+161@gmail.com)

Канал в telegram для объявлений: https://t.me/joinchat/AAAAAEprV-8gsyFBkYbvkg

Чат в telegram для обсуждений: https://t.me/joinchat/A5rlQE2eFY0LN0AWcGH3qA

Ссылка на курс в Anytask: https://anytask.org/course/390

Таблица с оценками

Оставить отзыв на курс: форма

Вопросы по курсу можно задавать на почту курса, а также в телеграм лектору (esokolov@) или семинаристу. Вопросы по материалам лекций/семинаров и по заданиям лучше всего оформлять в виде Issue в github-репозитории курса.

Семинары

Группа Преподаватель Учебный ассистент Страница Расписание
161 (МОП) Зиннурова Эльвира Альбертовна Рябинин Максим пятница, 10:30 - 11:50, ауд. 503
162 (МОП) Неклюдов Кирилл Олегович Хрушков Павел
163 (АДИС) Кохтев Вадим Михайлович Маркович Александр пятница, 10:30 - 11:50, ауд. 400
164 (АДИС) Атанов Андрей Игоревич Свитанько Лиза
165 (РС) Каюмов Эмиль Марселевич Попов Никита вторник, 9:00 – 10:20, ауд. 311
166 (РС) Яшков Даниил Дмитриевич Хайдуров Руслан
Магистратура ФТиАД Чиркова Надежда Александровна Багиян Нерсес

Консультации

Правила выставления оценок

В курсе предусмотрено несколько форм контроля знания:

  • Самостоятельные работы на семинарах, проверяющие знание основных фактов с лекций
  • Практические домашние работы на Python
  • Контрольная работа
  • Письменный экзамен

Итоговая оценка вычисляется на основе оценки за работу в семестре и оценки за экзамен:

Oитоговая = 0.7 * Oнакопленная + 0.3 * Оэкз

Оценка за работу в семестре вычисляется по формуле

Oнакопленная = 0.2 * Oсамостоятельные + 0.6 * Опрактические дз + 0.2 * Оконтрольная

Оценка за самостоятельную работу вычисляется как среднее по всем самостоятельным, оценка за домашнюю работу — как среднее по всем практическим заданиям и соревнованиям.

Накопленная, экзаменационная и итоговая оценки округляются арифметически.

Правила сдачи заданий

За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются.

При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента.

При наличии уважительной причины пропущенную проверочную можно написать позднее, а дедлайн по домашнему заданию может быть перенесён (при этом получить дополнительные баллы за призовые места на конкурсе можно только при участии в общий срок). Дедлайн по домашнему заданию переносится на количество дней, равное продолжительности уважительной причины. Решение о том, является ли причина уважительной, принимает исключительно учебный офис.

Лекции

Лекция 1 (3 сентября). Введение в машинное обучение. Основные термины, постановки задач и примеры применения. [Конспект]

Лекция 2 (14 сентября). Линейная регрессия. Метрики качества регрессии. Градиентный спуск и способы оценивания градиента. Продвинутые градиентные методы. [Конспект]

Лекция 3 (21 сентября). Переобучение и регуляризация. Разреженные линейные модели. Квантильная регрессия. Подготовка признаков. [Конспект]

Лекция 4 (28 сентября). Линейная классификация. Отступ и верхние оценки на пороговую функцию потерь. Метрики качества классификации. [Конспект]

Лекция 5 (1 октября). Линейная классификация. Логистическая регрессия и оценки вероятности классов. Метод опорных векторов. [Конспект]

Лекция 6 (12 октября). Многоклассовая классификация, сведение к бинарным задачам. Многоклассовая логистическая регрессия. Классификация с пересекающимися классами. Метрики качества многоклассовой классификации. Категориальные признаки: хэширование и счётчики. [Конспект]

Лекция 7 (19 октября). Решающие деревья. Жадный алгоритм построения. Выбор лучшего разбиения с помощью критерия информативности. Критерии информативности для регрессии и классификации. Учёт пропусков в деревьях. Решающие деревья и категориальные признаки. [Конспект]

Лекция 8 (2 ноября). Бутстрап и бэггинг. Разложение ошибки на смещение и разброс (bias-variance decomposition). Случайный лес. Вычисление расстояний с помощью лесов. [Конспект]

Лекция 9 (16 ноября). Градиентный бустинг. Регуляризация. Особенности бустинга над деревьями. Взвешивание объектов в градиентном бустинге. [Конспект]

Лекция 10 (23 ноября). Оптимизация второго порядка в градиентном бустинге. Регуляризация деревьев. XGBoost. Стекинг.

Лекция 11 (30 ноября). Графы вычислений, их обучение и метод обратного распространения ошибки. Полносвязные, свёрточные и рекуррентные слои. Возможности аппроксимации.

Лекция 12 (7 ноября). Обучение без учителя. Кластеризация: метрики качества, K-Means, иерархический и графовый подходы. Визуализация, t-SNE. Обучение представлений. word2vec.

Лекция 13 (14 декабря). Метод главных компонент, его связь с матричными разложениями. Рекомендательные системы: постановка задачи, коллаборативные методы, матричные разложения, контентные методы.

Семинары

Семинар 1. Ноутбук.

Семинар 2. Ноутбук.

Семинар 3. Конспект, ноутбук.

Семинар 4. Конспект.

Семинар 5. Конспект.

Семинар 6. Конспект, ноутбук.

Семинар 7. Ноутбук.

Семинар 8. Конспект.

Практические задания

За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются. В течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна.

Задание 1. Работа с Pandas и Matplotlib.

Мягкий дедлайн: 07:59 15.09.2018.

Жесткий дедлайн: 23:59 16.09.2018.

Github.

Задание 2. Numpy. Линейная регрессия.

Дата выдачи: 17.09.2018

Мягкий дедлайн: 2:59MSK 24.09.2018

Жесткий дедлайн: 23:59MSK 26.09.2018.

Условие, архив с шаблонами, соревнование в Яндекс.Контесте, альтернативная ссылка на соревнование в Яндекс.Контесте.

Задание 3. Регуляризация. Градиентный спуск.

Дата выдачи: 22.09.2018

Мягкий дедлайн: 7:59MSK 02.10.2018

Жесткий дедлайн: 23:59MSK 03.10.2018.

Условие, данные, соревнование в Яндекс.Контесте, альтернативная ссылка на соревнование в Яндекс.Контесте.

Задание 4. Калибровка вероятностей, обработка категориальных признаков.

Дата выдачи: 12.10.2018

Мягкий дедлайн: 7:59MSK 20.10.2018

Жесткий дедлайн: 23:59MSK 21.10.2018.

Условие


Задание 5. Решающие деревья.

Дата выдачи: 08.11.2018

Мягкий дедлайн: 7:59MSK 18.11.2018

Жесткий дедлайн: 23:59MSK 19.11.2018.

Условие

Задание 6. Разложение ошибки на смещение и разброс.

Дата выдачи: 20.11.2018

Мягкий дедлайн: 6:00MSK 27.11.2018

Жесткий дедлайн: 23:59MSK 29.11.2018

Условие

Соревнования

Правила участия и оценивания

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

В лидербордах каждого из соревнований присутствуют несколько базовых решений (бейзлайнов), каждое из которых соответствует определённой оценке. Например, для получения оценки не ниже 8 баллов необходимо, чтобы ваше решение на приватном лидерборде оказалось лучше соответствующего бейзлайна. Далее для студента, преодолевшего бейзлайн на N_1 баллов, но не преодолевшего бейзлайн на N_2 балла, итоговая оценка за соревнование рассчитывается по равномерной сетке среди всех таких студентов в зависимости от места в приватном лидерборде среди них; если быть точными, то по следующей формуле:

N_2 - (N_2 - N_1) * i / M,

где 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 в качестве оценки за соревнование. Студенты, попавшие в топ-5 согласно приватному лидерборду, смогут получить бонусные баллы, если в течение недели после окончания соревнования пришлют на почту курса отчет о получении решения, фигурирующего в приватном лидерборде. Если не оговорено иное, использовать любые внешние данные в соревнованиях запрещено.

Соревнование 1: House pricing

Дата выдачи: 15.09.2018

Срок окончания соревнования: 30.09.2018 23:59MSK

Срок отправки кода: 03.10.2018 23:59MSK

Бейзлайны: на 4 и на 8 баллов

Ссылка на участие в соревновании

Соревнование 2: Sentiment analysis

Дата выдачи: 15.10.2018

Срок окончания соревнования: 04.11.2018 23:59UTC

Бейзлайны: TBA

Ссылка на участие в соревновании

В данном соревновании оцениваются только решения, полученные как результат работы private kernel, к которому дан доступ для просмотра ассистенту вашей группы.

Теоретические домашние задания

Теоретическое домашнее задание 1: линейная регрессия [ссылка]

Теоретическое домашнее задание 2: линейная классификация [ссылка]

Теоретическое домашнее задание 3: решающие деревья [ссылка]

Теоретическое домашнее задание 4: разложение ошибки на смещение и разброс [ссылка]

Бонусы за соревнования

За успешное участие в соревнованиях по анализу данных могут быть выставлены бонусные баллы, которые можно прибавить к оценке за любое практическое или теоретическое домашнее задание, а также за самостоятельную работу. Под успешным участием понимается попадание в топ-10% мест; если соревнование особо сложное и крупное, может рассматриваться и попадание в топ-20% мест. Конкретное число баллов определяется преподавателями и зависит от сложности соревнования и занятого места. За одно соревнование можно получить не более 5 баллов. Для получения оценки необходимо предоставить краткий отчёт о решении задачи.

Контрольная работа

Экзамен

Полезные материалы

Книги

  • Hastie T., Tibshirani R, Friedman J. The Elements of Statistical Learning (2nd edition). Springer, 2009.
  • Bishop C. M. Pattern Recognition and Machine Learning. Springer, 2006.
  • Mohri M., Rostamizadeh A., Talwalkar A. Foundations of Machine Learning. MIT Press, 2012.
  • Murphy K. Machine Learning: A Probabilistic Perspective. MIT Press, 2012.
  • Mohammed J. Zaki, Wagner Meira Jr. Data Mining and Analysis. Fundamental Concepts and Algorithms. Cambridge University Press, 2014.
  • Willi Richert, Luis Pedro Coelho. Building Machine Learning Systems with Python. Packt Publishing, 2013.

Курсы по машинному обучению и анализу данных

Страницы предыдущих лет

2017/2018 учебный год

2016/2017 учебный год