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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Семинары)
(Практические задания)
 
(не показаны 153 промежуточные версии 22 участников)
Строка 9: Строка 9:
 
'''Лектор:''' [http://www.hse.ru/staff/esokolov Соколов Евгений Андреевич]
 
'''Лектор:''' [http://www.hse.ru/staff/esokolov Соколов Евгений Андреевич]
  
Лекции проходят по пятницам, 10:30 - 11:50, ауд. 317.
+
Лекции проходят по пятницам, 12:10 - 13:30, ауд. R404 (Покровский бульвар, 11).
  
  
Строка 18: Строка 18:
 
=== Полезные ссылки ===
 
=== Полезные ссылки ===
  
[https://www.hse.ru/ba/ami/courses/205507250.html Карточка курса и программа]
+
[https://www.hse.ru/ba/ami/courses/292689583.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+151@gmail.com)
+
[https://www.youtube.com/watch?v=OBG6EUSRC9g&list=PLEqoHzpnmTfDwuwrFHWVHdr1-qJsfqCUX Видеозаписи лекций 18/19 года]
  
Канал в telegram для объявлений: https://telegram.me/hse_cs_ml_course_2017
+
Почта для сдачи домашних заданий (на самом деле задания сдаются в AnyTask, но если он не работает, то присылайте на почту): hse.cs.ml+<номер группы>@gmail.com (например, hse.cs.ml+171@gmail.com)
  
Чат в telegram для обсуждений: https://t.me/joinchat/A5rlQEQ7r16nvyHbyXtjNA
+
Канал в telegram для объявлений: https://t.me/joinchat/AAAAAEtiwm9A8i-78LNcKQ
  
[https://docs.google.com/spreadsheets/d/16wj3eH2crdGY-MFqiMMUoy1E7uo80nYT2MYfz3Y7gx4/edit?usp=sharing Таблица с оценками]
+
Чат в telegram для обсуждений (предназначение чата до конца не ясно, вопросы может быть правильнее задавать в чатах групп): https://t.me/joinchat/A5rlQBUrWTeXl7eBbnyBcQ
 +
 
 +
Ссылка на курс в Anytask: https://anytask.org/course/537
 +
 
 +
[https://docs.google.com/spreadsheets/d/1QIUMUkjzHfRqNIkYHVb4jsi3Pkq7URAQWSW8c9UwE-g/edit?usp=sharing Таблица с оценками]
  
 
Оставить отзыв на курс: [https://goo.gl/forms/5CddG0gc75VZvqi52 форма]
 
Оставить отзыв на курс: [https://goo.gl/forms/5CddG0gc75VZvqi52 форма]
Строка 39: Строка 43:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Группа !! Преподаватель !! Учебный ассистент !! Страница !! Расписание
+
! Группа !! Преподаватель !! Учебный ассистент  
 
|-
 
|-
| 151 (МОП) || [https://www.hse.ru/org/persons/165212870 Зиннурова Эльвира Альбертовна] || Атанов Андрей || || пятница, 12:10 - 13:30, ауд. 300
+
| 171 (МОП) || [https://www.hse.ru/org/persons/165212870 Зиннурова Эльвира Альбертовна] || [https://t.me/granilace Виктор Куканов]
 
|-
 
|-
| 152 (МОП) || [https://www.hse.ru/org/persons/191263008 Неклюдов Кирилл Олегович] || Гадецкий Артём || || понедельник, 15:10 - 16:30, ауд. 505
+
| 172 (МОП) || [https://www.hse.ru/org/persons/209813459 Каюмов Эмиль Марселевич] || [https://t.me/svdcvt Соня Дымченко]
 
|-
 
|-
| 153 (АПР) || [https://www.hse.ru/org/persons/209813467 Никишин Евгений Сергеевич] || Ковалёв Евгений || || пятница, 12:10 - 13:30, ауд. 322
+
| 173 (ТИ) || [https://www.hse.ru/org/persons/? Хрушков Павел Вадимович] || [https://t.me/resokolov Роман Соколов]
 
|-
 
|-
| 154 (АДИС) || [https://www.hse.ru/org/persons/209813459 Каюмов Эмиль Марселевич] || Панков Алексей || || пятница, 12:10 - 13:30, ауд. 501
+
| 174 (АДИС) || [https://www.hse.ru/org/persons/? Кохтев Вадим Михайлович] || [https://t.me/widepeepoBlanket Евгений Алаев]
 
|-
 
|-
| 155 (РС) || [https://www.hse.ru/org/persons/192085968 Яшков Даниил Дмитриевич] || [https://t.me/despairazure Кохтев Вадим] ||  || понедельник, 12:10 - 13:30, ауд. 513
+
| 175 (РС) || [https://www.hse.ru/org/persons/228364473 Волохова Александра Константиновна] || [https://t.me/President153 Ярослав Пудяков]
 
|-
 
|-
| 156 (ТИ) || [https://www.hse.ru/org/persons/141880775 Умнов Алексей Витальевич] || Шевченко Александр || [[Машинное обучение 1/156 | ссылка]]|| пятница, 15:10 - 16:30, ауд. 311
+
| 176 (РС) || [https://www.hse.ru/org/persons/192085968 Яшков Даниил Дмитриевич] || [https://t.me/arcstranger  Николай Пальчиков]
 
|-
 
|-
| Магистратура ФТиАД || [https://www.hse.ru/org/persons/191576735 Чиркова Надежда Александровна] || Першин Максим ||  ||
+
| Магистратура ФТиАД || [https://www.hse.ru/org/persons/? Рысьмятова Анастасия Александровна] || [https://t.me/oleg_top Олег Дешеулин]
 
|-
 
|-
 
|}
 
|}
Строка 63: Строка 67:
 
В курсе предусмотрено несколько форм контроля знания:
 
В курсе предусмотрено несколько форм контроля знания:
 
* Самостоятельные работы на семинарах, проверяющие знание основных фактов с лекций
 
* Самостоятельные работы на семинарах, проверяющие знание основных фактов с лекций
* Теоретические домашние работы и их защиты
 
 
* Практические домашние работы на Python
 
* Практические домашние работы на Python
* Контрольные работы
+
* Письменная контрольная работа
 
* Письменный экзамен
 
* Письменный экзамен
  
 
Итоговая оценка вычисляется на основе оценки за работу в семестре и оценки за экзамен:
 
Итоговая оценка вычисляется на основе оценки за работу в семестре и оценки за экзамен:
  
O<sub>итоговая</sub> = 0.7 * O<sub>накопленная</sub> + 0.3 * О<sub>экз</sub>
+
Итог = Округление(0.15 * ПР + 0.4 * ДЗ + 0.15 * КР + 0.3 * Э)
  
Оценка за работу в семестре вычисляется по формуле
+
ПР — средняя оценка за самостоятельные работы на семинарах
  
O<sub>накопленная</sub> = 0.1 * O<sub>самостоятельные</sub> + 0.4 * О<sub>практические дз</sub> + 0.3 * О<sub>теоретические дз</sub> + 0.2 * О<sub>контрольные</sub>
+
ДЗ — средняя оценка за практические домашние работы на Python
  
Оценка за самостоятельную работу вычисляется как среднее по всем самостоятельным, оценка за домашнюю работу — как среднее по всем практическим заданиям и соревнованиям.
+
КР — оценка за контрольную работу
 +
 
 +
Э оценка за экзамен
 +
 
 +
Округление арифметическое.
  
 
=== Правила сдачи заданий ===
 
=== Правила сдачи заданий ===
  
Дедлайны по всем домашним заданиям являются жёсткими, то есть после срока работа не принимаются.
+
За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются. Даже при опоздании на одну секунду. Сдавайте заранее. Есть исключения, о них написано ниже.
  
 
При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента.
 
При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента.
  
При наличии уважительной причины пропущенную проверочную можно написать позднее, а дедлайн по домашнему заданию может быть перенесён (при этом получить дополнительные баллы за призовые места на конкурсе можно только при участии в общий срок). Дедлайн по домашнему заданию переносится на количество дней, равное продолжительности уважительной причины. Решение о том, является ли причина уважительной, принимает исключительно учебный офис.
+
При наличии уважительной причины пропущенную проверочную можно написать позднее, а дедлайн по домашнему заданию может быть перенесён. Дедлайн по домашнему заданию переносится на количество дней, равное продолжительности уважительной причины. Решение о том, является ли причина уважительной, принимает исключительно учебный офис.
  
 
== Лекции ==
 
== Лекции ==
  
'''Лекция 1''' (1 сентября). Введение в машинное обучение. Основные термины, постановки задач и примеры применения. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/lecture-notes/lecture01-intro.pdf Конспект]]
+
Ко всем конспектам на GitHub есть исходники. Исправления и дополнения всячески приветствуются!
  
'''Лекция 2''' (8 сентября). Линейная регрессия. Метрики качества регрессии. Градиентный спуск и способы оценивания градиента. Продвинутые градиентные методы. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/lecture-notes/lecture02-linregr.pdf Конспект]]
+
'''Лекция 1''' (6 сентября). Введение в машинное обучение. Основные термины, постановки задач и примеры применения. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture01-intro.pdf Конспект]]
  
'''Лекция 3''' (15 сентября). Переобучение и регуляризация. Разреженные линейные модели. Квантильная регрессия. Подготовка признаков. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/lecture-notes/lecture03-linregr.pdf Конспект]]
+
'''Лекция 2''' (13 сентября). Линейная регрессия. Метрики качества регрессии. Градиентный спуск и способы оценивания градиента. Продвинутые градиентные методы. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture02-linregr.pdf Конспект]]
  
'''Лекция 4''' (22 сентября). Линейная классификация. Отступ и верхние оценки на пороговую функцию потерь. Метрики качества классификации. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/lecture-notes/lecture04-linclass.pdf Конспект]]
+
'''Лекция 3''' (20 сентября). Переобучение и регуляризация. Разреженные линейные модели. Квантильная регрессия. Подготовка признаков. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture03-linregr.pdf Конспект]]
  
'''Лекция 5''' (29 сентября). Линейная классификация. Логистическая регрессия и оценки вероятности классов. Метод опорных векторов. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/lecture-notes/lecture05-linclass.pdf Конспект]]
+
'''Лекция 4''' (27 сентября). Линейная классификация. Отступ и верхние оценки на пороговую функцию потерь. Метрики качества классификации. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture04-linclass.pdf Конспект]]
 +
 
 +
'''Лекция 5''' (4 октября). Линейная классификация. Логистическая регрессия и оценки вероятности классов. Метод опорных векторов. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture05-linclass.pdf Конспект]]
 +
 
 +
'''Лекция 6''' (11 октября). Многоклассовая классификация, сведение к бинарным задачам. Многоклассовая логистическая регрессия. Классификация с пересекающимися классами. Метрики качества многоклассовой классификации. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture06-linclass.pdf Конспект]]
 +
 
 +
