Машинное обучение 1 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Экзамен)
(Лекции)
 
(не показаны 242 промежуточные версии 32 участников)
Строка 9: Строка 9:
 
'''Лектор:''' [http://www.hse.ru/staff/esokolov Соколов Евгений Андреевич]
 
'''Лектор:''' [http://www.hse.ru/staff/esokolov Соколов Евгений Андреевич]
  
Лекции проходят по вторникам, 10:30 - 11:50, ауд. 317.
+
Лекции проходят по пятницам, 11:10 - 12:30, в zoom (https://zoom.us/j/99855378374).
  
  
Строка 18: Строка 18:
 
=== Полезные ссылки ===
 
=== Полезные ссылки ===
  
[https://www.hse.ru/ba/ami/courses/184763700.html Карточка курса и программа]
+
[https://www.hse.ru/ba/ami/courses/339555332.html Карточка курса и программа]
  
 
[https://github.com/esokolov/ml-course-hse Репозиторий с материалами на GitHub]
 
[https://github.com/esokolov/ml-course-hse Репозиторий с материалами на GitHub]
  
Почта для сдачи домашних заданий: hse.cs.ml+<номер группы>@gmail.com (например, hse.cs.ml+141@gmail.com)
+
[https://www.youtube.com/watch?v=OBG6EUSRC9g&list=PLEqoHzpnmTfDwuwrFHWVHdr1-qJsfqCUX Видеозаписи лекций 18/19 года]
  
Канал в telegram для объявлений: https://telegram.me/hse_cs_ml_course
+
Почта для сдачи домашних заданий (на самом деле задания сдаются в AnyTask, но если он не работает, то присылайте на почту): hse.cs.ml+<номер группы>@gmail.com (например, hse.cs.ml+171@gmail.com)
  
[https://docs.google.com/spreadsheets/d/1BhzeronD6_DUcH1l0W2ohN4wU97DobLj0tp9-nELNSY/edit?usp=sharing Таблица с оценками]
+
Канал в telegram для объявлений: https://t.me/joinchat/AAAAAFfULjTHLkANF7_vXQ
 +
 
 +
Чат в telegram для обсуждений (предназначение чата до конца не ясно, вопросы может быть правильнее задавать в чатах групп): https://t.me/joinchat/A5rlQBPIKyQ__z33y7hL9g
 +
 
 +
Ссылка на курс в Anytask: https://anytask.org/course/740
 +
 
 +
[https://docs.google.com/spreadsheets/d/1vJYgN5-cSNeBtpxXJIT1ZqBJdx3pRTsQGF1NqY0ac5Q/edit?usp=sharing Таблица с оценками]
  
 
Оставить отзыв на курс: [https://goo.gl/forms/5CddG0gc75VZvqi52 форма]
 
Оставить отзыв на курс: [https://goo.gl/forms/5CddG0gc75VZvqi52 форма]
Строка 37: Строка 43:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Группа !! Преподаватель !! Учебный ассистент !! Страница !! Расписание
+
! Группа !! Преподаватель !! Учебный ассистент  
 +
|-
 +
| 181 (МОП) || [https://www.hse.ru/org/persons/165212870 Зиннурова Эльвира Альбертовна] || [https://t.me/Bitchert Биршерт Леша], [https://t.me/ashabalin99 Шабалин Саша]
 
|-
 
|-
| 141 (МОП) || [https://www.hse.ru/org/persons/165212870 Зиннурова Эльвира Альбертовна] || Козловская Наталия || || вторник, 12:10 - 13:30, ауд. 513
+
| 182 (МОП) || [https://www.hse.ru/staff/esokolov Соколов Евгений Андреевич] || [https://t.me/Kirili4ik Гельван Кирилл], [https://t.me/isadrtdinov Ильдус Садртдинов]
 
|-
 
|-
| 142 (МОП) || [https://www.hse.ru/org/persons/191263008 Неклюдов Кирилл Олегович] || Егоров Евгений || || вторник, 12:10 - 13:30, ауд. 503
+
| 183 (ТИ) || [https://www.hse.ru/org/persons/190919554 Трошин Сергей Дмитриевич] || [https://t.me/treacker Шабалин Евгений]
 
|-
 
|-
| 143 (АПР) || [https://www.hse.ru/org/persons/192085968 Яшков Даниил Дмитриевич] || Потапенко Анна || || вторник, 12:10 - 13:30, ауд. 505
+
| 184 (АДИС) || [https://www.hse.ru/org/persons/? Кохтев Вадим Михайлович] || [https://t.me/sergevkim Ким Сергей], [https://t.me/planum Гусев Андрей]
 
|-
 
|-
| 144 (АДИС) || [https://www.hse.ru/org/persons/191576735 Чиркова Надежда Александровна] || Сафин Александр || [https://github.com/nadiinchi/HSE_FCS_seminars семинары]|| вторник, 13:40 - 15:00, ауд. 503
+
| 185 (РС) || [https://www.hse.ru/org/persons/209813459 Каюмов Эмиль Марселевич] || [https://t.me/arinaruck Рак Арина]
 
|-
 
|-
| 145 (РС) || [https://www.hse.ru/org/persons/141880775 Умнов Алексей Витальевич] || Грачев Артем || [http://wiki.cs.hse.ru/Машинное_обучение_1/Группа_145_РС семинары] || пятница, 12:10 - 13:30, ауд. 501
+
| 186 (РС) || [https://www.hse.ru/org/persons/? Глазкова Екатерина Васильевна] || [https://t.me/bigbluebutterfly Федоров Игорь]
 +
|-
 +
| 187 (АПР) || [https://www.hse.ru/org/persons/? Цвигун Аким Олегович] ||  
 +
|-
 +
| 188 (МИ) || [https://www.hse.ru/org/persons/? Семенкин Антон Александрович] || [https://t.me/poly_nomial Анищенко Илья]
 
|-
 
|-
 
|}
 
|}
  
 
=== Консультации ===
 
=== Консультации ===
 
Консультации с преподавателями и учебными ассистентами (если иное не оговорено на странице семинаров конкретной группы) по курсу проводятся по предварительной договорённости ввиду невостребованности регулярных консультаций.
 
  
 
=== Правила выставления оценок ===
 
=== Правила выставления оценок ===
  
 
В курсе предусмотрено несколько форм контроля знания:
 
В курсе предусмотрено несколько форм контроля знания:
* Самостоятельные работы на семинарах, проверяющие знание основных фактов с лекций и выполнение теоретических домашних заданий
+
* Самостоятельные работы на семинарах, проверяющие знание основных фактов с лекций и семинаров
 
* Практические домашние работы на Python
 
* Практические домашние работы на Python
* Соревнования по анализу данных
+
* Письменная контрольная работа
* Устный коллоквиум в конце 1-го модуля
+
* Письменный экзамен
* Устный экзамен
+
  
 
Итоговая оценка вычисляется на основе оценки за работу в семестре и оценки за экзамен:
 
Итоговая оценка вычисляется на основе оценки за работу в семестре и оценки за экзамен:
  
O<sub>итоговая</sub> = 0.7 * O<sub>накопленная</sub> + 0.3 * О<sub>экз</sub>
+
Итог = Округление(0.15 * ПР + 0.4 * ДЗ + 0.15 * КР + 0.3 * Э)
 +
 
 +
ПР — средняя оценка за самостоятельные работы на семинарах
  
Оценка за работу в семестре вычисляется по формуле
+
ДЗ — средняя оценка за практические домашние работы на Python
  
O<sub>накопленная</sub> = 0.2 * O<sub>самостоятельные</sub> + 0.6 * О<sub>дз</sub> + 0.2 * О<sub>коллоквиум</sub>
+
КР — оценка за контрольную работу
  
Оценка за самостоятельную работу вычисляется как среднее по всем самостоятельным, оценка за домашнюю работу — как среднее по всем практическим заданиям и соревнованиям.
+
Э — оценка за экзамен
  
Также за каждое практическое задание и соревнование можно получить дополнительные баллы, которые влияют на выставление оценки за курс автоматом. Необходимым условием для получения автомата является накопленная оценка, равная 8 или выше.
+
Округление арифметическое.
  
 
=== Правила сдачи заданий ===
 
=== Правила сдачи заданий ===
  
Дедлайны по всем домашним заданиям являются жёсткими, то есть после срока работа не принимаются.
+
За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются. Даже при опоздании на одну секунду. Сдавайте заранее. Есть исключение: в течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна — в этом случае за каждый день просрочки продолжает вычитаться по одному баллу (если не оговорено иное).
  
 
При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента.
 
При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента.
  
При наличии уважительной причины пропущенную проверочную можно написать позднее, а дедлайн по домашнему заданию может быть перенесён (при этом получить дополнительные баллы за призовые места на конкурсе можно только при участии в общий срок). Дедлайн по домашнему заданию переносится на количество дней, равное продолжительности уважительной причины. Решение о том, является ли причина уважительной, принимает исключительно учебный офис.
+
При наличии уважительной причины пропущенную проверочную можно написать позднее, а дедлайн по домашнему заданию может быть перенесён. Дедлайн по домашнему заданию переносится на количество дней, равное продолжительности уважительной причины. Решение о том, является ли причина уважительной, принимает исключительно учебный офис.
  
 
== Лекции ==
 
== Лекции ==
  
'''Лекция 1''' (6 сентября). Введение в машинное обучение. Основные термины, постановки задач и примеры применения. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture01-intro.pdf Конспект]]
+
Ко всем конспектам на GitHub есть исходники. Исправления и дополнения всячески приветствуются!
  
'''Лекция 2''' (13 сентября). Линейная регрессия. Метрики качества регрессии. Градиентный спуск и способы оценивания градиента. Переобучение и регуляризация. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture02-linregr.pdf Конспект]]
+
'''Лекция 1''' (4 сентября). Введение в машинное обучение. Основные термины, постановки задач и примеры применения. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture01-intro.pdf Конспект]] [[https://www.youtube.com/watch?v=HytWgel76rY Запись лекции]]
  
'''Лекция 3''' (20 сентября). Переобучение и регуляризация. Разреженные линейные модели. Квантильная регрессия. Подготовка признаков. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture03-linregr.pdf Конспект]]
+
'''Лекция 2''' (11 сентября). Линейная регрессия. Метрики качества регрессии. Переобучение. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture02-linregr.pdf Конспект]] [[https://www.youtube.com/watch?v=rNO34vMVS-Q Запись лекции]]
  
'''Лекция 4''' (27 сентября). Линейная классификация. Отступ и верхние оценки на пороговую функцию потерь. Метрики качества классификации. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture04-linclass.pdf Конспект]]
+
'''Лекция 3''' (18 сентября). Регуляризация. Градиентное обучение. Оценивание градиента. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture03-linregr.pdf Конспект]] [[https://www.youtube.com/watch?v=CWFWFsie6jg Запись лекции]]
  
'''Лекция 5''' (4 октября). Линейная классификация. Логистическая регрессия и оценки вероятности классов. Метод опорных векторов. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture05-linclass.pdf Конспект]]
+
'''Лекция 4''' (25 сентября). Линейная классификация. Отступ и верхние оценки на пороговую функцию потерь. Метрики качества классификации. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture04-linclass.pdf Конспект]] [[https://www.youtube.com/watch?v=tIymy9jpO9s Запись лекции]]
  
'''Лекция 6''' (11 октября). Многоклассовая классификация, сведение к бинарным задачам. Многоклассовая логистическая регрессия. Классификация с пересекающимися классами. Метрики качества многоклассовой классификации. Категориальные признаки: хэширование и счётчики. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture06-linclass.pdf Конспект]]
+
'''Лекция 5''' (2 октября). Метрики качества классификации. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture04-linclass.pdf Конспект]] [[https://www.youtube.com/watch?v=3Qj87xe3Djk Запись лекции]] [[https://www.youtube.com/watch?v=xk7cU86Sh5A Ещё одна попытка объяснить площади под кривыми]]
  
'''Лекция 7''' (18 октября). Решающие деревья. Жадный алгоритм построения. Выбор лучшего разбиения с помощью критерия информативности. Критерии информативности для регрессии и классификации. Учёт пропусков в деревьях. Решающие деревья и категориальные признаки. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture07-trees.pdf Конспект]]
+
'''Лекция 6''' (9 октября). Линейная классификация. Логистическая регрессия и оценки вероятности классов. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture05-linclass.pdf Конспект]] [[https://www.youtube.com/watch?v=KeNJw_jw8NE Запись лекции]] [[https://www.youtube.com/watch?v=ZJ_b_VLQu84 Дополнительная лекция]]
  
'''Лекция 8''' (1 ноября). Бутстрап и бэггинг. Разложение ошибки на смещение и разброс (bias-variance decomposition). Случайный лес. Вычисление расстояний с помощью лесов. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture08-ensembles.pdf Конспект]]
+
'''Лекция 7''' (16 октября). Многоклассовая классификация, сведение к бинарным задачам. Многоклассовая логистическая регрессия. Метрики качества многоклассовой классификации. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture06-linclass.pdf Конспект]] [[https://www.youtube.com/watch?v=Ec1xYZ9zzEI Запись лекции]]
  
'''Лекция 9''' (8 ноября). Градиентный бустинг. Регуляризация. Особенности бустинга над деревьями. Взвешивание объектов в градиентном бустинге. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture09-ensembles.pdf Конспект]]
+
'''Лекция 8''' (30 октября). Решающие деревья. Жадный алгоритм построения. Выбор лучшего разбиения с помощью критерия информативности. Критерии информативности для регрессии и классификации. Учёт пропусков в деревьях. Решающие деревья и категориальные признаки. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture07-trees.pdf Конспект]] [[https://www.youtube.com/watch?v=h7FF6EcXDqA Запись лекции]]
  
'''Лекция 10''' (15 ноября). Оптимизация второго порядка в градиентном бустинге. Регуляризация деревьев. XGBoost. Стекинг. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture10-ensembles.pdf Конспект]]
+
'''Лекция 9''' (6 ноября). Бутстрап и бэггинг. Разложение ошибки на смещение и разброс (bias-variance decomposition). Случайный лес. Вычисление расстояний с помощью лесов. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture08-ensembles.pdf Конспект]] [[https://www.youtube.com/watch?v=t0OhR13Pgwk Запись лекции]]
  
'''Лекция 11''' (22 ноября). Графы вычислений, их обучение и метод обратного распространения ошибки. Полносвязные, свёрточные и рекуррентные слои. Возможности аппроксимации. Transfer learning. Глубинное обучение. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture11-dl.pdf Конспект]]
+
'''Лекция 10''' (13 ноября). Градиентный бустинг. Регуляризация. Особенности бустинга над деревьями. Взвешивание объектов в градиентном бустинге. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture09-ensembles.pdf Конспект]] [[https://www.youtube.com/watch?v=pXFZsXlVM-M Запись лекции]]
  
'''Лекция 12''' (29 ноября). Обучение без учителя. Кластеризация: метрики качества, K-Means, иерархический и графовый подходы. Визуализация, t-SNE. Обучение представлений. word2vec. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture12-unsupervised.pdf Конспект]]
+
'''Лекция 11''' (20 ноября). Оптимизация второго порядка в градиентном бустинге. Регуляризация деревьев. XGBoost. Стекинг. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture10-ensembles.pdf Конспект]] [[https://www.youtube.com/watch?v=Tq-ofCmY6b4 Запись лекции]]
  
'''Лекция 13''' (20 декабря). Ядровые методы. Теорема Мерсера и способы построения ядер. Полиномиальные и гауссовские ядра. Метод главных компонент. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/lecture-notes/lecture13-features.pdf Конспект]]
+
'''Лекция 12''' (27 ноября). Обучение без учителя. Кластеризация: метрики качества, K-Means, иерархический и графовый подходы. Визуализация, t-SNE. Обучение представлений. word2vec. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture11-unsupervised.pdf Конспект]] [[https://www.youtube.com/watch?v=kdxnz3cAoeI Запись лекции]]
== Семинары ==
+
  
'''Семинар 1'''. Библиотеки для анализа данных: numpy, pandas, matplotlib. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem01-tools.ipynb Notebook]]
+
'''Лекция 13''' (4 декабря). Метод главных компонент, его связь с матричными разложениями. Рекомендательные системы: постановка задачи, коллаборативные методы, матричные разложения, контентные методы. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture12-factorizations.pdf Конспект]]
  
