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

Материал из 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 или TeXnic Center.
  4. Поставить библиографическую систему JabRef.
  5. Зарегистрироваться сайте-репозитории открытого кода SourceForge.net, послать логин координатору (гр. 874а - Георгий Рудой).
  6. Скачать программу-оболочку для обмена кодом TortoiseSVN.
  7. Прочитать статью про SourceForge, загрузить MLAlgorithms.
  8. Поставить систему компьютерной алгебры Scilab или Octave или Matlab.

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

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

  1. Прочитать статью про LaTeX.
  2. Прочитать основные главы Львовский С.М. Набор и верстка в системе LaTeX.
  3. Настроить русский язык (Start->Programs->MikTeX 2.9->Maitenance->Setteings->Languages->Russian->General->Refresh/Update).
  4. Загрузить шаблон статьи LaTeX (Здесь будет ссылка) и скомпилировать.
  5. Прочитать про BibTeX.
  6. Найти какую-нибудь статью в какой-нибудь библиографической базе.
  7. Скопировать в произвольную библиографическую запись, (например, эту) в список литературы, проверить результат компиляции.

Домашнее задание-2 (вторая часть)

  1. Прочитать статью Введение в Матлаб.
  2. Прочитать Документирование функций Matlab, соглашение об именах переменных и создание отчетов о вычислительных экспериментах.
  3. Прочитать Matlab Programming Style Guidelines.

Доклад -1

Доклад-1

Доклад по результатам постановки задач и исследованию литературы на пять минут. Требуется:

  • Список литературы и оценка близости используемых методов
  • Черновик аннотации работы
  • Черновик постановки задачи
  • Пути решения задачи

Технический отчет

  • Название
  • Аннотация (пишется в последнюю очередь)
  • Ключевые слова (используются те, которые дали хорошие результаты поиска)
  • Введение (около страницы); ниже — по абзацам, примерный план)
    • Основное сообщение — чему посвящена работа (одна-две фразы)
    • Обзор литературы — развитие предлагаемой идеи (не более двух абзацев)
    • Современное состояние области (два-четыре абзаца)
    • Что предлагается (два абзаца)
    • Как организована работа (предложение или два)
  • Постановка задачи (примерно страница)
    • Дано (как устроена выборка)
    • Предполагается, что (статистические гипотезы, гипотезы порождения данных)
    • Ограничения и другие предположения о характере данных
    • Функционал или критерий качества искомой модели, решения (часто вытекает из гипотезы порождения данных)
    • Дополнительные требования (разбиения выборки, скользящий контроль, требования к мультиколлинеарности и подобное)
  • Решение: математическая часть (тут название первого раздела)
    • Описание алгоритма
    • Исследуемые свойства алгоритма
  • Другие разделы (если есть)
  • Решение: алгоритмическая часть (часто уходит в следующий раздел)
  • Вычислительный эксперимент
    • Описание задачи, кратко
    • Описание данных, достаточное, чтобы воспроизвести эксперимент самостоятельно
    • Описание алгоритма или ход эксперимента
    • Описание полученных результатов
    • Выводы, сравнение результатов, полученных альтернативным путем
  • Заключение (пишется в последнюю очередь)
    • Вставить ссылку на mlalgorithms/ваша_папка для того, чтобы другие исследователи могли проверить результаты или использовать их в дальнейшей работе
  • Литература
    • Литература должна у вас уже быть по результатам доклада-1 (даже если она не вся указана во введении, пожалуйста, приведите полный список)
    • Совет: используйте команду TeX \nocite{*} при выводе из файла bbl для получения полного списка

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

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

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

  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
    • Имена и интерфейсы основных файлов должны соответствовать требованиям системы «Полигон»

Политика:

  1. На лекции ходить необязательно, при этом повторных или персональных разъяснений и не будет.
  2. Списывание приветствуется; использование чужого кода приветствуется вдвойне. При этом следует корректно указывать оригинального автора.
  3. Изобретать велосипед грешно; усовершенствовать почетно.
  4. Результат важнее процесса.

Зачет

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

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

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

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

NB

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