'''Лекция 7''' (18 октября). Решающие деревья. Жадный алгоритм построения. Выбор лучшего разбиения с помощью критерия информативности. Критерии информативности для регрессии и классификации. Учёт пропусков в деревьях. Решающие деревья и категориальные признаки. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture07-trees.pdf Конспект]]
 +
 
 +
'''Лекция 8''' (1 ноября). Бутстрап и бэггинг. Разложение ошибки на смещение и разброс (bias-variance decomposition). Случайный лес. Вычисление расстояний с помощью лесов. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture08-ensembles.pdf Конспект]]
 +
 
 +
'''Лекция 9''' (8 ноября). Градиентный бустинг. Регуляризация. Особенности бустинга над деревьями. Взвешивание объектов в градиентном бустинге. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture09-ensembles.pdf Конспект]]
 +
 
 +
'''Лекция 10''' (15 ноября). Оптимизация второго порядка в градиентном бустинге. Регуляризация деревьев. XGBoost. Стекинг. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture10-ensembles.pdf Конспект]]
 +
 
 +
'''Лекция 11''' (22 ноября). Обучение без учителя. Кластеризация: метрики качества, K-Means, иерархический и графовый подходы. Визуализация, t-SNE. Обучение представлений. word2vec. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture11-unsupervised.pdf Конспект]]
 +
 
 +
