Анализ данных (Программная инженерия) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Семинар 3. Решающие деревья)
 
(не показаны 33 промежуточные версии 3 участников)
Строка 8: Строка 8:
  
 
== Отчётность по курсу и критерии оценки ==
 
== Отчётность по курсу и критерии оценки ==
* Оценка за курс. После каждой лекции студентам предлагается выполнить практическое задание на Python. В конце модуля пройдет письменный экзамен по теории.
+
'''Оценка за курс.''' После каждой лекции студентам предлагается выполнить практическое задание на Python. В конце модуля пройдет устный экзамен по теории. Также в середине семестра будет проведен устный коллоквиум по теории. Итоговая оценка за курс складывается из оценок за практические задания, оценки за коллоквиум и оценки за экзамен.  
Итоговая оценка за курс складывается из оценок за практические задания и оценки за экзамен.
+
 
* Дедлайны. Решения присланные после дедлайнов не принимаются, кроме случаев наличия уважительных причин у студента (завалы на учебе или работе уважительными причинами не считаются).
+
'''Формальные критерии:'''
 +
 
 +
Оценки за различные активности:
 +
* O<sub>theory</sub> - суммарная оценка за теоретические части лабораторных работ (max = 3 за одну лабораторную)
 +
* O<sub>practice</sub> - суммарная оценка за практические части лабораторных работ (max = 5 за одну лабораторную)
 +
* O<sub>colloquium</sub> - оценка за устный коллоквиум (max = 5)
 +
* O<sub>exam</sub> - оценка за устный экзамен (max = 50)
 +
 
 +
Общее число баллов:
 +
 
 +
O<sub>all</sub> = 0.2 * O<sub>theory</sub> + 0.4 * O<sub>practice</sub> + 0.2 * O<sub>exam</sub> + O<sub>colloquium</sub>
 +
 
 +
Критерии оценки:
 +
 
 +
O<sub>max</sub> = max_possible_value_of(O<sub>all</sub>)
 +
 
 +
При подсчете O<sub>max</sub> не учитываются дополнительные баллы за задания со звездочкой.
 +
 
 +
'''Оценка 5''': O<sub>all</sub> >= 0.8 * O<sub>max</sub>
 +
 
 +
'''Оценка 4''': O<sub>all</sub> >= 0.6 * O<sub>max</sub>
 +
 
 +
'''Оценка 3''': O<sub>all</sub> >= 0.45 * O<sub>max</sub>
 +
 
 +
''Критерии в 10-бальной шкале будут вывешены позднее. ''
 +
 +
За курс можно получить автомат без сдачи итогового экзамена. Для этого нужно получить максимальный балл за коллоквиум, а также суммарная оценка за лабораторные должна быть хорошей:
 +
 
 +
(0.2 * O<sub>theory</sub> + 0.4 * O<sub>practice</sub>) >= 0.9 * max_possible_value_of(0.2 * O<sub>theory</sub> + 0.4 * O<sub>practice</sub>)
 +
 
 +
Здесь при подсчете максимального значения опять же не учитываются баллы за задания со звездочкой.
 +
 
 +
'''Меры при обнаружении плагиата'''
 +
 
 +
''Для лабораторных 1-7:''
 +
 
 +
* По умолчанию всем, у кого обнаружен плагиат ставится 0 баллов и отметка о плагиате. И тем, кто списал, и тем, у кого списали.
 +
* Из каждого онаруженного нами кластера людей, сдавших одинаковую работу, первый сдавший предполагается первоисточником работы и может получить за нее положительную оценку. Для этого он должен устно зачесть работу у преподавателя. Желательно обращаться именно к тому преподавателю, который проверял работу. При успешной защите своей работы со студента снимается отметка о плагиате.
 +
 
 +
''Для всех последующих лабораторных:''
 +
 
 +
* Всем, у кого обнаружен плагиат ставится 0 баллов и отметка о плагиате. И тем, кто списал, и тем, у кого списали. Мы не будем искать первоисточник работы.
 +
Также Вы должны понимать, что плагиат будет иметь и другие последствия. При обнаружении плагиата у одного и того же человека более одного раза на него будет оформляться докладная на имя декана.
 +
 
 +