'''Семинар 2'''. Векторное дифференцирование. Линейная регрессия, аналитическое и численное решение. Scikit-learn. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem02-linregr.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-01-linregr.pdf Домашнее задание]]
+
== Семинары ==
  
'''Семинар 3'''. Подготовка признаков (масштабирование, категориальные признаки, нелинейные признаки, заполнение пропусков). Выбросы и устойчивые к ним модели. Квантильная регрессия. Vowpal Wabbit. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem03-linregr.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-02-linregr.pdf Домашнее задание]]
+
'''Семинар 1'''. Разведочный анализ данных в Python. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem01-pandas.ipynb Ноутбук]]
  
'''Семинар 4'''. Линейная классификация. Обучение линейных классификаторов в scikit-learn. Метрики качества классификации. Особенности кросс-валидации, стратификация. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem04-linclass.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-03-linclass.pdf Домашнее задание]]
+
'''Семинар 2'''. sklearn и особенности подготовки данных для линейных моделей. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem02-sklearn-linregr.ipynb Ноутбук]]
  
'''Семинар 5'''. Линейная классификация. Построение ROC-кривых. Явная формула для AUC-ROC. Интерпретации AUC-ROC. Функции потерь, корректно оценивающие вероятности классов. Метод опорных векторов и его гиперпараметры. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem05-linclass.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem05-linclass-viz.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-04-linclass.pdf Домашнее задание]]
+
'''Семинар 3'''. Основы матрично-векторного дифференцирования. Градиентный спуск. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem03-numpy.ipynb Справочная информация по NumPy]] [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem03-gd.ipynb Ноутбук по градиентному спуску]] [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem03-vector-diff.pdf Задачи на векторное дифференцирование]]
  