'''Лекция 12''' (29 ноября). Метод главных компонент, его связь с матричными разложениями. Рекомендательные системы: постановка задачи, коллаборативные методы, матричные разложения, контентные методы. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture12-factorizations.pdf Конспект]]
  
 
== Семинары ==
 
== Семинары ==
  
'''Семинар 1'''. Постановки задач, примеры применения, инструменты. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/seminars/sem01-intro.ipynb Ноутбук с семинара]] [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/seminars/sem01-tools.ipynb Ноутбук для самостоятельного изучения]]
+
'''Семинар 1.''' Области применения машинного обучения. Инструменты data scientist'а. Pandas и разведочный анализ данных. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem01-intro.ipynb Ноутбук]]
  
'''Семинар 2'''. Векторное дифференцирование. Линейная регрессия, аналитическое и численное решение. Свойства градиента. Сравнение градиентного спуска и стохастического градиентного спуска. Scikit-learn. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/seminars/sem02-linregr-part1.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/seminars/sem02-linregr-part2.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/homeworks-theory/homework-theory-01-linregr.pdf Домашнее задание]]
+
'''Семинар 2.''' Линейная регрессия. Библиотека scikit-learn. Валидация моделей. Работа с категориальными признаками. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem02-sklearn-linreg.ipynb Ноутбук]]
  
