Численные методы обучения по прецедентам (практика, В.В. Стрижов)/Группа 474, осень 2017

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Результаты)
м (Результаты: дополнение)
Строка 44: Строка 44:
|
|
|
|
-
|
+
|M>A>
|-
|-
|[[Участник:Dmitriy_Anikeyev|Аникеев Дмитрий]]
|[[Участник:Dmitriy_Anikeyev|Аникеев Дмитрий]]

Версия 21:02, 19 сентября 2017

Содержание

Построение эксплуатируемых моделей

Цель: поставить задачу анализа данных и вычислительный эксперимент.

Задача: научиться выполнять прикладные проекты, отделять проектирование моделей от эксплуатации.

Метод: создание отчета вычислительном эксперимента.

Прежние работы

Результаты

Автор Тема научной работы Ссылка Консультант Рецензент Буквы
Гончаров Алексей (пример) Метрическая классификация временных рядов code,

paper, slides

Попова Задаянчук BMF AILSBRCVTDSWH>
Алексеев Василий M>A>
Аникеев Дмитрий
Гасанов Эльнур
Ковалев Дмитрий
Макарчук Глеб M>A>
Новицкий Василий
Селезнева Мария
Смердов Антон M>A>
Уваров Никита
Усманова Карина
Шибаев Иннокентий
Шолохов Алексей

Работа и консультации

  1. Работы сдаются в течение недели.
  2. Дедлайн последней версии работы и выставление буквы: среда 6:00am.
  3. Каждый ставит буквы себе сам.
  4. Каждый этап работ буква A (при желании А-, А+). Мотивированный перенос работы — знак A>.
  5. Кто не поставил себе букву, тому ставится фундаментальный A0.
  6. Качество оценивается по презентациям и результату.

Расписание

Дата Что сделано Результат для обсуждения Буква
Сентябрь 6 Первая лекция. Представление нового курса, мотивация, организация работ.
13 Лекция и семинар. Планирование проекта.
20 Выбрана задача, рецензент. Заполнены разделы "Аннотация" и "Описание проекта" в Systemdocs (шаблон). Запись в 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, Mtalk
8 Собран и подготовлен эксперимент. Написаны и запущены системные тесты. Тесты, данные, эксперимент, доработанная схема IDEF0. Tests
15 Код оптимизирован. Отчет профайлера до и после. Profiler
22 Сделан визуальный отчет. Сделан интерфейс к эксплуатируемой модели. Завершенный отчет с экспериментом, код в формате Notebook. Report, Notebook.
29 Написана рецензия на работу. Доклад F первой группы. Slides, reView, F-talk

Домашние задания

Подготовительное задание 13 сентября

  1. Получить доступ к проекту MLalgorithms на SourceForge через старосту группы, прочитать статью, загрузить MLalgorithms.
  2. Зарегистрироваться на сайте machinelearning.ru, послать логин старосте.
  3. В папке Group474 создать папку Surname2017ProjectName (см. Численные методы обучения по прецедентам (практика, В.В. Стрижов), раздел "Работа с репозиторием".)
  4. Подготовка инструментов: выполнить Домашее задание-1, часть 1 и 2 (часть 3 по желанию).


20 сентября

  • Выбрать задачу и подготовить доклад о выбранной задаче на 45 секунд. Содержание доклада включает:
  1. Существо и цели проекта.
  2. Важность и применимость задачи.
  3. Описание предполагаемых методов решения.
  • Создать описание проекта, заполнить разделы «Мотивация» (1.1.2) и «Литература» (1.1.3) в SystemDocs


27 сентября

Создать отдельный файл LaTeX c постановкой задачи и базовым описанием алгоритма, включающими

  1. описание выборки,
  2. предположения и ограничения по составу выборки,
  3. статистические предположения о природе выборки (гипотезу порождения данных),
  4. определения (что такое модель, алгоритм),
  5. ограничения на множество допустимых моделей,
  6. функцию ошибки, критерий качества,
  7. оптимизационную постановку задачи,
  8. вид эксплуатационный модели.
  • Пример постановки задачи: [2].