'''Семинар 6'''. Разреженные матрицы и их форматы. Работа с текстами, их предобработка. Векторизация. Классификация текстов. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem06-texts.ipynb Notebook]]
+
'''Семинар 4'''. Работа с пропусками и выбросами. Методы кодирования категориальных признаков. Основы работы с текстовыми данными. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem04-features.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem04-features.ipynb Ноутбук]]
  
'''Семинар 7'''. Критерии информативности и их свойства. Неустойчивость деревьев. Подбор гиперпараметров. Краткое введение в композиции деревьев. Калибровка вероятностей. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem07-trees.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-05-trees.pdf Домашнее задание]]
+
'''Семинар 5'''. AUC-ROC: алгоритм построения, интерпретации. Прямая оптимизация AUC-ROC. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem05-linclass-metrics.pdf Конспект]]
  
'''Семинар 8'''. Разложение ошибки на смещение и разброс для линейных моделей. Бэггинг. Композиции с простым голосованием. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem08-ensembles.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-06-ensembles.pdf Домашнее задание]]
+
'''Семинар 6'''. Оценивание вероятностей. Калибровка вероятностей. Квантильная регрессия. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem06-probs-quantile.pdf Конспект]]
  
'''Семинар 9'''. Градиентный бустинг. Примеры использования. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem09-ensembles.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-07-ensembles.pdf Домашнее задание]]
+
'''Семинар 7'''. Решающие деревья. Критерии информативности, их особенности и интерпретации. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem07-trees.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem07-trees.ipynb Ноутбук]]
  