'''Семинар 3'''. Предобработка данных для линейных моделей. Функции потерь в линейной регрессии. Вероятностный взгляд на линейную регрессию. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/seminars/sem03-linregr.ipynb Notebook]] [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/homeworks-theory/homework-theory-02-linregr.pdf Домашнее задание]]
+
'''Семинар 3.''' Градиент и его свойства. Векторное дифференцирование. Градиентый спуск, его модификации, практические аспекты. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem03-linregr-part1.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem03-linregr-part2.ipynb Ноутбук]]
  
'''Семинар 4'''. Метрики качества классификации. ROC-кривая, алгоритм её построения, AUC-ROC. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/seminars/sem04-linclass-metrics.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/homeworks-theory/homework-theory-03-linclass-metrics.pdf Домашнее задание]]
+
'''Семинар 4.''' Предобработка данных. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem04-features.pdf Конспект]] [[https://nbviewer.jupyter.org/github/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem04-features.ipynb Ноутбук]]
  
'''Семинар 5'''. Оценивание вероятностей классов. Метод опорных векторов. Эквивалентность регуляризации и раннего останова в градиентном спуске. [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/seminars/sem05-linclass.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/homeworks-theory/homework-theory-04-linclass.pdf Домашнее задание]]
+
'''Семинар 5.''' Метрики качества классификации. AUC-ROC и его прямая оптимизация. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem05-linclass-metrics.pdf Конспект]]
 +
 
 +
'''Семинар 6.''' Оценивание вероятностей классов. Квантильная регрессия [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem06-probs-quantile.pdf Конспект]]
 +
 
 +
'''Семинар 7.''' Решающие деревья. Критерии информативности. Гиперпараметры в деревьях. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem07-trees.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem07-trees.ipynb Ноутбук]]
 +
 
 +
'''Семинар 8.''' Разложение ошибки на смещение и разброс. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem08-bvd.pdf Конспект]]
 +
 
 +