28 сентября

  • Зафиксировать базовый алгоритм. При необходимости, расширить список литературы.
  • Собрать выборку и описать форматы и структуры данных в разделе 1.4 SystemDocs: состав выборки, основные статистики. Создать описание процедуры порождения выборки в формате IDEF0.
    • Скачать и установить Ramus, разобраться с нотацией IDEF0
  • Заполнить раздел Выполнимость задачи/Feasibility. Уточнить границы применимости предлагаемых методов, прописать условия отказа от классификации.
  • Подготовить доклад о выбранной задаче на 45 секунд (вторая часть группы).

IDEF0 организационный и содержательный.


7 октября

  • При необходимости, доработать постановку задачи. Сделать окончательное описание базового алгоритма.
  • Создать двухуровневую схему в IDEF0 (разделы 1.2.2 и 1.2.3), желательно, разделяя стадии обучения и использования модели.
  • Описать интерфейсы (раздел 2 SystemDocs).


14 октября Написать код.

Анализ ошибки в вычислительных экспериментах как анализ изменения функции ошибки при изменении состава выборки

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

  1. Анализ состава выборки:
    1. анализ простоты выборки по отдельным признакам (гистограммы признаков),
    2. анализ мультикоррелированности признаков, в частности анализ корреляционных или ковариационных матриц (визуализация результатов факторного анализа, метода Белсли, VIF, в частности, при изменении состава признаков),
    3. тест наличия выбросов в выборке (визуализация изменения функции ошибки при исключении выбросов),
    4. тест наличия мультимоделей (снижение ошибки при, например, использовании стратегии бустинга)
    5. оценка необходимой мощности выборки (по оси абсцисс - число объектов, по оси ординат - ошибка на обучении и ее стандартное отклонение),
    6. оценка необходимого числа признаков (по оси абсцисс - последовательно добавляемые признаки; признаки добавляются, например, по убыванию скорости изменения ошибки - т.н. ускорение и торможение ошибки)).
  2. Анализ дисперсии параметров и функции ошибки
    1. анализ стандартного отклонения функции ошибки (внутреннего критерия) и внешних критериев (в частности, визуализация ROC - обучение и контроль на каждом из разбиений),
    2. анализ изменения функции ошибки на итерациях оптимизации (ось абсцисс - итерации, ось ординат функция ошибки на обучении, контроле и ее стандартное отклонение),
    3. анализ изменения параметров и гиперпараметров модели (по оси абсцисс - итерации, по оси ординат - набор параметров, лапша и их стандартные отклонения или гиперпараметры),
    4. анализ изменения параметров и функций ошибки при из изменении структурных параметров или регуляризаторов (они по оси абсцисс, по оси ординат - не забываем о стандартном отклонении, получаемом скользящим контролем).
  3. Сложность алгоритма оптимизации функции ошибки в зависимости от объема выборки
    1. теоретическая,
    2. эмпирическая,
    3. аппроксимация эмпирической функции теоретической (по оси абсцисс - объем выборки, число признаков, число кластеров).
  4. Анализ свойств модели с помощью внешних критериев, учет возможных ограничений на параметры и структуру модели
    1. построение парето-оптимального фронта множества моделей, из которых производится выбор.

21 октября

  • Подготовить доклад, в котором обосновываются предлагаемые интерфейсы и IDEF-описания системы. Примерный план доклада.
    1. Титульный лист, см. пример и исходный код.
    2. Цель, мотивация и описание решаемой проблемы
    3. Проблема и вся работа в одном слайде
    4. Литература, какие методы развиваются
    5. Постановка задачи и, при необходимости, обозначения
    6. Теория в прямом или в теоремном (обратном) изложении
    7. Цель вычислительного эксперимента и описание данных
  • Написать юнит-тесты для каждого модуля.

5 октября

  • При необходимости, доработать постановку задачи. Сделать окончательное описание базового алгоритма.
  • Создать двухуровневую схему в IDEF0 (разделы 1.2.2 и 1.2.3), желательно, разделяя стадии обучения и использования модели.
  • Описать интерфейсы (раздел 2 SystemDocs).


19 октября Написать код.