'''Семинар 10'''. Градиентный бустинг над деревьями. Особенности решающих деревьев и композиций над ними. XGBoost. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem10-ensembles.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-08-ensembles.pdf Домашнее задание]]
+
'''Семинар 8'''. Разложение ошибки на смещение и разброс. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem08-bvd.pdf Конспект]]
  
'''Семинар 11'''. Метод обратного распространения ошибки. Полносвязные слои. Операция свёртки, примеры фильтров. Свёрточные слои. VGG19 и TensorFlow. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem11-dl.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-09-dl.pdf Домашнее задание]]
+
'''Семинар 9'''. Градиентный бустинг. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem09-gbm-part1.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem09-gbm-part2.ipynb Ноутбук]]
  
'''Семинар 12'''. Визуализация данных. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem12-visualization.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-10-unsupervised.pdf Домашнее задание]]
+
== Практические задания ==
  
'''Семинар 13'''. Методы понижения размерности. Метод главных компонент. Ядра. [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem13-kernels.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/seminars/sem13-pca.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-theory/homework-theory-11-features.pdf Домашнее задание]]
+
За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются, но есть исключение. В течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна — в этом случае за каждый день просрочки продолжает вычитаться по одному баллу (если не оговорено иное).
  
== Практические задания ==
+
'''Задание 1.''' Pandas и распределение студентов ПМИ по элективам.
 +
 +
Мягкий дедлайн: 21.09.2020 04:59.
  
'''Задание 1.''' Numpy, pandas, scikit-learn и градиентный спуск.
+
Жесткий дедлайн: 24.09.2020 23:59.
  
Дата выдачи: 16.09.2016
+
[[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-practice/homework-practice-01-pandas.ipynb Ноутбук с заданием]]
  
Дедлайн: 30.09.2016 23:59MSK
+
'''Задание 2.''' Разведочный анализ данных, линейная регрессия и разработка признаков.
 +
 +
