Методы машинного обучения (Прикладная политология) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
 
(не показаны 34 промежуточные версии 2 участников)
Строка 56: Строка 56:
 
'''Лекция 1.''' (29 октября) Введение в машинное обучение, основные термины. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture01-intro.pdf Слайды]]
 
'''Лекция 1.''' (29 октября) Введение в машинное обучение, основные термины. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture01-intro.pdf Слайды]]
  
'''Лекция 2.''' (29 октября) Типы задач и признаков. Понятие вектора, матрицы. Гипотеза компактности, метод k ближайших соседей. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture02-intro.pdf Слайды]]
+
'''Лекция 2.''' (5 ноября) Типы задач и признаков. Понятие вектора, матрицы. Гипотеза компактности, метод k ближайших соседей. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture02-intro.pdf Слайды]]
  
'''Лекция 1.''' (29 октября) Основные понятия линейной алгебры. Оценки обобщающей способности. Метод k ближайших соседей. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture03-knn.pdf Слайды]]
+
'''Лекция 3.''' (12 ноября) Основные понятия линейной алгебры. Оценки обобщающей способности. Метод k ближайших соседей. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture03-knn.pdf Слайды]]
 +
 
 +
'''Лекция 4.''' (19 ноября) Линейная регрессия. Произведение матриц, производная, градиент, экстремумы. Основные понятия линейной алгебры. Оценки обобщающей способности. Метод k ближайших соседей. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture04-linreg.pdf Слайды]]
 +
 
 +
'''Лекция 5.''' (26 ноября) Основные понятия линейной алгебры. Оценки обобщающей способности. Метод k ближайших соседей. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture05-linreg.pdf Слайды]]
 +
 
 +
'''Лекция 6.''' (3 декабря) Линейная классификация. Пороговая функция потерь, верхние оценки. Логистическая регрессия. предсказание вероятностей. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture06-linclass.pdf Слайды]]
 +
 
 +
'''Лекция 7.''' (10 декабря) Метрики оценки качества регрессии и классификации. ROC- и PR-кривые. [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture07-quality.pdf Слайды]]
 +
 
 +
'''Лекция 8.''' (17 декабря) Консультация по пройденному материалу.
 +
 
 +
'''Лекция 9.''' (14 января) Консультация по пройденному материалу.
 +
 
 +
'''Лекция 10.''' (21 января)  Консультация по пройденному материалу. Гиперпараметры, многоклассовая классификация.  [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture10-hyper.pdf Слайды]]
 +
 
 +
'''Лекция 11.''' (28 января)  Решающие деревья.  [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture11-trees.pdf Слайды]]
 +
 
 +
'''Лекция 12.''' (4 февраля)  Случайные леса.  [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture12-ensembles.pdf Слайды]]
 +
 
 +
