Численные методы обучения по прецедентам (практика, В.В. Стрижов)
Материал из MachineLearning.
Сейчас идет изменение статьи.--Strijov 21:03, 10 февраля 2011 (MSK) |
|
Московский физико-технический институт, Факультет управления и прикладной математики
’’Численные методы обучения по прецедентам’’ — практические занятия, посвященные исследованию свойств алгоритмов машинного обучения. Семестровый курс содержит 36 часа практических занятий. Результатом практики являются отчеты о выполнении заданий.
Данный курс является первой частью трилогии
- Численные методы обучения по прецедентам
- Выполнение исследовательских проектов
- Автоматизация и стандартизация научных исследований
и подготовкой к основному теоретическому курсу
См. также версию этого курса 2009-2010.
Задачи
Включены задачи всех трех семестров
- Группа 474, весна 2011
- Группа 574, осень 2010
- Группа 774, осень 2010
- Группа 774, весна 2010
- Группа 674, весна 2010
- Группа 674, осень 2009
- Группа 674, весна 2009
Содержание отчета
Отчет состоит из следующих материалов:
- статья (pdf и wiki)
- исходный код алгоритма,
- рецензия на работу,
- доклад.
План работы
- Домашнее задание-1
- Домашнее задание-2
- Изучение литературы
- Постановка задачи
- Доклад-1, о том, что будет сделано, включает список литературы
- Написание введения и постановочной части
- Создание алгоритма
- Вычислительные эксперименты на тестовых данных
- Исследование свойств алгорита
- Тестирование алгоритма на реальных данных
- Проверка работы рецензентом, одобрение работы преподавателем.
- Контрольная точка (с возможными доработками)
- Доклад-2 (экзамен)
Результат: технический отчет.
Домашнее задание-1
- Зарегистрироваться на сайте MachineLearning.ru.
- Поставить систему верстки MikTeX.
- Поставить текстовый редактор WinEdt или [1].
- Поставить библиографическую систему JabRef.
- Зарегистрироваться SourceForge открытого кода SourceForge.net, послать логин координатору (гр. 874а - Георгий Рудой).
- Скачать программу-оболочку для обмена кодом TortoiseSVN.
- Прочитать статью про SourceForge, загрузить MLAlgorithms.
- Поставить систему компьютерной алгебры Scilab или Octave или Matlab.
Посмотреть все, что поставили, понять, как этим пользоваться на уровне интерфейсов.
Статья
Статья должна иметь следующие разделы:
- Краткое введение в тему работы, содержащее определение алгоритма.
- Постановка задачи в математической нотации, содержащая обязательные слова «Дано» (задано), и «Найти» (требуется).
- Описание алгоритма в терминах поставленной задачи.
- Вычислительный эксперимент, поставленный для изучения свойств данного алгоритма. Раздел обязательно содержит описание графиков, иллюстрирующих работу алгоритма и слово «Результат» (вывод).
- Ссылка на программную реализацию. Например: DataGenerationExample.
- Список литературы.
Рекомендуемые название разделов [изменить]:
- Аннотация
- Постановка задачи
- Алгоритм (вариант — Описание алгоритма)
- Пример (вариант — Вычислительный эксперимент)
- Исходный код (ссылка, сам исходный код давать не нужно)
- Смотри также (список ссылок на machinelearning, или на wiki)
- Литература
Рекомендуемое название статьи: «Название вашего алгоритма (пример). [убрать]
Образец статьи: Логистическая регрессия (пример)
Вычислительный эксперимент
Вычислительный эксперимент состоит следующих шагов:
- Порождение модельных данных или загрузка реальных данных
- Предобработка данных (если требуется)
- Визуализация данных (если требуется)
- Выполнение алгоритма, получение результатов
- Визуализация результатов
- Исследование свойств алгоритма
- Выводы
Образец отчета о вычислительном эксперименте и способ его автоматического получения см. здесь. Отчет должен содержать цель исследования (она может отличаться от постановки задачи), результаты визуализации, полученные результаты и выводы. Основные элементы отчета (перечисленные в предыдущем предложении), наиболее важные строки кода и графики должны попасть в раздел «Вычислительный эксперимент» статьи на сайте 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-формате (по желанию)
- Слайды готовить не нужно
Советы:
- Подготовьте доклад с секундомером в руках
- Расскажите его другу, ответьте на его вопросы
- При подготовке m-файлов к показу, наведите порядок в папке:
- Файлы-скрипты желательно переименовать в demo_demoname.m
- Графики желательно поместить в папку \fig
- Имена и интерфейсы основных файлов должны соответствовать требованиям системы «Полигон»
Зачет
Зачет состоится в аудитории 355 на Вавилова 42, согласно расписанию вашей группы. Проектор, компьютер, интернет будут в аудитории. При необходимости можно принести свой компьютер.
На зачете оценивается:
- Корректность математической постановки задачи
- Полнота описания алгоритма
- Продуманность интерфейсов
- Соответствие стандартам программирования
- Ясность изложения результатов
- Глубина анализа свойств алгоритма
Полезные материалы, сводный список
- Заготовка для статьи на machinelearning.ru
- Образец статьи о выполненном практическом задании
- Как написать статью на сайт machinelearning.ru
- Как работать с репозиторием алгоритмов
- Введение в Матлаб
- Документирование функций Matlab, соглашение об именах переменных и создание отчетов о вычислительных экспериментах
- Matlab Programming Style Guidelines
- Описание архитектуры системы, стандарт IDEF0
- Содержимое корневой папки репозитория MLAlgorithms SourceForge
- Пример отчета с загрузкой модельных данных, который разбирался на лекции
- UCI Machine Learning Repository
- Стандарт библиографического описания, см. Приложение А
- Индекс цитирования (инструменты)