Мягкий дедлайн: 05.10.2020 02:59.
  
[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-practice/homework-practice-01-linregr.ipynb Условие]
+
Жесткий дедлайн: 08.10.2020 23:59.
  
'''Задание 2.''' Линейная классификация, категориальные и текстовые данные.
+
[[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-practice/homework-practice-02-linregr.ipynb Ноутбук с заданием]]
  
Дата выдачи: 11.10.2016
+
'''Задание 3.''' Градиентный спуск и линейная регрессия своими руками.
 +
 +
Мягкий дедлайн: 19.10.2020 01:59.
  
Дедлайн: 24.10.2016 23:59MSK
+
Жесткий дедлайн: 22.10.2020 01:59.
  
[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-practice/homework-practice-02-linclass.ipynb Условие]
+
[[https://github.com/esokolov/ml-course-hse/tree/master/2020-fall/homeworks-practice/homework-practice-03-gd Файлы к заданию]]
  
'''Задание 3.''' Разложение ошибки на смещение и разброс, решающие деревья и случайные леса.
+
'''Задание 4.''' Линейная классификация.
 +
 +
Мягкий дедлайн: 02.11.2020 01:59.  
  
Дата выдачи: 14.11.2016
+
Жесткий дедлайн: 05.11.2020 02:59.
  
Дедлайн: 28.11.2016 05:59MSK
+
[[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-practice/homework-practice-04-classification.ipynb Ноутбук с заданием]]
  
[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-practice/homework-practice-03-ensembles.ipynb Условие]
+
'''Задание 5.''' Решающие деревья своими руками.
 +
 +
Мягкий дедлайн: 18.11.2020 01:59.  
  
'''Задание 4.''' Обучение без учителя.
+
Жесткий дедлайн: 22.11.2020 01:59.
  
Дата выдачи: 06.12.2016
+
[[https://github.com/esokolov/ml-course-hse/tree/master/2020-fall/homeworks-practice/homework-practice-05-trees Файлы к заданию]]
  
Дедлайн: 18.12.2016 05:59MSK '''(продлён до 18.12.2016 23:59MSK)'''
+
'''Задание 6.''' Разложение ошибки на смещение и разброс.
 +
 +
Мягкий дедлайн: 02.12.2020 00:59.
  
[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/homeworks-practice/homework-practice-04-unsupervised.ipynb Условие]
+
Жесткий дедлайн: 07.12.2020 00:59
  
== Соревнования ==
+
[[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-practice/homework-practice-06-bvd.ipynb Ноутбук с заданием]]
  
Правила участия в соревнованиях зависят от специализации:
+
==Теоретические домашние задания==
  
1. Для студентов специализации МОП участие обязательное, оценка учитывается в накопленной наряду с остальными домашними заданиями.
+
Теоретические ДЗ не проверяются, но задачи из них могут войти в проверочные работы на семинарах.
  
2. Для студентов других специализаций участие является опциональным. Баллы, заработанные за соревнование, можно добавить к баллам за самостоятельную работу или за практическое домашнее задание (при этом сумма не должна превышать 10 баллов).
+
'''Задание 1.''' Матрично-векторное дифференцирование [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-theory/homework-theory-01-derivatives.pdf Условие]]
  
'''В течение недели''' после окончания соревнования на почту курса необходимо прислать:
+
'''Задание 2.''' Линейная регрессия [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-theory/homework-theory-02-linregr.pdf Условие]]
* краткий отчёт с описанием решения (достаточно нескольких предложений с описанием использованных признаков и методов);
+
* код, с помощью которого можно получить ответы, отправленные в качестве решения на Kaggle.
+
  
Также студентам, занявшим в рамках пределах группы первые три места, необходимо выступить на семинаре с рассказом о своём решении.
+
'''Задание 3.''' Линейная классификация [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-theory/homework-theory-03-linclass.pdf Условие]]
  
Оценка за соревнование в случае преодоления всех бейзлайнов вычисляется по формуле
+
'''Задание 4.''' Разложение ошибки на смещение и разброс [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-theory/homework-theory-04-bvd.pdf Условие]]
  
10 - 9 * (i - 1) / (n - 1),
+
== Соревнования ==
  
где i — номер студента в таблице результатов среди своих одногруппников, n — количество студентов в группе. В противном случае студент получает за соревнование 0 баллов.
+
===Правила участия и оценивания===
 +
В соревновании по анализу данных вам предлагается по имеющимся данным решить некоторую задачу, оптимизируя указанную метрику, и отправить ответы для заданного тестового множества. Максимальное количество посылок в сутки ограничено (как правило, разрешается сделать 2 посылки), ближе к концу соревнования вам будем необходимо выбрать 2 посылки, которые вы считаете лучшими. Тестовые данные делятся на публичные и приватные в некотором соотношении, на основе которых строятся публичный и приватный лидерборды соответственно, при этом публичный лидерборд доступен в течение всего соревнования, а приватный строится после его окончания для выбранных вами посылок.
  
Также за первое, второе и третье место в пределах группы студент получет 3, 2 или 1 дополнительный балл соответственно. За лучшие места в общем рейтинге также могут быть выставлены дополнительные баллы. Напоминаем, что дополнительные баллы не влияют на накопленную оценку, однако влияют на возможность получения оценки автоматом по курсу.
+
В лидербордах каждого из соревнований присутствуют несколько базовых решений (бейзлайнов), каждое из которых соответствует определённой оценке. Например, для получения оценки не ниже 8 баллов необходимо, чтобы ваше решение на '''приватном''' лидерборде оказалось лучше соответствующего бейзлайна. Далее для студента, преодолевшего бейзлайн на N_1 баллов, но не преодолевшего бейзлайн на N_2 балла, итоговая оценка за соревнование рассчитывается по равномерной сетке среди всех таких студентов в зависимости от места в приватном лидерборде среди них; если быть точными, то по следующей формуле:
  