Если у человека есть хоть одна отметка о плагиате, он не может получить автомат.
 +
 
 +
'''Дедлайны.''' Решения присланные после дедлайнов не принимаются, кроме случаев наличия уважительных причин у студента (завалы на учебе или работе уважительными причинами не считаются).
 +
 
 +
== Коллоквиум ==
 +
 
 +
На семинарах 7 и 12 марта пройдет коллоквиум. Каждый студент должен будет лично ответить преподавателю на несколько вопросов из списка ниже.
 +
[https://www.dropbox.com/s/r4d2o4wtjydwo5e/questions.pdf?dl=0 Список вопросов]
  
 
== Темы лекций ==
 
== Темы лекций ==
Строка 28: Строка 79:
 
[https://www.dropbox.com/s/vlmifieu79liq1p/metric.pdf?dl=0 Слайды, часть 1]
 
[https://www.dropbox.com/s/vlmifieu79liq1p/metric.pdf?dl=0 Слайды, часть 1]
 
[https://www.dropbox.com/s/g9g6ib8icygik2j/metric2.pdf?dl=0 Слайды, часть 2]
 
[https://www.dropbox.com/s/g9g6ib8icygik2j/metric2.pdf?dl=0 Слайды, часть 2]
 +
 +
'''Лекция 3. Логическая классификация.'''
 +
Логические закономерности и решающие деревья.
Понятие логической закономерности. Определение информативности. Разновидности закономерностей: шары, гиперплоскости, гиперпараллелепипеды (конъюнкции). Бинаризация признаков, алгоритм выделения информативных зон. «Градиентный» алгоритм синтеза конъюнкций, частные случаи: жадный алгоритм, стохастический локальный поиск, стабилизация, редукция. Решающее дерево. Псевдокод: жадный алгоритм ID3. Недостатки алгоритма и способы их устранения. Проблема переобучения. Редукция решающих деревьев: предредукция и постредукция.
 +
 +
[https://www.dropbox.com/s/9qfmw95wlw26jvb/slides-Logic1_ml_hse.pdf?dl=0 Слайды]
 +
 +
'''Лекция 4. Линейные методы классификации.'''
 +
Линейные алгоритмы классификации. Квадратичная функция потерь, метод наименьших квадратов. Метод стохастического градиента и частные случаи: перcептрон Розенблатта, правило Хэбба. Недостатки метода стохастического градиента и способы их устранения. Ускорение сходимости, «выбивание» из локальных минимумов. Проблема переобучения, редукция весов (weight decay).
 +
 +
[https://www.dropbox.com/s/hj0ao16hh7n2bso/lec4.pdf?dl=0 Слайды]
 +
 +
'''Лекция 5. Линейный SVM.'''
 +
 +
[https://www.dropbox.com/s/xvdaoilxu71bz65/lec5.pdf?dl=0 Слайды]
 +
 +
'''Лекция 6. Ядерный SVM.'''
 +
 +
'''Лекция 7. Линейная регрессия и PCA.'''
 +
Методы восстановления регрессии. Задача восстановления регрессии, метод наименьших квадратов. Многомерная линейная регрессия. Сингулярное разложение. Регуляризация: гребневая регрессия и лассо Тибширани. Метод главных компонент и декоррелирующее преобразование.
 +
 +
[https://www.dropbox.com/s/dsgfrs0jo3grbci/slides-Regression.pdf?dl=0 Слайды]
 +
 +
'''Лекции 8-9. Байесовская классификация.'''
 +
 +
[https://www.dropbox.com/s/rc5d97y7wttx7a0/slides-Bayes.pdf?dl=0 Слайды]
 +
 +
'''Лекции 12. Выбор моделей и отбор признаков.'''
 +
 +
[https://www.dropbox.com/s/7qchphf7ka7va2u/lec12.pdf?dl=0 Слайды]
 +
 +
'''Лекции 13. Кластеризация.'''
 +
[https://www.dropbox.com/s/3t3vvyvlk0eihoo/slides-Clustering.pdf?dl=0, Слайды]
 +
 +
'''Лекции 14. Композиции алгоритмов.'''
 +
[https://www.dropbox.com/s/8cy5pfgz1gg1na6/lec14.pdf?dl=0, Слайды]
 +
 +
'''Лекции 15. Нейронные сети.'''
 +
[https://www.dropbox.com/s/dfu7ykkj8psourh/slides-NeuralNets.pdf?dl=0, Слайды]
 +
 +
'''Лекции 16. Ранжирование.'''
 +
[https://www.dropbox.com/s/4jz8k9ch10vuiyl/slides-Ranking.pdf?dl=0, Слайды]
 +
 +
'''Лекции 17. Коллаборативная фильтрация.'''
 +
[https://www.dropbox.com/s/gc6umd44g86whn7/slides-Collaborative.pdf?dl=0, Слайды]
  
 
== Семинары ==
 
== Семинары ==
 
=== Правила сдачи заданий cеминаров ===  
 
=== Правила сдачи заданий cеминаров ===  
 
* На семинарах выдаются практические лабораторные работы, которые можно сдавать на семинаре, либо по почте до дедлайна.
 
* На семинарах выдаются практические лабораторные работы, которые можно сдавать на семинаре, либо по почте до дедлайна.
* Для групп, у который семинары проходят по субботам, дедлайн 9:00 следующей субботы. У групп с семинарами по понедельникам дедлайн 9:00 следующего понедельника.  
+
* Для групп, у который семинары проходят по субботам, дедлайн 9:00 следующей субботы. У групп с семинарами по четвергам дедлайн 9:00 следующего четверга.  
 
* Решения следует отправлять на почту курса с соответствующей темой письма (см. раздел Оформление писем).  
 
* Решения следует отправлять на почту курса с соответствующей темой письма (см. раздел Оформление писем).  
 
* Решения принимаются в виде одного аккуратно оформленного ipython-notebook'а (.ipynb-файл), либо в виде аккуратного pdf-файла + скриптов.
 
* Решения принимаются в виде одного аккуратно оформленного ipython-notebook'а (.ipynb-файл), либо в виде аккуратного pdf-файла + скриптов.
Строка 49: Строка 144:
  
 
[http://ogrisel.github.io/scikit-learn.org/sklearn-tutorial/auto_examples/tutorial/plot_knn_iris.html Туториал по визуализации]
 
[http://ogrisel.github.io/scikit-learn.org/sklearn-tutorial/auto_examples/tutorial/plot_knn_iris.html Туториал по визуализации]
 +
 +
=== Семинар 4. Линейные методы классификации ===
 +
[https://www.dropbox.com/s/8aopczz722klmya/lab4.pdf?dl=0 Задание], [https://www.dropbox.com/s/vn6g2dceepropd5/train.csv?dl=0 train.csv] и [https://www.dropbox.com/s/qtiu368pq2c33ea/test.csv?dl=0 test.csv].
 +
 +
=== Семинар 5. Линейный SVM ===
 +
[https://www.dropbox.com/s/kbkhk4z5pagsrne/lab5.pdf?dl=0 Задание], [https://www.dropbox.com/s/5ro58pbpdf2iwoq/data.zip?dl=0 Данные]
 +
 +
=== Семинар 6. Ядерный SVM ===
 +
[https://www.dropbox.com/s/bspfulrpj180da8/lab6.pdf?dl=0 Задание]
 +
 +
=== Семинар 7. PCA + регрессия ===
 +
[https://www.dropbox.com/s/d63lww92hdtf35z/lab7.pdf?dl=0 Задание], [https://www.dropbox.com/s/ngxt79hdgqtqet8/data.zip?dl=0 Данные]
 +
 +
=== Семинар 9. Параметрическая Байесовская классификация ===
 +
[https://www.dropbox.com/s/8u1cyn0fdbdrtdp/lab9.pdf?dl=0 Задание], [https://www.dropbox.com/s/r13rvv047j6lthl/2d.zip?dl=0 Данные1], [https://www.dropbox.com/s/9sh0rn0v74jep0m/200d.zip?dl=0 Данные2]
 +
 +
=== Семинар 10. Разделение смеси распределений ===
 +
[https://www.dropbox.com/s/fcelgz2vicnddsf/lab10.pdf?dl=0, Задание], [https://www.dropbox.com/s/c6z8xexubmbixi8/mnist.zip?dl=0, Данные]
 +
 +
=== Семинар 12. Оценивание моделей ===
 +
[https://www.dropbox.com/s/oy8c32jnv8oo3si/sem12.pdf?dl=0, Задачи с семинара]
 +
 +
=== Семинар 13. Кластеризация ===
 +
Дедлайны:
 +
 +
Группы Артема и Ани: теория 25.04 09:00, практика 2.05 09:00.
 +
 +
Группы Сергея: теория 30.04 09:00, практика 7.05 09:00.
 +
 +
[https://www.dropbox.com/s/zgq88loq09bzbbm/lab13.pdf?dl=0 Задание], [https://www.dropbox.com/s/4snv7gpc1l5je9q/parrots.jpg?dl=0 parrots.jpg], [https://www.dropbox.com/s/9ilrbbdz74pvne0/grass.jpg?dl=0 grass.jpg].
 +
[https://www.dropbox.com/s/fiy2u04o3g0eea2/problems_hse.pdf?dl=0, Теоретические задачи]
 +
 +
=== Семинар 14. Композиции классификаторов ===
 +
[https://www.dropbox.com/s/y0von4yb7iamxuf/sem14.pdf?dl=0, Задачи с семинара]
 +
 +
 +
=== Семинар 15. Нейронные сети ===
 +
[https://www.dropbox.com/s/fh2frujzaz0gz9w/lab15.pdf?dl=0, Лабораторная]
 +
[https://www.dropbox.com/s/bcfthzhghnnglvy/mnist.zip?dl=0, Данные]
 +
 +
=== Семинар 16. Ранжирование ===
 +
[https://www.dropbox.com/s/x2nulcih02l32qf/sem16.pdf?dl=0, Задачи с семинара]
 +
 +
=== Семинар 17. Коллаборативная фильтрация ===
 +
[https://www.dropbox.com/s/sfyby2r9kugwhiv/lab17.pdf?dl=0, Лабораторная]
 +
[https://www.dropbox.com/s/5as2k79dhajtw7n/data.zip?dl=0, Данные]
  
 
== Оформление писем ==
 
== Оформление писем ==
Строка 56: Строка 197:
 
* Для ''лабораторных'': "Лабораторная {Номер лабораторной работы} - Фамилия Имя Отчество - Группа (Семинарист)"
 
* Для ''лабораторных'': "Лабораторная {Номер лабораторной работы} - Фамилия Имя Отчество - Группа (Семинарист)"
 
Когда отвечаете на наши письма или досылаете какие-то решения, пишите письма в '''тот же''' тред.
 
Когда отвечаете на наши письма или досылаете какие-то решения, пишите письма в '''тот же''' тред.
 +
 +
Большая просьба ко всем сдавать свои работы в ipython notebook, это очень упростит нам проверку. В качестве названия для файла с работой используйте свою фамилию на английском языке. Не нужно архивировать файлы перед отправкой.
 
== Полезные ссылки ==
 
== Полезные ссылки ==
 
=== Машинное обучение ===
 
=== Машинное обучение ===

Текущая версия на 10:31, 30 мая 2015

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

Контакты: 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. Выбор моделей и отбор признаков.

Слайды

Лекции 13. Кластеризация. Слайды

Лекции 14. Композиции алгоритмов. Слайды

Лекции 15. Нейронные сети. Слайды

Лекции 16. Ранжирование. Слайды

Лекции 17. Коллаборативная фильтрация. Слайды

Семинары

Правила сдачи заданий 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. Оценивание моделей

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

Семинар 13. Кластеризация

Дедлайны:

Группы Артема и Ани: теория 25.04 09:00, практика 2.05 09:00.

Группы Сергея: теория 30.04 09:00, практика 7.05 09:00.

Задание, parrots.jpg, grass.jpg. Теоретические задачи

Семинар 14. Композиции классификаторов

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


Семинар 15. Нейронные сети

Лабораторная Данные

Семинар 16. Ранжирование

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

Семинар 17. Коллаборативная фильтрация

Лабораторная Данные

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

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

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

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

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

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

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

Python

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