Анализ ошибки в вычислительных экспериментах как анализ изменения функции ошибки при изменении состава выборки

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

  1. Анализ состава выборки:
    1. анализ простоты выборки по отдельным признакам (гистограммы признаков),
    2. анализ мультикоррелированности признаков, в частности анализ корреляционных или ковариационных матриц (визуализация результатов факторного анализа, метода Белсли, VIF, в частности, при изменении состава признаков),
    3. тест наличия выбросов в выборке (визуализация изменения функции ошибки при исключении выбросов),
    4. тест наличия мультимоделей (снижение ошибки при, например, использовании стратегии бустинга)
    5. оценка необходимой мощности выборки (по оси абсцисс - число объектов, по оси ординат - ошибка на обучении и ее стандартное отклонение),
    6. оценка необходимого числа признаков (по оси абсцисс - последовательно добавляемые признаки; признаки добавляются, например, по убыванию скорости изменения ошибки - т.н. ускорение и торможение ошибки)).
  2. Анализ дисперсии параметров и функции ошибки
    1. анализ стандартного отклонения функции ошибки (внутреннего критерия) и внешних критериев (в частности, визуализация ROC - обучение и контроль на каждом из разбиений),
    2. анализ изменения функции ошибки на итерациях оптимизации (ось абсцисс - итерации, ось ординат функция ошибки на обучении, контроле и ее стандартное отклонение),
    3. анализ изменения параметров и гиперпараметров модели (по оси абсцисс - итерации, по оси ординат - набор параметров, лапша и их стандартные отклонения или гиперпараметры),
    4. анализ изменения параметров и функций ошибки при из изменении структурных параметров или регуляризаторов (они по оси абсцисс, по оси ординат - не забываем о стандартном отклонении, получаемом скользящим контролем).
  3. Сложность алгоритма оптимизации функции ошибки в зависимости от объема выборки
    1. теоретическая,
    2. эмпирическая,
    3. аппроксимация эмпирической функции теоретической (по оси абсцисс - объем выборки, число признаков, число кластеров).
  4. Анализ свойств модели с помощью внешних критериев, учет возможных ограничений на параметры и структуру модели
    1. построение парето-оптимального фронта множества моделей, из которых производится выбор.

26 октября

  • Подготовить доклад, в котором обосновываются предлагаемые интерфейсы и IDEF-описания системы. Примерный план доклада.
    1. Титульный лист, см. пример и исходный код.
    2. Цель, мотивация и описание решаемой проблемы
    3. Проблема и вся работа в одном слайде
    4. Литература, какие методы развиваются
    5. Постановка задачи и, при необходимости, обозначения
    6. Теория в прямом или в теоремном (обратном) изложении
    7. Цель вычислительного эксперимента и описание данных
  • Написать юнит-тесты для каждого модуля.

2 ноября

  • Доделать IDEF0: детализировать блок обработки пользовательских данных, сделать второй уровень детализации. Второй уровень посвящен проверке адекватности пользовательских данных на:
  1. наличие вирусов в теле загружаемых данных (воздерживаться от выполнения команд, находящихся в теле файлов, например, mpeg),
  2. тип загружаемого файла,
  3. величину загружаемого файла,
  4. допустимость времени расчетов, сложности алгоритма распознавания (не более 15 сек, в противном случае обсуждается вариант фонового выполнения алгоритма или отправка результатов по почте),
  5. допустимость объема памяти (желательно не более 200 МБ),
  6. адекватность структуры входных данных (алгоритм не должен возвращать неадекватные результаты получив неадекватные данные, желательно сообщать о таком случае).
  • В папке data собрать реальные данные, предназначенные для демонстрации работы алгоритма (и, возможно, для тестирования, если объем данных невелик). При большом объеме данных в эту папку записываются файлы со ссылками в интернет, где можно скачать большую выборку. Вариант: ссылка находится в загрузчике данных. Подготовить описание данных в systemdocs.
  • Подготовить модель загрузки и проверки пользовательских данных. Модуль должен загружать один пользовательский файл.
  • Создать системные тесты: протестировать входные данные и запускаемый модуль. Поместить ссылку на него в раздел 5.2 SystemDocs

9 ноября

  • Используя профайлер, оптимизировать узкие места в коде. Проделанную работу описать в секции 5.3 systemdocs, используя отчеты профайлера и вставляя комментарии о проделанной работе.