Если решения всех участников окажутся тривиальными или участников будет слишком мало, то преподаватели имеют право
+
N_2 - (N_2 - N_1) * i  / M,
снизить максимальную оценку или сделать шкалу более разреженной.
+
  
Студент, набравший менее 6 баллов (но при этом преодолевший бейзлайны), имеет право написать подробный отчёт по итогам соревнования и повысить свою оценку до 6 баллов (при выполнении всех требований к отчёту).
+
где M — количество студентов (из всех студентов, изучающих курс), преодолевших бейзлайн на N_1 баллов, но не преодолевших бейзлайн на N_2 балла;
  
Регистрируясь на соревнование, выбирайте осмысленное имя. Рекомендованный формат: ''Иванов Иван (ПМИ ФКН ВШЭ, группа 141)''.
+
i — место (начиная с 1) студента в приватном лидерборде среди всех таких студентов.  
  
=== Соревнование 1: Оценка вероятности победы в матче Dota 2 ===
+
Единственное исключение из формулы — студенты, преодолевшие самый сильный бейзлайн, получают прибавку 1/M к своей оценке.
  
Дата выдачи: 09.10.2016
+
Чтобы вас не пропустили при проверке решений соревнования, '''необходимо''' использовать следующий формат для имени команды (вкладка Team):  
  
Дедлайн: 06.11.2016 (на самом деле 07.11.2016 03:00 MSK)
+
«[ПМИ] Имя Фамилия номер_группы»
  
Соревнование на Kaggle InClass: https://inclass.kaggle.com/c/hse-dota2-win-prediction
+
В течение 3 суток после окончания соревнования в соответствующее задание на anytask необходимо прислать код, воспроизводящий ответы для посылки, фигурирующей в приватном лидерборде. При оформлении кода предполагайте, что данные лежат рядом с ним в папке data, а в результате выполнения кода ответы должны быть записаны в файл solution-N-Username.csv, где N — номер соревнования, Username — ваша фамилия. У нас должна быть возможность запустить код и получить те же ответы, что и в вашей посылке, — в частности, это означает, что:
  
Ссылка для участия: https://kaggle.com/join/cshse161
+
1. Если вы отправляете файл *.py, мы будем запускать его при помощи команды python *.py в вышеуказанном предположении о местонахождении данных.
  
'''Ограничение''': можно использовать только линейные модели для построения предсказаний
+
2. Если вы отправляете ноутбук *.ipynb, мы последовательно запустим все ячейки ноутбука и будем ожидать в результате его работы формирование файла с ответами.
  
[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/contests/contest01-dota-statement.ipynb Подробное описание задачи]
+
3. Если вы отправляете код с использованием другого языка программирования, в том же письме направьте нам инструкцию по его запуску с тем, чтобы получить тот же файл с ответами.  
  
