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

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

Перейти к: навигация, поиск

Старая версия: 2009-2010.

Содержание

Московский физико-технический институт, Факультет управления и прикладной математики

’’Численные методы обучения по прецедентам’’ — практические занятия, включающие прикладные аспекты создания алгоритмов машинного обучения. Семестровый курс содержит 32 часа практических занятий. В ходе занятий студент получает задание на исследование свойств алгоритмов. Результатом практики являются отчеты о выполнении заданий. Задание нужно сделать в срок по графику, чтобы успеть получить рецензию и исправить недочеты.

Данный курс является первой частью трилогии

  1. Численные методы обучения по прецедентам
  2. Выполнение исследовательских проектов
  3. Автоматизация и стандартизация научных исследований

и подготовкой к основному теоретическому курсу

Задачи

Включены задачи всех трех семестров

Содержание отчета

Отчет состоит из следующих материалов:

  • статья на сайте machinelearning.ru,
  • отчет о вычислительном эксперименте,
  • исходный код алгоритма.

Статья на сайте MachineLearning

Статья должна иметь следующие разделы:

  1. Краткое введение в тему работы, содержащее определение алгоритма.
  2. Постановка задачи в математической нотации, содержащая обязательные слова «Дано» (задано), и «Найти» (требуется).
  3. Описание алгоритма в терминах поставленной задачи.
  4. Вычислительный эксперимент, поставленный для изучения свойств данного алгоритма. Раздел обязательно содержит описание графиков, иллюстрирующих работу алгоритма и слово «Результат» (вывод).
  5. Ссылка на программную реализацию. Например: DataGenerationExample.
  6. Ссылка на список статей сайта machinelearning.ru по данной тематике.
  7. Список литературы, откуда был взят алгоритм (с полным библиографическим описанием, см. Приложение А).

Рекомендуемые название разделов:

  1. (без названия)
  2. Постановка задачи
  3. Алгоритм (вариант — Описание алгоритма)
  4. Пример (вариант — Вычислительный эксперимент)
  5. Исходный код (ссылка, сам исходный код давать не нужно)
  6. Смотри также (список ссылок на machinelearning, или на wiki)
  7. Литература

Рекомендуемое название статьи: «Название вашего алгоритма (пример)».

Образец статьи: Логистическая регрессия (пример)

Вычислительный эксперимент

Вычислительный эксперимент состоит следующих шагов:

  1. Порождение модельных данных или загрузка реальных данных
  2. Предобработка данных (если требуется)
  3. Визуализация данных (если требуется)
  4. Выполнение алгоритма, получение результатов
  5. Визуализация результатов
  6. Исследование свойств алгоритма
  7. Выводы

Образец отчета о вычислительном эксперименте и способ его автоматического получения см. здесь. Отчет должен содержать цель исследования (она может отличаться от постановки задачи), результаты визуализации, полученные результаты и выводы. Основные элементы отчета (перечисленные в предыдущем предложении), наиболее важные строки кода и графики должны попасть в раздел «Вычислительный эксперимент» статьи на сайте machinelearning.ru.

Результаты работы алгоритма рекомендуется показывать на иллюстрирующем примере из репозитория задач UCI, исследовать свойства алгоритма рекомендуется на синтетических выборках.


Выполнение проекта

Работа с репозиторием

Исходный код должен находится в репозитории https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms. О том, как работать с репозиторием, см. здесь. Права на добавление файлов в репозиторий можно получить у администратора вашей группы.

В репозитории находятся следующие папки общего пользования:

  • data – реальные данные для загрузки, общие для всех проектов (данные к конкретному заданию можно хранить в папке AlgorithmName или AlgorithmName\data),
  • common – функции общего пользования, относящиеся к алгоритмам,
  • utilities – вспомогательные функции общего пользования, относящиеся к вводу данных и рисованию графиков.