'''Семинар 9.''' Градиентный бустинг. Вывод формул для сдвигов. Сравнение со случайным лесом. Деревья и экстраполяция данных. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem09-gbm-part1.pdf Конспект]] [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem09-gbm-part2.ipynb Ноутбук]]
 +
 
 +
'''Семинар 10.''' Современные имплементации градиентного бустинга. Блендинг. Подсчёт важностей признаков в композициях. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem10-gbm.ipynb Ноутбук]]
 +
 
 +
'''Семинар 11.''' K-Means. DBSCAN. Иерархическая кластеризация. Сравнение методов кластеризации. Метод главных компонент. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/seminars/sem11_clustering%2Bpca.ipynb Ноутбук]]
  
 
== Практические задания ==
 
== Практические задания ==
  
'''Задание 1.''' Библиотека numpy и работа с данными.
+
За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются, но есть исключение. В течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна — в этом случае за каждый день просрочки продолжает вычитаться по одному баллу (если не оговорено иное).
  
Дата выдачи: 18.09.2017
+
'''Задание 1.''' Работа с Pandas и Matplotlib.
 +
 +
Мягкий дедлайн: 15.09.2019 23:59.
  
Мягкий дедлайн: 01.10.2017 23:59MSK
+
Жесткий дедлайн: 17.09.2019 23:59.
  
Жесткий дедлайн: 08.10.2017 23:59MSK.
+
[[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/homeworks-practice/homework-practice-01.ipynb Ноутбук с заданием]]
  
За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются.
+
'''Задание 2.''' Exploratory Data Analysis и линейная регрессия.
 +
 +
Мягкий дедлайн: 01.10.2019 23:59.  
  