На заметку:

  • Узкие места - те фрагменты кода, которые занимают значительное время при выполнении вычислительного эксперимента. Требуется показать, что при достигнуты улучшения кода при замене циклов на матричные операции или показать, что код достаточно хорошо оптимизирован. При этом необходимо в отчет вставить наиболее значимые строки из отчета профайлера. Это как правило, первые 10-15 строк. Копировать можно из html-отчета профайлера или воспользоваться функцией profile. В ней есть пример, как сохранить отчет профайлера в удобном формате. При оптимизации кода можно вставить в отчет те измерения кода, которые вы считаете удачными.
  • Также при оптимизации рекомендуется пользоваться функцией parfor - параллельный for. См. документацию "doc parfor" и пример, где показано как включать параллельный режим. Совет: конструкции вида x = x+1 или x(end+1) = y и подобные конструкции не распараллеливаются. Чтобы избежать таких конструкций, надо заранее создавать структуры/матрицы требуемого размера. Параллельные вычисления работают в Матлабе начиная с версии 2012.

16 ноября

Внимание! Рецензия находится в конце файла системдокс в специальном разделе. Нужны только замечания по тем пунктам, которые там приведены.


  • Написать рецензию, [назвать файл YourSurname2014Review]. В заголовке рецензии - название работы, имя автора работы. В рецензии отражается, насколько качественно сделана система; удобно ли пользоваться документацией. План рецензии [ПО СИСТЕМДОКС]:
  1. Введение и мотивация:
    • мотивация автора глазами рецензента
    • альтернативные источники информации
    • место работы в области
    • резюме по мотивации (актуальность и новизна)
  2. Техническая часть.
    1. Постановка задачи: подтвердить или предложить альтернативу с обоснованием
    2. IDEF: выразить мнение об организации структуры интерфейса, пояснениях, именовании переменных, детализации.
    3. Составлено ли описание структуры данных, списка модулей.
    4. Код:
      • читаемость,
      • наличие комментариев и вспомогательных файлов,
      • отступы и структура,
      • код работает отдельно от автора.
    5. Профилирование и SystemDocs.
    6. Вычислительный эксперимент.
      • Иллюстрации оформлены в соответствии с JMLDA/Figs.
  3. Резюме в целом, мнение рецензента о работе.
  • Подготовить доклад на 1-1,5 минуты о рецензируемой работе. Рецензией можно поделиться с автором и консультантом.
  • Используя результаты вычислительного эксперимента и системного тестирования, создать поясняющие графики и таблицы и поместить их в раздел 5.2. При оформления отчета желательно разделять текст по содержанию на адекватно поименованные параграфы. В отчет должны входить:
    • Визуализация процесса выбора модели и оптимизиции структурных параметров
    • Визуализации зависимости функции потерь от уровня шума или других факторов
    • ...

23 ноября

Создать папку «web», содержащую следующие файлы:

  1. Файл "config.json" (именно с такими именем и расширением). Заполнить файл, следуя примеру, представленному в папке "Group074/Kuznetsov2013SSAForecasting/web/"
  2. Файл "main.m". Функция main должна быть единственный аргумент funcname и возвращать только строку html: html = main(filename). filename - текстовая строка, содержащая имя обрабатываемого файла, html - текстовая строка, содержащая "web" отчет в формате html.
  3. Файл "test.csv" (можно использовать другие расширения). Этот файл должен содержать тестовые данные (текст, временные ряды, изображение, звук, видео, etc.) для анализа.
  4. Другие файлы, необходимые для корректной работы функции "main" (например, файл, содержащий структурные параметры

алгоритма прогнозирования)

В целях тестирования, рекомендуется использовать функцию writeHTML. Она вызывает функцию "main('test.csv')" сохраняет результаты в "out.html". В этом файле должны содержаться либо "web"-отчет, либо сообщение об ошибке (см. типы ошибок, перечисленные в задании Tests, Data).

Список проектов

Шаблон описания проекта

  • Название: Название, под которым статья подается в журнал.
  • Задача: Описание или постановка задачи. Желательна постановка в виде задачи оптимизации (в формате argmin). Также возможна ссылка на классическую постановку задачи.
  • Данные: Краткое описание данных, используемых в вычислительном эксперименте, и ссылка на выборку.
  • Литература: Список научных работ, дополненный 1) формулировкой решаемой задачи, 2) ссылками на новые результаты, 3) основной информацией об исследуемой проблеме.
  • Базовой алгоритм: Ссылка на алгоритм, с которым проводится сравнение или на ближайшую по теме работу.
  • Авторы: эксперт, консультант.

Задача 1

Личные инструменты