'''Лекция 13.''' (11 февраля) Градиентный бустинг.  [[https://github.com/brainylyasha/ml-politology-course/blob/master/lecture-notes/lecture13-ensembles.pdf Слайды]]
  
 
== Семинары ==
 
== Семинары ==
Строка 69: Строка 89:
  
 
'''Семинар 4''' (19 ноября) Sklearn. Метрические методы. Подбор гиперпараметра KNN [[https://github.com/brainylyasha/ml-politology-course/blob/master/seminars/sem04-sklearn-knn.ipynb Гитхаб]], [[https://colab.research.google.com/drive/1XE_EUG5VixI2qnuQ0Nh3jx0uxQzEVejm Колаб]].
 
'''Семинар 4''' (19 ноября) Sklearn. Метрические методы. Подбор гиперпараметра KNN [[https://github.com/brainylyasha/ml-politology-course/blob/master/seminars/sem04-sklearn-knn.ipynb Гитхаб]], [[https://colab.research.google.com/drive/1XE_EUG5VixI2qnuQ0Nh3jx0uxQzEVejm Колаб]].
 +
 +
'''Семинар 5''' (26 ноября) Операции с векторами и матрицами. Производные [[https://colab.research.google.com/drive/1-FD9ToyUMSjwohv5FE2iALUK5IYtrk54 Колаб]].
 +
 +
'''Семинар 6''' (3 декабря) Градиентный спуск. Линейная регрессия [[https://colab.research.google.com/drive/1CHHVM1cFSrFcul41wMvstDt2xvzinzIP Колаб]].
 +
 +
'''Семинар 7''' (10 декабря) Линейные классификаторы [[https://colab.research.google.com/drive/15xjatRV0cq2mV4zQLjWZz8Wz16dLmq9M Колаб]].
 +
 +
'''Семинар 8''' (17 декабря) Метрики качества [[https://colab.research.google.com/drive/1J-HjEtM2gBPE5CIETOKIRrfsRGrJpWDp Колаб]].
 +
 +
'''Семинар 11''' (29 января) Работа с текстовыми данными [[https://colab.research.google.com/drive/1FXFUrgWyF6mA6wOjQtZQk8ybE5360pW0 Колаб]]
 +
 +
'''Семинар 12''' (12 февраля) Деревья решений [[https://colab.research.google.com/drive/199dPWnwB2bNooA-y2ViFfSIX5as5rJb_ Колаб]]
 +
 +
'''Семинар 13''' (19 февраля) Бэггинг и бустинг [[https://colab.research.google.com/drive/11qNhrgEauW_-mvOWEzW3irXXMUi2l9yi Колаб]] [[http://arogozhnikov.github.io/2016/06/24/gradient_boosting_explained.html Визуализации]]
 +
 +
'''Семинар 14''' (2 марта) Бустинг [[https://colab.research.google.com/drive/1SQINZqYvRL03EkjFflZ7Lv7f15eOdNXn Колаб]]
 +
 +
'''Семинар 15''' (16 марта) Кластеризация и методы понижения размерности [[https://colab.research.google.com/drive/1WZaUGGJx3C4h2DVY1Snrt-FDKFkkm-1k Колаб]] [[https://docs.google.com/forms/d/e/1FAIpQLSdd02BX3oszwioKiuVNy-hEg5PsDMIvQhX7Z_KHExC5fvjduA/viewform Проверочная]]
 +
 +
'''Семинар 16''' (23 марта) Нейронные сети [[https://colab.research.google.com/drive/1V1Omy__qtvAFFG0Pxm9-YpSsb_eigga- Колаб]]
  
 
== Практические задания ==
 
== Практические задания ==
 +
 +
'''ДЗ 1''' (до 23 декабря) Задачи машинного обучения. Pandas и Matplotlib [[https://github.com/brainylyasha/ml-politology-course/blob/master/homeworks/hw1_ml_applied_pol.ipynb GitHub]]
 +
 +
'''ДЗ 2''' (до 22 февраля) Логистическая регрессия. [[https://github.com/brainylyasha/ml-politology-course/blob/master/homeworks/hw2_ml_applied_pol.ipynb GitHub]]
 +
 +
'''ДЗ 3''' (до 20 марта) Случайный лес. [[https://github.com/brainylyasha/ml-politology-course/blob/master/homeworks/hw3-random-forest.ipynb GitHub]], [[https://colab.research.google.com/drive/1dc5rbNE49MsV-K7oTaz0T4fD74pxqSM9 Колаб]]
 +
 +
== Проект ==
 +
 +
 +
'''Дедлайн''': 23:59MSK 15.03.2020
 +
 +
 +
Проект представляет собой некоторую задачу, которую нужно поставить и решить при помощи машинного обучения. Результатом выполнения проекта является архив с Jupyter-тетрадью и всеми необходимыми дополнительными файлами. Тетрадь должна представлять собой полноценный отчет, включающий как развернутые словесные описания датасета, задачи и выполняемых действий, так и код, выполняющий необходимые преобразования.
 +
 +
Тетрадь должна включать в себя следующие этапы решения задачи:
 +
 +
'''1. Получение обучающей выборки в табличном виде''' (1 балл)
 +
 +
В рамках этого этапа можно как найти некоторые готовые табличные данные, так и получить данные самостоятельно из некоторого источника при помощи парсинга, однако во втором случае студенту может быть начислено до 2 бонусных баллов за проект. Ограничение на данные — в выборке должно присутствовать не менее 2000 различных объектов. Данные с меньшим количеством объектов также можно рассмотреть, но датасет должен быть согласован с преподавателями.
 +
 +
'''2. Постановка задачи''' (1 балл)
 +
 +
Этот этап включает в себя определение того, что в задаче является объектами и ответами, а также определение итоговой метрики качества в задаче.
 +
 +
'''3. Визуализация''' (3 балла)
 +
 +
Минимальный объем работ в рамках этого этапа — изучить зависимость целевой переменной от признаков в вашей задаче, найти наиболее значимые и незначимые признаки и обосновать с точки зрения здравого смысла, почему они являются таковыми. В процессе визуализации могут быть найдены и другие интересные зависимости, которые также стоит отразить в работе, за особо интересные могут быть начислены бонусные баллы.
 +
 +
'''4. Построение модели''' (4 балла)
 +
 +
Следующий этап — построение модели, необходимо использовать хотя бы 2 метода из пройденных в курсе для обучения модели (а также не забыть для каждой подобрать гиперпараметры). За построение моделей с выдающимся качеством на тестовой выборке также могут быть начислены бонусные баллы.
 +
 +
'''5. Оценка качества''' (1 балл)
 +
 +
Последний этап — оценка качества моделей из п. 4 при помощи метрики качества, выбранной в п. 2. Не забудьте, что качество должно оцениваться на выборке, не используемой при обучении, поэтому необходимо с самого начала «отрезать» тестовую выборку для этого пункта.
 +
 +
После выбора данных (вне зависимости от того, планируете вы брать готовые табличные данные или парсить их самостоятельно) и задачи, необходимо заполнить [https://forms.gle/Zud4mp5zZ94ZUvsw7 форму], предварительно убедившись при помощи [https://docs.google.com/spreadsheets/d/1fWI0fWKzkscGkea2icA6cw7KUt11ROIFrokd6lxmuGg/edit?usp=sharing таблицы], что ваши данные/задача не пересекается с чьей-то еще. При совпадении данных у нескольких студентов, оценка за работу выставляется только первому студенту, выбравшему эти данные или задачу, остальным студентам за работу выставляется 0. Итоговая оценка за проект не может быть выше 10 (даже с учетом бонусных баллов; излишек бонусных баллов можно перенести в оценки за домашние задания и проверочные). В процессе выполнения проекта есть возможность консультироваться с преподавателями и ассистентов по любым возникающим вопросам. Готовый архив необходимо сдать в систему Anytask.
 +
 +
==Коллоквиум==
 +
 +
'''Дата и место проведения''': 29.02.2020, 15:10, ауд. 421
 +
 +
Коллоквиум проводится устно. Каждому студенту будет дано 2 теоретических вопроса (на вопросы нужно отвечать без подготовки и без использования каких-либо материалов; исчерпывающие ответы на эти вопросы будут оцениваться в 3 и 4 балла соответственно), и 1 задача (в процессе решения задачи можно использовать любые материалы; оценивается в 3 балла).
 +
 +
[https://docs.google.com/document/d/1tGvwAmOvIbA_McfoKjcze3Jr-76xsGLWcEiLHmmI9Pk/edit?usp=sharing Список вопросов для подготовки] (обратите внимание, что данный список вопросов следует воспринимать как перечень тем, а не как вопросы, которые будут использоваться непосредственно на коллоквиуме, — конкретные формулировки вопросов могут и будут отличаться).
  
 
== Экзамен ==
 
== Экзамен ==
 +
 +
'''Дата и место проведения''': 20.06.2020, 12:00
 +
 +
Экзамен проводится устно через zoom (детали проведения можно найти в чате курса в telegram). Каждому студенту будет дано 2 теоретических вопроса (на вопросы нужно отвечать без подготовки и без использования каких-либо материалов; исчерпывающие ответы на эти вопросы будут оцениваться в 3 и 4 балла соответственно), и 1 задача (в процессе решения задачи можно использовать любые материалы; оценивается в 3 балла).
 +
 +
[https://docs.google.com/document/d/1Z7DGrLYkgAERN3CTzXxINsn_kHHtegYmwwxXj6yI--0/edit?usp=sharing Список вопросов для подготовки] (обратите внимание, что данный список вопросов следует воспринимать как перечень тем, а не как вопросы, которые будут использоваться непосредственно на коллоквиуме, — конкретные формулировки вопросов могут и будут отличаться).
 +
  
 
== Полезные материалы ==
 
== Полезные материалы ==

Текущая версия на 22:50, 7 июня 2020

О курсе

Курс читается для студентов 1-го курса программы «Прикладная политология» в 2–3 модулях.

Лектор: Эльвира Альбертовна Зиннурова (tg)

Семинарист: Алексей Алексеевич Панков (tg)

Ассистент: Полина Ревина (tg)

Занятия проходят по вторникам, 18:10 — 21:00, ауд. 320а (ул. Мясницкая, 11).

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

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

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

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

Вопросы по курсу можно задавать в чате по ссылке выше, а также в телеграм преподавателям и ассистенту.

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

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

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

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

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

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

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

Проект — оценка за проект

Кол — оценка за коллоквиум

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

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

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

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

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

Лекции

Лекция 1. (29 октября) Введение в машинное обучение, основные термины. [Слайды]

Лекция 2. (5 ноября) Типы задач и признаков. Понятие вектора, матрицы. Гипотеза компактности, метод k ближайших соседей. [Слайды]

Лекция 3. (12 ноября) Основные понятия линейной алгебры. Оценки обобщающей способности. Метод k ближайших соседей. [Слайды]

Лекция 4. (19 ноября) Линейная регрессия. Произведение матриц, производная, градиент, экстремумы. Основные понятия линейной алгебры. Оценки обобщающей способности. Метод k ближайших соседей. [Слайды]

Лекция 5. (26 ноября) Основные понятия линейной алгебры. Оценки обобщающей способности. Метод k ближайших соседей. [Слайды]

Лекция 6. (3 декабря) Линейная классификация. Пороговая функция потерь, верхние оценки. Логистическая регрессия. предсказание вероятностей. [Слайды]

Лекция 7. (10 декабря) Метрики оценки качества регрессии и классификации. ROC- и PR-кривые. [Слайды]

Лекция 8. (17 декабря) Консультация по пройденному материалу.

Лекция 9. (14 января) Консультация по пройденному материалу.

Лекция 10. (21 января) Консультация по пройденному материалу. Гиперпараметры, многоклассовая классификация. [Слайды]

Лекция 11. (28 января) Решающие деревья. [Слайды]

Лекция 12. (4 февраля) Случайные леса. [Слайды]

Лекция 13. (11 февраля) Градиентный бустинг. [Слайды]

Семинары

Семинар 1. (29 октября) Библиотека NumPy, решение задач. [Ноутбук]

Семинар 2 (5 ноября) Pandas, работа с таблицами. [Тетрадь на Гитхабе] [Тетрадь в одном архиве с данными]

Семинар 3 (12 ноября) Matplotlib, приемы и ошибки визуализации. [Гитхаб], [Колаб].

Семинар 4 (19 ноября) Sklearn. Метрические методы. Подбор гиперпараметра KNN [Гитхаб], [Колаб].

Семинар 5 (26 ноября) Операции с векторами и матрицами. Производные [Колаб].

Семинар 6 (3 декабря) Градиентный спуск. Линейная регрессия [Колаб].

Семинар 7 (10 декабря) Линейные классификаторы [Колаб].

Семинар 8 (17 декабря) Метрики качества [Колаб].

Семинар 11 (29 января) Работа с текстовыми данными [Колаб]

Семинар 12 (12 февраля) Деревья решений [Колаб]

Семинар 13 (19 февраля) Бэггинг и бустинг [Колаб] [Визуализации]

Семинар 14 (2 марта) Бустинг [Колаб]

Семинар 15 (16 марта) Кластеризация и методы понижения размерности [Колаб] [Проверочная]

Семинар 16 (23 марта) Нейронные сети [Колаб]

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

ДЗ 1 (до 23 декабря) Задачи машинного обучения. Pandas и Matplotlib [GitHub]

ДЗ 2 (до 22 февраля) Логистическая регрессия. [GitHub]

ДЗ 3 (до 20 марта) Случайный лес. [GitHub], [Колаб]

Проект

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


Проект представляет собой некоторую задачу, которую нужно поставить и решить при помощи машинного обучения. Результатом выполнения проекта является архив с Jupyter-тетрадью и всеми необходимыми дополнительными файлами. Тетрадь должна представлять собой полноценный отчет, включающий как развернутые словесные описания датасета, задачи и выполняемых действий, так и код, выполняющий необходимые преобразования.

Тетрадь должна включать в себя следующие этапы решения задачи:

1. Получение обучающей выборки в табличном виде (1 балл)

В рамках этого этапа можно как найти некоторые готовые табличные данные, так и получить данные самостоятельно из некоторого источника при помощи парсинга, однако во втором случае студенту может быть начислено до 2 бонусных баллов за проект. Ограничение на данные — в выборке должно присутствовать не менее 2000 различных объектов. Данные с меньшим количеством объектов также можно рассмотреть, но датасет должен быть согласован с преподавателями.

2. Постановка задачи (1 балл)

Этот этап включает в себя определение того, что в задаче является объектами и ответами, а также определение итоговой метрики качества в задаче.

3. Визуализация (3 балла)

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

4. Построение модели (4 балла)

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

5. Оценка качества (1 балл)

Последний этап — оценка качества моделей из п. 4 при помощи метрики качества, выбранной в п. 2. Не забудьте, что качество должно оцениваться на выборке, не используемой при обучении, поэтому необходимо с самого начала «отрезать» тестовую выборку для этого пункта.

После выбора данных (вне зависимости от того, планируете вы брать готовые табличные данные или парсить их самостоятельно) и задачи, необходимо заполнить форму, предварительно убедившись при помощи таблицы, что ваши данные/задача не пересекается с чьей-то еще. При совпадении данных у нескольких студентов, оценка за работу выставляется только первому студенту, выбравшему эти данные или задачу, остальным студентам за работу выставляется 0. Итоговая оценка за проект не может быть выше 10 (даже с учетом бонусных баллов; излишек бонусных баллов можно перенести в оценки за домашние задания и проверочные). В процессе выполнения проекта есть возможность консультироваться с преподавателями и ассистентов по любым возникающим вопросам. Готовый архив необходимо сдать в систему Anytask.

Коллоквиум

Дата и место проведения: 29.02.2020, 15:10, ауд. 421

Коллоквиум проводится устно. Каждому студенту будет дано 2 теоретических вопроса (на вопросы нужно отвечать без подготовки и без использования каких-либо материалов; исчерпывающие ответы на эти вопросы будут оцениваться в 3 и 4 балла соответственно), и 1 задача (в процессе решения задачи можно использовать любые материалы; оценивается в 3 балла).

Список вопросов для подготовки (обратите внимание, что данный список вопросов следует воспринимать как перечень тем, а не как вопросы, которые будут использоваться непосредственно на коллоквиуме, — конкретные формулировки вопросов могут и будут отличаться).

Экзамен

Дата и место проведения: 20.06.2020, 12:00

Экзамен проводится устно через zoom (детали проведения можно найти в чате курса в telegram). Каждому студенту будет дано 2 теоретических вопроса (на вопросы нужно отвечать без подготовки и без использования каких-либо материалов; исчерпывающие ответы на эти вопросы будут оцениваться в 3 и 4 балла соответственно), и 1 задача (в процессе решения задачи можно использовать любые материалы; оценивается в 3 балла).

Список вопросов для подготовки (обратите внимание, что данный список вопросов следует воспринимать как перечень тем, а не как вопросы, которые будут использоваться непосредственно на коллоквиуме, — конкретные формулировки вопросов могут и будут отличаться).


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

Книги

  • 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 учебный год]