[https://github.com/esokolov/ml-course-hse/blob/master/2016-fall/contests/contest01-report-requirements.pdf Требования к отчёту]
+
В случае отсутствия кода, воспроизводящего результат, в установленный срок студенту выставляется 0 в качестве оценки за соревнование. Студенты, попавшие в топ-3 согласно приватному лидерборду, смогут получить бонусные баллы, если в течение недели после окончания соревнования сдадут в anytask отчет о получении решения, фигурирующего в приватном лидерборде. Если не оговорено иное, использовать любые внешние данные в соревнованиях '''запрещено'''. Под внешними данными понимаются размеченные данные, где разметка имеет прямое отношение к решаемой задаче. Грубо говоря, сборник текстов с википедии не считается внешними данными.
  
=== Альтернативное соревнование: Sberbank Data Science Contest ===
+
В некоторых соревнованиях данные взяты из завершившегося соревнования на Kaggle.
 +
Категорически запрещено использовать данные из оригинального соревнования для восстановления целевой переменной на тестовой выборке.
  
Соревнование: https://sdsj.ru/contest.html
+
=== Соревнование 1 ===
  
Дедлайн: 06.11.2016, 23:59 MSK
+
Задача: выявление мошеннических тразнакций
  
Если вам неинтересно участвовать в учебных контестах, то в качестве альтернативы можно заняться соревнованием от Сбербанка.
+
Это соревнование на бонусные баллы, оно не является обязательным.
Никаких ограничений на методы и подходы нет, главное — решить задачу как можно лучше.
+
  
Правила оценивания такие же, как и в учебных соревнованиях.
+
Ссылка для участия: https://www.kaggle.com/t/c70d9edc863e4b709f12256091e2d394
Если решения всех участников окажутся тривиальными или участников будет слишком мало, то преподаватели имеют право
+
снизить максимальную оценку или сделать шкалу более разреженной.
+
Данное соревнование можно засчитать вместо любого из учебных.
+
За высокие места в соревновании могут быть выданы очень большие бонусы!
+
  
== Коллоквиум ==
+
Дедлайн: 15.12.2020 23:59MSK
  
Дата: 12.11.2016
+
В задании всего один бейзлайн (lightgbm), ненулевые баллы получают решения, преодолевшие его на приватном лидерборде.
 +
Все решения выше этого бейзлайна оцениваются по равномерной шкале от 0 до 5.
  
[https://docs.google.com/document/d/1C4kHPdo-ZzDzomslEJEOIpgcNEubesXx0Y_-joTOWac/edit?usp=sharing Вопросы к коллоквиуму]
+
Обратите внимание на раздел Baselines на Kaggle — там можно найти много полезного.
  
Коллоквиум устный. Каждому студенту задаётся несколько вопросов из теоретического минимума (за незнание ответа на любой из них выставляется оценка 0), несколько вопросов из основной части, а также даются задачи по темам семинаров и домашних заданий.
+
== Бонусы за соревнования ==
  
Общее начало в 15:00, сбор в аудитории 509. Группам рекомендуется подходить по следующему расписанию:
+
За успешное участие в соревнованиях по анализу данных могут быть выставлены бонусные баллы, которые можно прибавить к оценке за любое практическое или теоретическое домашнее задание, а также за самостоятельную работу. Под успешным участием понимается попадание в топ-10% мест; если соревнование особо сложное и крупное, может рассматриваться и попадание в топ-20% мест. Конкретное число баллов определяется преподавателями и зависит от сложности соревнования и занятого места. За одно соревнование можно получить не более 5 баллов. Для получения оценки необходимо предоставить краткий отчёт о решении задачи.
{| class="wikitable"
+
|-
+
! Время начала !! Группы
+
|-
+
| 15:00 || 143, 144
+
|-
+
| 16:30 || 141, 142
+
|-
+
| 17:30-18:00 || 145
+
|}
+
  
== Экзамен ==
+
== Контрольная работа ==
  
Дата: 26.12.2016
+
Контрольная работа состоится на лекции 4 декабря (в 11:10 по Москве) и займёт одну пару.
  
Место: ауд. 509
+
[https://docs.google.com/document/d/1xELhUsd4w3tPZ4f-nLlXoeWQEag6VGIxbD__vM7IelM/edit?usp=sharing Вопросы для подготовки с прошлого года]
  
[https://docs.google.com/document/d/1M76smlFtJ_Omrc7MdXV8Waa-KZDpACrKH2DHl6LKzJw/edit?usp=sharing Вопросы к экзамену]
+
[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/midterm-fall-2020-example.pdf Пример варианта]
  
Во время ответа студент сдаёт три части: теоретический минимум, теорию и задачи.
+
== Экзамен ==
За теоретический минимум можно набрать до 2 баллов, за теорию до 4 баллов, за задачи — до 4 баллов.
+
Если у студента не менее 4 дополнительных баллов, то он освобождается от задач и получает баллы за них автоматически (при условии успешной сдачи теоретического минимума).
+
  
{| class="wikitable"
+
[[https://docs.google.com/document/d/1Kyk5YU5gakj_LjSWlHJTwyg7PU3U9PCaaaYliOqKSfI/edit?usp=sharing Вопросы для подготовки с прошлого года]]
|-
+
! Время начала !! Группы
+
|-
+
| 10:30 || 145
+
|-
+
| 12:30 || 142
+
|-
+
| 14:30 || 141
+
|-
+
| 16:00 || 143, 144
+
|}
+
  
 
== Полезные материалы ==
 
== Полезные материалы ==
Строка 292: Строка 286:
 
* [https://www.coursera.org/specializations/machine-learning-data-analysis Coursera: Машинное обучение и анализ данных (специализация)]
 
* [https://www.coursera.org/specializations/machine-learning-data-analysis Coursera: Машинное обучение и анализ данных (специализация)]
 
* [https://www.coursera.org/learn/introduction-machine-learning Coursera: Введение в машинное обучение, К.В. Воронцов]
 
* [https://www.coursera.org/learn/introduction-machine-learning Coursera: Введение в машинное обучение, К.В. Воронцов]
 +
* [https://openedu.ru/course/hse/INTRML/ Введение в машинное обучение (онлайн-курс НИУ ВШЭ)]
 +
 +
== Страницы предыдущих лет ==
 +
 +
[[Машинное_обучение_1/2019_2020 | 2019/2020 учебный год]]
 +
 +
[[Машинное_обучение_1/2018_2019 | 2018/2019 учебный год]]
 +
 +
[[Машинное_обучение_1/2017_2018 | 2017/2018 учебный год]]
 +
 +
[[Машинное_обучение_1/2016_2017 | 2016/2017 учебный год]]

Текущая версия на 14:31, 27 ноября 2020

О курсе

borderless

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

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

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

Лекции проходят по пятницам, 11:10 - 12:30, в zoom (https://zoom.us/j/99855378374).




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

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

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

Видеозаписи лекций 18/19 года

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

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

Чат в telegram для обсуждений (предназначение чата до конца не ясно, вопросы может быть правильнее задавать в чатах групп): https://t.me/joinchat/A5rlQBPIKyQ__z33y7hL9g

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

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

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

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

Семинары

Группа Преподаватель Учебный ассистент
181 (МОП) Зиннурова Эльвира Альбертовна Биршерт Леша, Шабалин Саша
182 (МОП) Соколов Евгений Андреевич Гельван Кирилл, Ильдус Садртдинов
183 (ТИ) Трошин Сергей Дмитриевич Шабалин Евгений
184 (АДИС) Кохтев Вадим Михайлович Ким Сергей, Гусев Андрей
185 (РС) Каюмов Эмиль Марселевич Рак Арина
186 (РС) Глазкова Екатерина Васильевна Федоров Игорь
187 (АПР) Цвигун Аким Олегович
188 (МИ) Семенкин Антон Александрович Анищенко Илья

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

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

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

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

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

Итог = Округление(0.15 * ПР + 0.4 * ДЗ + 0.15 * КР + 0.3 * Э)

ПР — средняя оценка за самостоятельные работы на семинарах

ДЗ — средняя оценка за практические домашние работы на Python

КР — оценка за контрольную работу

Э — оценка за экзамен

Округление арифметическое.

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

За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются. Даже при опоздании на одну секунду. Сдавайте заранее. Есть исключение: в течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна — в этом случае за каждый день просрочки продолжает вычитаться по одному баллу (если не оговорено иное).

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

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

Лекции

Ко всем конспектам на GitHub есть исходники. Исправления и дополнения всячески приветствуются!

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

Лекция 2 (11 сентября). Линейная регрессия. Метрики качества регрессии. Переобучение. [Конспект] [Запись лекции]

Лекция 3 (18 сентября). Регуляризация. Градиентное обучение. Оценивание градиента. [Конспект] [Запись лекции]

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

Лекция 5 (2 октября). Метрики качества классификации. [Конспект] [Запись лекции] [Ещё одна попытка объяснить площади под кривыми]

Лекция 6 (9 октября). Линейная классификация. Логистическая регрессия и оценки вероятности классов. [Конспект] [Запись лекции] [Дополнительная лекция]

Лекция 7 (16 октября). Многоклассовая классификация, сведение к бинарным задачам. Многоклассовая логистическая регрессия. Метрики качества многоклассовой классификации. [Конспект] [Запись лекции]

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

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

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

Лекция 11 (20 ноября). Оптимизация второго порядка в градиентном бустинге. Регуляризация деревьев. XGBoost. Стекинг. [Конспект] [Запись лекции]

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

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

Семинары

Семинар 1. Разведочный анализ данных в Python. [Ноутбук]

Семинар 2. sklearn и особенности подготовки данных для линейных моделей. [Ноутбук]

Семинар 3. Основы матрично-векторного дифференцирования. Градиентный спуск. [Справочная информация по NumPy] [Ноутбук по градиентному спуску] [Задачи на векторное дифференцирование]

Семинар 4. Работа с пропусками и выбросами. Методы кодирования категориальных признаков. Основы работы с текстовыми данными. [Конспект] [Ноутбук]

Семинар 5. AUC-ROC: алгоритм построения, интерпретации. Прямая оптимизация AUC-ROC. [Конспект]

Семинар 6. Оценивание вероятностей. Калибровка вероятностей. Квантильная регрессия. [Конспект]

Семинар 7. Решающие деревья. Критерии информативности, их особенности и интерпретации. [Конспект] [Ноутбук]

Семинар 8. Разложение ошибки на смещение и разброс. [Конспект]

Семинар 9. Градиентный бустинг. [Конспект] [Ноутбук]

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

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

Задание 1. Pandas и распределение студентов ПМИ по элективам.

Мягкий дедлайн: 21.09.2020 04:59.

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

[Ноутбук с заданием]

Задание 2. Разведочный анализ данных, линейная регрессия и разработка признаков.

Мягкий дедлайн: 05.10.2020 02:59.

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

[Ноутбук с заданием]

Задание 3. Градиентный спуск и линейная регрессия своими руками.

Мягкий дедлайн: 19.10.2020 01:59.

Жесткий дедлайн: 22.10.2020 01:59.

[Файлы к заданию]

Задание 4. Линейная классификация.

Мягкий дедлайн: 02.11.2020 01:59.

Жесткий дедлайн: 05.11.2020 02:59.

[Ноутбук с заданием]

Задание 5. Решающие деревья своими руками.

Мягкий дедлайн: 18.11.2020 01:59.

Жесткий дедлайн: 22.11.2020 01:59.

[Файлы к заданию]

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

Мягкий дедлайн: 02.12.2020 00:59.

Жесткий дедлайн: 07.12.2020 00:59

[Ноутбук с заданием]

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

Теоретические ДЗ не проверяются, но задачи из них могут войти в проверочные работы на семинарах.

Задание 1. Матрично-векторное дифференцирование [Условие]

Задание 2. Линейная регрессия [Условие]

Задание 3. Линейная классификация [Условие]

Задание 4. Разложение ошибки на смещение и разброс [Условие]

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

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

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

В некоторых соревнованиях данные взяты из завершившегося соревнования на Kaggle. Категорически запрещено использовать данные из оригинального соревнования для восстановления целевой переменной на тестовой выборке.

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

Задача: выявление мошеннических тразнакций

Это соревнование на бонусные баллы, оно не является обязательным.

Ссылка для участия: https://www.kaggle.com/t/c70d9edc863e4b709f12256091e2d394

Дедлайн: 15.12.2020 23:59MSK

В задании всего один бейзлайн (lightgbm), ненулевые баллы получают решения, преодолевшие его на приватном лидерборде. Все решения выше этого бейзлайна оцениваются по равномерной шкале от 0 до 5.

Обратите внимание на раздел Baselines на Kaggle — там можно найти много полезного.

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

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

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

Контрольная работа состоится на лекции 4 декабря (в 11:10 по Москве) и займёт одну пару.

Вопросы для подготовки с прошлого года

Пример варианта

Экзамен

[Вопросы для подготовки с прошлого года]

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

Книги

  • 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.

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

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

2019/2020 учебный год

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

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

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