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

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

Перейти к: навигация, поиск
Сейчас идет изменение статьи.--Strijov 21:03, 10 февраля 2011 (MSK)


Содержание

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

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

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

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

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

См. также версию этого курса 2009-2010.

Задачи

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

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

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

  1. статья (pdf и wiki)
  2. исходный код алгоритма,
  3. рецензия на работу,
  4. доклад.

План работы

  • Домашнее задание-1
  • Домашнее задание-2
  • Изучение литературы
  • Постановка задачи
  • Доклад-1, о том, что будет сделано, включает список литературы
  • Написание введения и постановочной части
  • Создание алгоритма
  • Вычислительные эксперименты на тестовых данных
  • Исследование свойств алгорита
  • Тестирование алгоритма на реальных данных
  • Проверка работы рецензентом, одобрение работы преподавателем.
  • Контрольная точка (с возможными доработками)
  • Доклад-2 (экзамен)

Результат: технический отчет.

Домашнее задание-1

  1. Зарегистрироваться на сайте MachineLearning.ru.
  2. Поставить систему верстки MikTeX.
  3. Поставить текстовый редактор WinEdt или [1].
  4. Поставить библиографическую систему JabRef.
  5. Зарегистрироваться SourceForge открытого кода SourceForge.net, послать логин координатору (гр. 874а - Георгий Рудой).
  6. Скачать программу-оболочку для обмена кодом TortoiseSVN.
  7. Прочитать статью про SourceForge, загрузить MLAlgorithms.
  8. Поставить систему компьютерной алгебры Scilab или Octave или Matlab.

Посмотреть все, что поставили, понять, как этим пользоваться на уровне интерфейсов.

Статья

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

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

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

  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. Глубина анализа свойств алгоритма

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

NB

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