Машинное обучение 1 — различия между версиями
(→Практические задания: Опубликовано задание 6) |
Esokolov (обсуждение | вклад) (→Лекции) |
||
(не показано 46 промежуточных версии 10 участников) | |||
Строка 9: | Строка 9: | ||
'''Лектор:''' [http://www.hse.ru/staff/esokolov Соколов Евгений Андреевич] | '''Лектор:''' [http://www.hse.ru/staff/esokolov Соколов Евгений Андреевич] | ||
− | Лекции проходят по пятницам, | + | Лекции проходят по пятницам, 11:10 - 12:30, в zoom (https://zoom.us/j/99855378374). |
Строка 18: | Строка 18: | ||
=== Полезные ссылки === | === Полезные ссылки === | ||
− | [https://www.hse.ru/ba/ami/courses/ | + | [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] | ||
Строка 26: | Строка 26: | ||
Почта для сдачи домашних заданий (на самом деле задания сдаются в AnyTask, но если он не работает, то присылайте на почту): hse.cs.ml+<номер группы>@gmail.com (например, hse.cs.ml+171@gmail.com) | Почта для сдачи домашних заданий (на самом деле задания сдаются в AnyTask, но если он не работает, то присылайте на почту): hse.cs.ml+<номер группы>@gmail.com (например, hse.cs.ml+171@gmail.com) | ||
− | Канал в telegram для объявлений: https://t.me/joinchat/ | + | Канал в telegram для объявлений: https://t.me/joinchat/AAAAAFfULjTHLkANF7_vXQ |
− | Чат в telegram для обсуждений (предназначение чата до конца не ясно, вопросы может быть правильнее задавать в чатах групп): https://t.me/joinchat/ | + | Чат в telegram для обсуждений (предназначение чата до конца не ясно, вопросы может быть правильнее задавать в чатах групп): https://t.me/joinchat/A5rlQBPIKyQ__z33y7hL9g |
− | Ссылка на курс в Anytask: https://anytask.org/course/ | + | Ссылка на курс в Anytask: https://anytask.org/course/740 |
− | [https://docs.google.com/spreadsheets/d/ | + | [https://docs.google.com/spreadsheets/d/1vJYgN5-cSNeBtpxXJIT1ZqBJdx3pRTsQGF1NqY0ac5Q/edit?usp=sharing Таблица с оценками] |
Оставить отзыв на курс: [https://goo.gl/forms/5CddG0gc75VZvqi52 форма] | Оставить отзыв на курс: [https://goo.gl/forms/5CddG0gc75VZvqi52 форма] | ||
Строка 45: | Строка 45: | ||
! Группа !! Преподаватель !! Учебный ассистент | ! Группа !! Преподаватель !! Учебный ассистент | ||
|- | |- | ||
− | | | + | | 181 (МОП) || [https://www.hse.ru/org/persons/165212870 Зиннурова Эльвира Альбертовна] || [https://t.me/Bitchert Биршерт Леша], [https://t.me/ashabalin99 Шабалин Саша] |
|- | |- | ||
− | | | + | | 182 (МОП) || [https://www.hse.ru/staff/esokolov Соколов Евгений Андреевич] || [https://t.me/Kirili4ik Гельван Кирилл], [https://t.me/isadrtdinov Ильдус Садртдинов] |
|- | |- | ||
− | | | + | | 183 (ТИ) || [https://www.hse.ru/org/persons/190919554 Трошин Сергей Дмитриевич] || [https://t.me/treacker Шабалин Евгений] |
|- | |- | ||
− | | | + | | 184 (АДИС) || [https://www.hse.ru/org/persons/? Кохтев Вадим Михайлович] || [https://t.me/sergevkim Ким Сергей], [https://t.me/planum Гусев Андрей] |
|- | |- | ||
− | | | + | | 185 (РС) || [https://www.hse.ru/org/persons/209813459 Каюмов Эмиль Марселевич] || [https://t.me/arinaruck Рак Арина] |
|- | |- | ||
− | | | + | | 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 Анищенко Илья] | ||
|- | |- | ||
|} | |} | ||
Строка 66: | Строка 68: | ||
В курсе предусмотрено несколько форм контроля знания: | В курсе предусмотрено несколько форм контроля знания: | ||
− | * Самостоятельные работы на семинарах, проверяющие знание основных фактов с лекций | + | * Самостоятельные работы на семинарах, проверяющие знание основных фактов с лекций и семинаров |
* Практические домашние работы на Python | * Практические домашние работы на Python | ||
* Письменная контрольная работа | * Письменная контрольная работа | ||
Строка 87: | Строка 89: | ||
=== Правила сдачи заданий === | === Правила сдачи заданий === | ||
− | За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются. Даже при опоздании на одну секунду. Сдавайте заранее. | + | За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются. Даже при опоздании на одну секунду. Сдавайте заранее. Есть исключение: в течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна — в этом случае за каждый день просрочки продолжает вычитаться по одному баллу (если не оговорено иное). |
При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента. | При обнаружении плагиата оценки за домашнее задание обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат. Следует помнить, что при повторном списывании деканат имеет право отчислить студента. | ||
Строка 97: | Строка 99: | ||
Ко всем конспектам на GitHub есть исходники. Исправления и дополнения всячески приветствуются! | Ко всем конспектам на GitHub есть исходники. Исправления и дополнения всячески приветствуются! | ||
− | '''Лекция 1''' ( | + | '''Лекция 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 Запись лекции]] |
− | '''Лекция 2''' ( | + | '''Лекция 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 Запись лекции]] |
− | '''Лекция 3''' ( | + | '''Лекция 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 Запись лекции]] |
− | '''Лекция 4''' ( | + | '''Лекция 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 Запись лекции]] |
− | '''Лекция 5''' ( | + | '''Лекция 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 Ещё одна попытка объяснить площади под кривыми]] |
− | '''Лекция 6''' ( | + | '''Лекция 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 Дополнительная лекция]] |
− | '''Лекция 7''' ( | + | '''Лекция 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 Запись лекции]] |
− | '''Лекция 8''' ( | + | '''Лекция 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 Запись лекции]] |
− | '''Лекция 9''' ( | + | '''Лекция 9''' (6 ноября). Бутстрап и бэггинг. Разложение ошибки на смещение и разброс (bias-variance decomposition). Случайный лес. Вычисление расстояний с помощью лесов. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture08-ensembles.pdf Конспект]] |
− | '''Лекция 10''' ( | + | '''Лекция 10''' (13 ноября). Градиентный бустинг. Регуляризация. Особенности бустинга над деревьями. Взвешивание объектов в градиентном бустинге. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture09-ensembles.pdf Конспект]] |
− | + | '''Лекция 11''' (20 ноября). Оптимизация второго порядка в градиентном бустинге. Регуляризация деревьев. XGBoost. Стекинг. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture10-ensembles.pdf Конспект]] | |
− | ''' | + | '''Лекция 12''' (27 ноября). Обучение без учителя. Кластеризация: метрики качества, K-Means, иерархический и графовый подходы. Визуализация, t-SNE. Обучение представлений. word2vec. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture11-unsupervised.pdf Конспект]] |
− | ''' | + | '''Лекция 13''' (4 декабря). Метод главных компонент, его связь с матричными разложениями. Рекомендательные системы: постановка задачи, коллаборативные методы, матричные разложения, контентные методы. [[https://github.com/esokolov/ml-course-hse/blob/master/2019-fall/lecture-notes/lecture12-factorizations.pdf Конспект]] |
− | + | == Семинары == | |
− | + | ||
− | + | ||
− | '''Семинар | + | '''Семинар 1'''. Разведочный анализ данных в Python. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem01-pandas.ipynb Ноутбук]] |
− | '''Семинар | + | '''Семинар 2'''. sklearn и особенности подготовки данных для линейных моделей. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem02-sklearn-linregr.ipynb Ноутбук]] |
− | '''Семинар | + | '''Семинар 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 Задачи на векторное дифференцирование]] |
− | '''Семинар | + | '''Семинар 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 Ноутбук]] |
− | '''Семинар | + | '''Семинар 5'''. AUC-ROC: алгоритм построения, интерпретации. Прямая оптимизация AUC-ROC. [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/seminars/sem05-linclass-metrics.pdf Конспект]] |
== Практические задания == | == Практические задания == | ||
− | За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются. В течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна. | + | За каждый день просрочки после мягкого дедлайна снимается 1 балл. После жёсткого дедлайна работы не принимаются, но есть исключение. В течение семестра каждый студент может не более 2 раз сдать задание после жёсткого дедлайна — в этом случае за каждый день просрочки продолжает вычитаться по одному баллу (если не оговорено иное). |
− | '''Задание 1.''' | + | '''Задание 1.''' Pandas и распределение студентов ПМИ по элективам. |
− | Мягкий дедлайн: | + | Мягкий дедлайн: 21.09.2020 04:59. |
− | Жесткий дедлайн: | + | Жесткий дедлайн: 24.09.2020 23:59. |
− | [[https://github.com/esokolov/ml-course-hse/blob/master/ | + | [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-practice/homework-practice-01-pandas.ipynb Ноутбук с заданием]] |
− | '''Задание 2.''' | + | '''Задание 2.''' Разведочный анализ данных, линейная регрессия и разработка признаков. |
− | Мягкий дедлайн: | + | Мягкий дедлайн: 05.10.2020 02:59. |
− | Жесткий дедлайн: | + | Жесткий дедлайн: 08.10.2020 23:59. |
− | [[https://github.com/esokolov/ml-course-hse/blob/master/ | + | [[https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/homeworks-practice/homework-practice-02-linregr.ipynb Ноутбук с заданием]] |
− | '''Задание 3.''' Градиентный спуск своими руками. | + | '''Задание 3.''' Градиентный спуск и линейная регрессия своими руками. |
− | Мягкий дедлайн: | + | Мягкий дедлайн: 19.10.2020 01:59. |
− | Жесткий дедлайн: | + | Жесткий дедлайн: 22.10.2020 01:59. |
− | + | [[https://github.com/esokolov/ml-course-hse/tree/master/2020-fall/homeworks-practice/homework-practice-03-gd Папка задания]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | [[https://github.com/esokolov/ml-course-hse/tree/master/ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
==Теоретические домашние задания== | ==Теоретические домашние задания== | ||
Строка 191: | Строка 169: | ||
Теоретические ДЗ не проверяются, но задачи из них могут войти в проверочные работы на семинарах. | Теоретические ДЗ не проверяются, но задачи из них могут войти в проверочные работы на семинарах. | ||
− | ''' | + | '''Задание 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 Условие]] |
== Соревнования == | == Соревнования == | ||
Строка 226: | Строка 200: | ||
3. Если вы отправляете код с использованием другого языка программирования, в том же письме направьте нам инструкцию по его запуску с тем, чтобы получить тот же файл с ответами. | 3. Если вы отправляете код с использованием другого языка программирования, в том же письме направьте нам инструкцию по его запуску с тем, чтобы получить тот же файл с ответами. | ||
− | В случае отсутствия кода, воспроизводящего результат, в установленный срок студенту выставляется 0 в качестве оценки за соревнование. Студенты, попавшие в топ-5 согласно приватному лидерборду, смогут получить бонусные баллы, если в течение недели после окончания соревнования пришлют на почту курса отчет о получении решения, фигурирующего в приватном лидерборде. Если не оговорено иное, использовать любые внешние данные в соревнованиях '''запрещено'''. | + | В случае отсутствия кода, воспроизводящего результат, в установленный срок студенту выставляется 0 в качестве оценки за соревнование. Студенты, попавшие в топ-5 согласно приватному лидерборду, смогут получить бонусные баллы, если в течение недели после окончания соревнования пришлют на почту курса отчет о получении решения, фигурирующего в приватном лидерборде. Если не оговорено иное, использовать любые внешние данные в соревнованиях '''запрещено'''. Под внешними данными понимаются размеченные данные, где разметка имеет прямое отношение к решаемой задаче. Грубо говоря, сборник текстов с википедии не считается внешними данными. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== Бонусы за соревнования == | == Бонусы за соревнования == | ||
Строка 248: | Строка 208: | ||
== Контрольная работа == | == Контрольная работа == | ||
− | + | [https://docs.google.com/document/d/1xSaTtFqXkj1hG0Da7lX8GkGn7kaqAxWGYflLLvKf5z0/edit?usp=sharing Вопросы для подготовки с прошлого года] | |
− | + | == Экзамен == | |
− | [https://docs.google.com/document/d/ | + | [[https://docs.google.com/document/d/1Kyk5YU5gakj_LjSWlHJTwyg7PU3U9PCaaaYliOqKSfI/edit?usp=sharing Вопросы для подготовки с прошлого года]] |
− | + | ||
− | + | ||
== Полезные материалы == | == Полезные материалы == | ||
Строка 270: | Строка 228: | ||
* [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/2018_2019 | 2018/2019 учебный год]] |
Версия 12:49, 30 октября 2020
Содержание
О курсе
Курс читается для студентов 3-го курса ПМИ ФКН ВШЭ в 1-2 модулях.
Проводится с 2016 года.
Лектор: Соколов Евгений Андреевич
Лекции проходят по пятницам, 11:10 - 12:30, в zoom (https://zoom.us/j/99855378374).
Полезные ссылки
Репозиторий с материалами на GitHub
Почта для сдачи домашних заданий (на самом деле задания сдаются в 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. [Конспект]
Практические задания
За каждый день просрочки после мягкого дедлайна снимается 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.
Теоретические домашние задания
Теоретические ДЗ не проверяются, но задачи из них могут войти в проверочные работы на семинарах.
Задание 1. Матрично-векторное дифференцирование [Условие]
Задание 2. Линейная регрессия [Условие]
Соревнования
Правила участия и оценивания
В соревновании по анализу данных вам предлагается по имеющимся данным решить некоторую задачу, оптимизируя указанную метрику, и отправить ответы для заданного тестового множества. Максимальное количество посылок в сутки ограничено (как правило, разрешается сделать 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 согласно приватному лидерборду, смогут получить бонусные баллы, если в течение недели после окончания соревнования пришлют на почту курса отчет о получении решения, фигурирующего в приватном лидерборде. Если не оговорено иное, использовать любые внешние данные в соревнованиях запрещено. Под внешними данными понимаются размеченные данные, где разметка имеет прямое отношение к решаемой задаче. Грубо говоря, сборник текстов с википедии не считается внешними данными.
Бонусы за соревнования
За успешное участие в соревнованиях по анализу данных могут быть выставлены бонусные баллы, которые можно прибавить к оценке за любое практическое или теоретическое домашнее задание, а также за самостоятельную работу. Под успешным участием понимается попадание в топ-10% мест; если соревнование особо сложное и крупное, может рассматриваться и попадание в топ-20% мест. Конкретное число баллов определяется преподавателями и зависит от сложности соревнования и занятого места. За одно соревнование можно получить не более 5 баллов. Для получения оценки необходимо предоставить краткий отчёт о решении задачи.
Контрольная работа
Вопросы для подготовки с прошлого года
Экзамен
[Вопросы для подготовки с прошлого года]
Полезные материалы
Книги
- Hastie T., Tibshirani R, Friedman J. The Elements of Statistical Learning (2nd edition). Springer, 2009.
- Bishop C. M. Pattern Recognition and Machine Learning. Springer, 2006.
- Mohri M., Rostamizadeh A., Talwalkar A. Foundations of Machine Learning. MIT Press, 2012.
- Murphy K. Machine Learning: A Probabilistic Perspective. MIT Press, 2012.
- Mohammed J. Zaki, Wagner Meira Jr. Data Mining and Analysis. Fundamental Concepts and Algorithms. Cambridge University Press, 2014.
- Willi Richert, Luis Pedro Coelho. Building Machine Learning Systems with Python. Packt Publishing, 2013.
Курсы по машинному обучению и анализу данных
- Курс по машинному обучению К.В. Воронцова
- Видеозаписи лекций курса Школы Анализа Данных, К.В. Воронцов
- Coursera: Машинное обучение и анализ данных (специализация)
- Coursera: Введение в машинное обучение, К.В. Воронцов
- Введение в машинное обучение (онлайн-курс НИУ ВШЭ)