Численные методы обучения по прецедентам (практика, В.В. Стрижов)/Группа 474, осень 2017
Цель: поставить задачу анализа данных и вычислительный эксперимент.
Задача: научиться выполнять прикладные проекты, отделять проектирование моделей от эксплуатации.
Метод: создание отчета вычислительном эксперимента.
Прежние работы
- Моя первая научная статья в журнале ВАК, группа 474
- Отчет о результатах курса за 2013, Report2013Fall.pdf
- Группа 374, осень 2016: построение эксплуатируемых моделей
- Группа 274, осень 2015: построение эксплуатируемых моделей
- Группа 174, осень 2014: построение эксплуатируемых моделей
- Группа 074, осень 2013: построение эксплуатируемых моделей
- Короткая ссылка на эту страницу: http://bit.ly/2wEVblM
Результаты
Автор Тема научной работы Ссылка Руководитель Рецензент Буквы Гончаров Алексей (пример) Метрическая классификация временных рядов code,Работа и консультации
- Работы сдаются в течение недели.
- Дедлайн последней версии работы и выставление буквы: среда 6:00am.
- Каждый ставит буквы себе сам.
- Каждый этап работ буква A (при желании А-, А+). Мотивированный перенос работы — знак A>.
- Кто не поставил себе букву, тому ставится фундаментальный A0.
- Качество оценивается по презентациям и результату.
Расписание
Дата Что сделано Результат для обсуждения Буква Сентябрь 6 Первая лекция. Представление нового курса, мотивация, организация работ. 13 Лекция и семинар. Планирование проекта. 20 Выбрана задача, рецензент. Заполнены разделы "Аннотация" и "Описание проекта" в Systemdocs шаблон Surname2017Systemdocs.doc. Запись в ML в список проектов по шаблону. Доклад ML, Annotation 27 Доклад на 45 секунд о своем проекте. Доклад B-talk Октябрь 4 Собрана литература. Собрана и описана выборка, сделано описание данных. Описание данных. Список литературы. Data, Literature 11 Поставлена задача. Написаны математическая постановка в формате TeX и описание базового алгоритма. Постановка задачи и алгоритм. Statement, Algorithm 18 Разработана архитектура и интерфейс ядра системы. Архитектура описана в формате IDEF0. Описание архитектуры, интерфейсов в IDEF0. Idef, interFaces 25 Детализирован интерфейс, написан код. Код для реальных данных. Code Ноябрь 1 Написаны юнит-тесты и модуль, их запускающий. Подготовлен доклад с обоснованием интерфейсов и IDEF-описания. Юнит-тесты, доклад M. Unit, M-talk 8 Собран и подготовлен эксперимент. Написаны и запущены системные тесты. Тесты, данные, эксперимент, доработанная схема IDEF0. Tests 15 Код оптимизирован. Отчет профайлера до и после. Profiler 22 Сделан визуальный отчет. Сделан интерфейс к эксплуатируемой модели. Завершенный отчет с экспериментом, код в формате Notebook. Report, Notebook. 29 Написана рецензия на работу. Доклад F. Slides, reView, F-talkДомашние задания
Подготовительное задание 13 сентября
- Получить доступ к проекту MLalgorithms на SourceForge через старосту группы, прочитать статью, загрузить MLalgorithms.
- Зарегистрироваться на сайте machinelearning.ru, послать логин старосте.
- В папке Group474 создать папку Surname2017ProjectName (см. Численные методы обучения по прецедентам (практика, В.В. Стрижов), раздел "Работа с репозиторием".)
- Подготовка инструментов: выполнить Домашее задание-1, часть 1 и 2 (часть 3 по желанию).
20 сентября
- Выбрать задачу и подготовить доклад о выбранной задаче на 45 секунд. Содержание доклада включает:
- Существо и цели проекта.
- Важность и применимость задачи.
- Описание предполагаемых методов решения.
- Создать описание проекта, заполнить разделы «Мотивация» (1.1.2) и «Литература» (1.1.3) в SystemDocs
- Шаблон файла: Surname2016SystemDocs
- Пример заполнения: [1].
27 сентября Подготовить доклад на 45 секунд, план прошлого семестра.
- Собрать литературу, в которой описано наиболее полное множество базовых алгоритмов - претендентов на внедрение и внести библиографические записи в SystemDocs.
- Собрать выборку и описать форматы и структуры данных в разделе 1.4 SystemDocs: состав выборки, основные статистики.
11 октября Создать отдельный файл LaTeX c постановкой задачи и базовым описанием алгоритма, включающими
- описание выборки,
- предположения и ограничения по составу выборки,
- статистические предположения о природе выборки (гипотезу порождения данных),
- определения (что такое модель, алгоритм),
- ограничения на множество допустимых моделей,
- функцию ошибки, критерий качества,
- оптимизационную постановку задачи,
- вид эксплуатационный модели.
- Пример постановки задачи: [2].
- Зафиксировать базовый алгоритм. (При необходимости, расширить список литературы, доработать постановку задачи.)
- Сделать окончательное описание базового алгоритма.
- Создать описание процедуры порождения выборки в формате IDEF0.
- Создать двухуровневую схему в IDEF0 (разделы 1.2.2 и 1.2.3), разделяя стадии обучения и использования модели.
- Скачать и установить Ramus, разобраться с нотацией IDEF0.
- IDEF0 организационный и содержательный.
- Описать интерфейсы (раздел 2 SystemDocs).
- Написать код.
- Написать юнит-тесты для каждого основного модуля и сьют, их запускающий.
- Подготовить доклад, в котором обосновываются предлагаемые интерфейсы и IDEF-описания системы. Примерный план доклада.
- Титульный лист, см. пример и исходный код.
- Цель, мотивация и описание решаемой проблемы
- По возможности: Проблема и вся работа в одном слайде
- Литература, какие методы развиваются
- Постановка задачи и, при необходимости, обозначения
- IDEF0 (без рамки, или в отдельном pdf)
- Процедура подготовки данных, если предполагается
- Основные модули с интерфейсами
- Детализация основных модулей, если необходимо
Анализ ошибки в вычислительных экспериментах как анализ изменения функции ошибки при изменении состава выборки
Задана стратегия разбиения скользящего контроля. Поставлена задача оптимизации параметров для одного разбиения. Для набора разбиений получен набор значений векторов оптимальных параметров, набор значений функции ошибки на обучении и на контроле. Задан набор внешних критериев. Получен набор значений внешних критериев на обучении и контроле. Анализ ошибки содержит следующие базовые тесты.
- Анализ состава выборки:
- анализ простоты выборки по отдельным признакам (гистограммы признаков),
- анализ мультикоррелированности признаков, в частности анализ корреляционных или ковариационных матриц (визуализация результатов факторного анализа, метода Белсли, VIF, в частности, при изменении состава признаков),
- тест наличия выбросов в выборке (визуализация изменения функции ошибки при исключении выбросов),
- тест наличия мультимоделей (снижение ошибки при, например, использовании стратегии бустинга)
- оценка необходимой мощности выборки (по оси абсцисс - число объектов, по оси ординат - ошибка на обучении и ее стандартное отклонение),
- оценка необходимого числа признаков (по оси абсцисс - последовательно добавляемые признаки; признаки добавляются, например, по убыванию скорости изменения ошибки - т.н. ускорение и торможение ошибки)).
- анализ стандартного отклонения функции ошибки (внутреннего критерия) и внешних критериев (в частности, визуализация ROC - обучение и контроль на каждом из разбиений),
- анализ изменения функции ошибки на итерациях оптимизации (ось абсцисс - итерации, ось ординат функция ошибки на обучении, контроле и ее стандартное отклонение),
- анализ изменения параметров и гиперпараметров модели (по оси абсцисс - итерации, по оси ординат - набор параметров, лапша и их стандартные отклонения или гиперпараметры),
- анализ изменения параметров и функций ошибки при из изменении структурных параметров или регуляризаторов (они по оси абсцисс, по оси ординат - не забываем о стандартном отклонении, получаемом скользящим контролем).
- теоретическая,
- эмпирическая,
- аппроксимация эмпирической функции теоретической (по оси абсцисс - объем выборки, число признаков, число кластеров).
- построение парето-оптимального фронта множества моделей, из которых производится выбор.
- Используя профайлер, оптимизировать узкие места в коде. Проделанную работу описать в секции 5.3 systemdocs, используя отчеты профайлера и вставляя комментарии о проделанной работе.
- Узкие места - те фрагменты кода, которые занимают значительное время при выполнении вычислительного эксперимента. Требуется показать, что при достигнуты улучшения кода при замене циклов на матричные операции или показать, что код достаточно хорошо оптимизирован. При этом необходимо в отчет вставить наиболее значимые строки из отчета профайлера. Это как правило, первые 10-15 строк. Копировать можно из html-отчета профайлера или воспользоваться функцией profile. В ней есть пример, как сохранить отчет профайлера в удобном формате. При оптимизации кода можно вставить в отчет те измерения кода, которые вы считаете удачными.
- Также при оптимизации рекомендуется пользоваться функцией parfor - параллельный for. См. документацию "doc parfor" и пример, где показано как включать параллельный режим. Совет: конструкции вида x = x+1 или x(end+1) = y и подобные конструкции не распараллеливаются. Чтобы избежать таких конструкций, надо заранее создавать структуры/матрицы требуемого размера.
- Оформление результатов в формате ipnb
- Выделен и оформлен интерфейс к эксплуатируемой модели.
- Сделан визуальный отчет.
- Написать рецензию, [назвать файл YourSurname2014Review]. В заголовке рецензии - название работы, имя автора работы. В рецензии отражается, насколько качественно сделана система; удобно ли пользоваться документацией.
Data, Literature, Statement, Algorithm, Idef, interFaces, Code, Unit, Tests, Profiler, Report, Notebook.