[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/homeworks-practice/homework-practice-01.ipynb Условие],
+
Жесткий дедлайн: 04.10.2019 23:59 (за каждый день просрочки снимается 2 балла).
[https://github.com/esokolov/ml-course-hse/blob/master/2017-fall/homeworks-practice/homework-practice-01.zip архив с условием и шаблонами],
+
 
[https://official.contest.yandex.ru/contest/5016/problems/ соревнование в Яндекс.Контесте],
+
[[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/homeworks-practice/homework-practice-02.ipynb Ноутбук с заданием]]
[https://contest.yandex.ru/contest/5016/problems/ альтернативная ссылка на соревнование в Яндекс.Контесте].
+
 
 +
'''Задание 3.''' Градиентный спуск своими руками.
 +
 +
Мягкий дедлайн: 15.10.2019 07:59.
 +
 
 +
Жесткий дедлайн: 17.10.2019 23:59.
 +
 
 +
[[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/homeworks-practice/homework-practice-03.ipynb Ноутбук с заданием]]
 +
 
 +
'''Задание 4.''' Метод опорных векторов, категориальные признаки, калибровка предсказаний и отбор признаков.
 +
 +
Мягкий дедлайн: 11.11.2019 07:59.
 +
 
 +
Жесткий дедлайн: 13.11.2019 23:59.
 +
 
 +
[[https://nbviewer.jupyter.org/github/esokolov/ml-course-hse/blob/master/2019-fall/homeworks-practice/homework-practice-04.ipynb Ноутбук с заданием]]
 +
 
 +
'''Задание 5.''' Решающие деревья
 +
 
 +
Мягкий дедлайн: 22.11.2019 1:59
 +
 
 +
Жесткий дедлайн: 23.11.2019 23:59
 +
 
 +
[[https://github.com/esokolov/ml-course-hse/tree/master/2019-fall/homeworks-practice/homework-practice-05 Ноутбук и модуль с заданием]]
 +
 
 +
'''Задание 6.''' Разложение ошибки на смещение и разброс
 +
 
 +
Мягкий дедлайн: 01.12.2019 8:00
 +
 
 +
Жесткий дедлайн: 02.12.2019 23:59 (за каждый день просрочки снимается 0.5 балла)
 +
 
 +
[[https://github.com/esokolov/ml-course-hse/tree/master/2019-fall/homeworks-practice/homework-practice-06.ipynb Ноутбук с заданием]]
 +
 
 +
'''Задание 7.''' Градиентный бустинг
 +
 
 +
Мягкий дедлайн: 16.12.2019 5:59
 +
 
 +
Жесткий дедлайн: 18.12.2019 5:59 (за каждый день просрочки снимается 0.5 балла)
 +
 
 +
[[https://github.com/esokolov/ml-course-hse/tree/master/2019-fall/homeworks-practice/homework-practice-07.ipynb Ноутбук с заданием]]
 +
 
 +
==Теоретические домашние задания==
 +
 
 +
Теоретические ДЗ не проверяются, но задачи из них могут войти в проверочные работы на семинарах.
 +
 
 +
'''Теоретическое домашнее задание 1''': линейная регрессия и векторное дифференцирование [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/homeworks-theory/homework-theory-01-linregr.pdf ссылка]]
 +
 
 +
'''Теоретическое домашнее задание 2''': линейная классификация [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/homeworks-theory/homework-theory-02-linclass.pdf ссылка]]
 +
 
 +
'''Теоретическое домашнее задание 3''': решающие деревья [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/homeworks-theory/homework-theory-03-trees.pdf ссылка]]
 +
 
 +
'''Теоретическое домашнее задание 4''': разложение ошибки на смещение и разброс [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/homeworks-theory/homework-theory-04-bvd.pdf ссылка]]
 +
 
 +
== Соревнования ==
 +
 
 +
===Правила участия и оценивания===
 +
В соревновании по анализу данных вам предлагается по имеющимся данным решить некоторую задачу, оптимизируя указанную метрику, и отправить ответы для заданного тестового множества. Максимальное количество посылок в сутки ограничено (как правило, разрешается сделать 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: Определение категории товара ===
 +
 
 +
'''Соревнование на бонусные баллы, не входит в основную формулу оценки'''
 +
 
 +
Дата выдачи: 9.11.2019
 +
 
 +
Срок окончания соревнования: 11.12.2019 23:59MSK
 +
 
 +
Срок отправки кода: 14.12.2019 23:59MSK
 +
 
 +
Бейзлайн на 4 балла
 +
 
 +
[https://www.kaggle.com/t/78b4150e88c84935b37e550fbb636a4f Ссылка на участие в соревновании]
 +
 
 +
== Бонусы за соревнования ==
 +
 
 +
За успешное участие в соревнованиях по анализу данных могут быть выставлены бонусные баллы, которые можно прибавить к оценке за любое практическое или теоретическое домашнее задание, а также за самостоятельную работу. Под успешным участием понимается попадание в топ-10% мест; если соревнование особо сложное и крупное, может рассматриваться и попадание в топ-20% мест. Конкретное число баллов определяется преподавателями и зависит от сложности соревнования и занятого места. За одно соревнование можно получить не более 5 баллов. Для получения оценки необходимо предоставить краткий отчёт о решении задачи.
 +
 
 +
== Контрольная работа ==
 +
 
 +
Контрольная работа состоится на семинарах 6 декабря (вторая пара).
 +
 
 +
В варианте будут два теоретических вопроса и две задачи (возможно, будут также дополнительные задачи на бонусные баллы, для получения максимальной оценки за контрольную их решать не потребуется). Теоретические вопросы будут затрагивать материалы всех лекций и семинаров по темам до градиентного бустинга включительно. Основные задачи будут затрагивать все темы, которые затрагивались в теоретических домашних заданиях (линейные модели, деревья, разложение ошибки на смещение и разброс).
 +
 
 +
[https://docs.google.com/document/d/1xSaTtFqXkj1hG0Da7lX8GkGn7kaqAxWGYflLLvKf5z0/edit?usp=sharing Вопросы для подготовки]
 +
 
 +
== Экзамен ==
  
 
== Полезные материалы ==
 
== Полезные материалы ==
Строка 143: Строка 290:
  
 
== Страницы предыдущих лет ==
 
== Страницы предыдущих лет ==
 +
 +
[[Машинное_обучение_1/2018_2019 | 2018/2019 учебный год]]
 +
 +
[[Машинное_обучение_1/2017_2018 | 2017/2018 учебный год]]
  
 
[[Машинное_обучение_1/2016_2017 | 2016/2017 учебный год]]
 
[[Машинное_обучение_1/2016_2017 | 2016/2017 учебный год]]

Текущая версия на 01:21, 14 декабря 2019

О курсе

borderless

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

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

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

Лекции проходят по пятницам, 12:10 - 13:30, ауд. R404 (Покровский бульвар, 11).




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

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

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

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

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

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

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

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

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

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

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

Семинары

Группа Преподаватель Учебный ассистент
171 (МОП) Зиннурова Эльвира Альбертовна Виктор Куканов
172 (МОП) Каюмов Эмиль Марселевич Соня Дымченко
173 (ТИ) Хрушков Павел Вадимович Роман Соколов
174 (АДИС) Кохтев Вадим Михайлович Евгений Алаев
175 (РС) Волохова Александра Константиновна Ярослав Пудяков
176 (РС) Яшков Даниил Дмитриевич Николай Пальчиков
Магистратура ФТиАД Рысьмятова Анастасия Александровна Олег Дешеулин

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лекции

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

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

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

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

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

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

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

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

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

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

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

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

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

Семинары

Семинар 1. Области применения машинного обучения. Инструменты data scientist'а. Pandas и разведочный анализ данных. [Ноутбук]

Семинар 2. Линейная регрессия. Библиотека scikit-learn. Валидация моделей. Работа с категориальными признаками. [Ноутбук]

Семинар 3. Градиент и его свойства. Векторное дифференцирование. Градиентый спуск, его модификации, практические аспекты. [Конспект] [Ноутбук]

Семинар 4. Предобработка данных. [Конспект] [Ноутбук]

Семинар 5. Метрики качества классификации. AUC-ROC и его прямая оптимизация. [Конспект]

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

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

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

Семинар 9. Градиентный бустинг. Вывод формул для сдвигов. Сравнение со случайным лесом. Деревья и экстраполяция данных. [Конспект] [Ноутбук]

Семинар 10. Современные имплементации градиентного бустинга. Блендинг. Подсчёт важностей признаков в композициях. [Ноутбук]

Семинар 11. K-Means. DBSCAN. Иерархическая кластеризация. Сравнение методов кластеризации. Метод главных компонент. [Ноутбук]

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

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

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

Мягкий дедлайн: 15.09.2019 23:59.

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

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

Задание 2. Exploratory Data Analysis и линейная регрессия.

Мягкий дедлайн: 01.10.2019 23:59.

Жесткий дедлайн: 04.10.2019 23:59 (за каждый день просрочки снимается 2 балла).

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

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

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

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

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

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

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

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

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

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

Мягкий дедлайн: 22.11.2019 1:59

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

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

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

Мягкий дедлайн: 01.12.2019 8:00

Жесткий дедлайн: 02.12.2019 23:59 (за каждый день просрочки снимается 0.5 балла)

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

Задание 7. Градиентный бустинг

Мягкий дедлайн: 16.12.2019 5:59

Жесткий дедлайн: 18.12.2019 5:59 (за каждый день просрочки снимается 0.5 балла)

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

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

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

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

Соревнование 1: Определение категории товара

Соревнование на бонусные баллы, не входит в основную формулу оценки

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

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

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

Бейзлайн на 4 балла

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

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

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

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

Контрольная работа состоится на семинарах 6 декабря (вторая пара).

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

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

Экзамен

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

Книги

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

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

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

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

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

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