Анализ данных (Программная инженерия)

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

Таблица результатов здесь

Контакты: cshse.ml@gmail.com

Краткое описание

В курсе рассматриваются основные задачи анализа данных и обучения по прецедентам: классификация, кластеризация, регрессия, понижение размерности. Изучаются методы их решения, как классические, так и новые, созданные за последние 10–15 лет. Упор делается на практические аспекты применения изучаемых алгоритмов. Большое внимание уделяется практическим лабораторным работам на языке Python.

Отчётность по курсу и критерии оценки

Оценка за курс. После каждой лекции студентам предлагается выполнить практическое задание на Python. В конце модуля пройдет устный экзамен по теории. Также в середине семестра будет проведен устный коллоквиум по теории. Итоговая оценка за курс складывается из оценок за практические задания, оценки за коллоквиум и оценки за экзамен.

Формальные критерии:

Оценки за различные активности:

  • Otheory - суммарная оценка за теоретические части лабораторных работ (max = 3 за одну лабораторную)
  • Opractice - суммарная оценка за практические части лабораторных работ (max = 5 за одну лабораторную)
  • Ocolloquium - оценка за устный коллоквиум (max = 5)
  • Oexam - оценка за устный экзамен (max = 50)

Общее число баллов:

Oall = 0.2 * Otheory + 0.4 * Opractice + 0.2 * Oexam + Ocolloquium

Критерии оценки:

Omax = max_possible_value_of(Oall)

При подсчете Omax не учитываются дополнительные баллы за задания со звездочкой.

Оценка 5: Oall >= 0.8 * Omax

Оценка 4: Oall >= 0.6 * Omax

Оценка 3: Oall >= 0.45 * Omax

Критерии в 10-бальной шкале будут вывешены позднее.

За курс можно получить автомат без сдачи итогового экзамена. Для этого нужно получить максимальный балл за коллоквиум, а также суммарная оценка за лабораторные должна быть хорошей:

(0.2 * Otheory + 0.4 * Opractice) >= 0.9 * max_possible_value_of(0.2 * Otheory + 0.4 * Opractice)

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

Меры при обнаружении плагиата

Для лабораторных 1-7:

  • По умолчанию всем, у кого обнаружен плагиат ставится 0 баллов и отметка о плагиате. И тем, кто списал, и тем, у кого списали.
  • Из каждого онаруженного нами кластера людей, сдавших одинаковую работу, первый сдавший предполагается первоисточником работы и может получить за нее положительную оценку. Для этого он должен устно зачесть работу у преподавателя. Желательно обращаться именно к тому преподавателю, который проверял работу. При успешной защите своей работы со студента снимается отметка о плагиате.

Для всех последующих лабораторных:

  • Всем, у кого обнаружен плагиат ставится 0 баллов и отметка о плагиате. И тем, кто списал, и тем, у кого списали. Мы не будем искать первоисточник работы.

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

Если у человека есть хоть одна отметка о плагиате, он не может получить автомат.

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

Коллоквиум

На семинарах 7 и 12 марта пройдет коллоквиум. Каждый студент должен будет лично ответить преподавателю на несколько вопросов из списка ниже. Список вопросов

Темы лекций

Лекция 1. Основные понятия и примеры прикладных задач. Существующие инструменты анализа данных.

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

Слайды, часть 1 Слайды, часть 2

Лекция 2. Метрическая классификация. Метрические алгоритмы классификации. Метод ближайших соседей (kNN) и его обобщения. Подбор числа k по критерию скользящего контроля. Обобщённый метрический классификатор, понятие отступа. Проклятие размерности. Методы быстрого поиска ближайших соседей.

Слайды, часть 1 Слайды, часть 2

Лекция 3. Логическая классификация. Логические закономерности и решающие деревья.
Понятие логической закономерности. Определение информативности. Разновидности закономерностей: шары, гиперплоскости, гиперпараллелепипеды (конъюнкции). Бинаризация признаков, алгоритм выделения информативных зон. «Градиентный» алгоритм синтеза конъюнкций, частные случаи: жадный алгоритм, стохастический локальный поиск, стабилизация, редукция. Решающее дерево. Псевдокод: жадный алгоритм ID3. Недостатки алгоритма и способы их устранения. Проблема переобучения. Редукция решающих деревьев: предредукция и постредукция.

Слайды

Лекция 4. Линейные методы классификации. Линейные алгоритмы классификации. Квадратичная функция потерь, метод наименьших квадратов. Метод стохастического градиента и частные случаи: перcептрон Розенблатта, правило Хэбба. Недостатки метода стохастического градиента и способы их устранения. Ускорение сходимости, «выбивание» из локальных минимумов. Проблема переобучения, редукция весов (weight decay).

Слайды

Лекция 5. Линейный SVM.

Слайды

Лекция 6. Ядерный SVM.

Лекция 7. Линейная регрессия и PCA. Методы восстановления регрессии. Задача восстановления регрессии, метод наименьших квадратов. Многомерная линейная регрессия. Сингулярное разложение. Регуляризация: гребневая регрессия и лассо Тибширани. Метод главных компонент и декоррелирующее преобразование.

Слайды

Лекции 8-9. Байесовская классификация.

Слайды

Лекции 12. Выбор моделей и отбор признаков.

Слайды

Семинары

Правила сдачи заданий cеминаров

  • На семинарах выдаются практические лабораторные работы, которые можно сдавать на семинаре, либо по почте до дедлайна.
  • Для групп, у который семинары проходят по субботам, дедлайн 9:00 следующей субботы. У групп с семинарами по четвергам дедлайн 9:00 следующего четверга.
  • Решения следует отправлять на почту курса с соответствующей темой письма (см. раздел Оформление писем).
  • Решения принимаются в виде одного аккуратно оформленного ipython-notebook'а (.ipynb-файл), либо в виде аккуратного pdf-файла + скриптов.
  • Для теоретических заданий предполагается развернутый ответ (с доказательством при необходимости).
  • По каждому практическому заданию помимо формального ответа на вопрос и соответствующего кода необходимо так же дать комментарии/построить графики при необходимости и сделать выводы.

Семинар 1. Инструментарий

Знакомство с языком Python. Лабораторная 1, данные.

Материал в помощь.

Семинар 2. Проклятие размерности. Метод ближайшего соседа

Задание, данные о ресторанах (название признаков).

Семинар 3. Решающие деревья

Задание, данные, названия признаков.

Туториал по визуализации

Семинар 4. Линейные методы классификации

Задание, train.csv и test.csv.

Семинар 5. Линейный SVM

Задание, Данные

Семинар 6. Ядерный SVM

Задание

Семинар 7. PCA + регрессия

Задание, Данные

Семинар 9. Параметрическая Байесовская классификация

Задание, Данные1, Данные2

Семинар 10. Разделение смеси распределений

Задание, Данные

Семинар 12. Оценивание моделей

Задачи с семинара

Оформление писем

Вопросы и домашние задания присылайте на почтовый адрес cshse.ml@gmail.com. На почту присылайте письма со следующими темами:

  • Для вопросов (общих, по лабораторным, по теории и т. д.): "Вопрос - Фамилия Имя Отчество - Группа"
  • Для лабораторных: "Лабораторная {Номер лабораторной работы} - Фамилия Имя Отчество - Группа (Семинарист)"

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

Большая просьба ко всем сдавать свои работы в ipython notebook, это очень упростит нам проверку. В качестве названия для файла с работой используйте свою фамилию на английском языке. Не нужно архивировать файлы перед отправкой.

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

Машинное обучение

Python

Установка и настройка Python