В репозитории нужно создать папку, название папки – название задания (алгоритма). В папке должен лежать основной файл demoAlgorithmName – файл отчета о вычислительном эксперименте (и, возможно, файл loadDataName – файл порождения модельных данных или загрузки реальных данных). Дополнительные файлы могут лежать в той же папке или в подпапках.

В процессе автоматической генерации отчета появляется папка html, которую, вместе с файлами .html и .gif, можно также загрузить в репозиторий.


Совет: не загружайте в репозиторий вспомогательный файл операционной системы Thumbs.db, он вам будет мешать.


Программирование

Рекомендации программистам и введение в Матлаб см. здесь. Настоятельно рекомендуется прочесть соглашение об именах в статье Документирование функций Matlab. Там же рассказано о создании отчетов о вычислительных экспериментах.

Процесс рецензирования

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

Рецензент

  • В статье на ML ставит пометки <ref>Замечание к статье</ref>.
  • В m-файлах ставит пометки % FIXIT Замечание к коду.

Исполнитель

  • В статье на ML вносит требуемые исправления и снимает пометки <ref>Замечание к статье</ref>. В дальнейшем рецензент сравнивает новую и старую версии статьи средствами ML (вкладка "история").
  • В m-файлах вносит требуемые исправления и исправляет пометки % FIXIT на %FIXED.
Рецензент отвечает за качество работы, но должен быть благожелателен к исполнителю. Критерий качества работы: рецензент с удовольствием готов использовать рецензируемую работу для решения своих задач.


Соглашение о комментировании

Приняты следующие комментарии, добавляемые в код при его проверке:

% FIXIT - желательно изменить код (улучшить структуру кода или устранить ошибку), 
% FIXED - устраненные ошибки или улучшенный код, 
% NOTE - комментарий для обмена мнениями,
% TODO - желательно выполнить работу.

Для совместимости с системой Полигон желательно оформлять интерфейсы основных модулей следующим образом: 1) алгоритм классификации, регрессионная модель с параметрами w и матрицей "объект-признак" X

y = NameModel(w, X)

2) процедура обучения (оптимизации параметров алгоритма или модели) c вектором ответов y и структурными параметрами PP

w = NameLearn(X,y, PP)

3) необязательная процедура тестирования

y = NameTest(w, X)

Параметры w могут быть вектором (желательно) или структурой (при необходимости).

% X [m,n] is an object-feature matrix
% y [m,1] is a vector of object lables
% w [p,1] is a vector of parameters, or
% w [structure] is a structure of parameters 
% PP [structure] are parameters of the method

Подготовка к зачету

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

Во время презентации требуется:

  • Назвать основные свойства алгоритма
  • Поставить задачу
  • Осветить основные принципы работы алгоритма (кратко, без деталей)
  • Описать интерфейсы модулей алгоритма
  • Показать работу алгоритма на примерах
  • Проанализировать свойства алгоритма

На презентации используется:

  • Страница из machinelearning.ru (обязательно)
  • Код из sourceforge.net (обязательно)
  • Для удобства можно подготовить текстовый документ с описанием интерфейсов модулей (по желанию)
  • Отчеты о вычислительных экспериментах в html-формате (по желанию)
  • Слайды готовить не нужно

Советы:

  1. Подготовьте доклад с секундомером в руках
  2. Расскажите его другу, ответьте на его вопросы
  3. При подготовке m-файлов к показу, наведите порядок в папке:
    • Файлы-скрипты желательно переименовать в demo_demoname.m
    • Графики желательно поместить в папку \fig
    • Имена и интерфейсы основных файлов должны соответствовать требованиям системы «Полигон»

Зачет

Зачет состоится в аудитории 355 на Вавилова 42, согласно расписанию вашей группы. Проектор, компьютер, интернет будут в аудитории. При необходимости можно принести свой компьютер.

На зачете оценивается:

  1. Корректность математической постановки задачи
  2. Полнота описания алгоритма
  3. Продуманность интерфейсов
  4. Соответствие стандартам программирования
  5. Ясность изложения результатов
  6. Глубина анализа свойств алгоритма

Полезные материалы, сводный список

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