Прогнозирование функциями дискретного аргумента (пример)
Материал из MachineLearning.
м   | 
				|||
| Строка 62: | Строка 62: | ||
Прогноз будет строиться на естественном предположении компактности регулярных структур: у похожих кусков временного ряда должны быть похожие продолжения.  | Прогноз будет строиться на естественном предположении компактности регулярных структур: у похожих кусков временного ряда должны быть похожие продолжения.  | ||
Воспользуемся самым простым локальным алгоритмом, который ищет ближайшего соседа к прогнозируемому участку.  | Воспользуемся самым простым локальным алгоритмом, который ищет ближайшего соседа к прогнозируемому участку.  | ||
| + | |||
| + | <b><big>Поиск постоянных закономерностей</big></b>  | ||
| + | |||
| + | Рассмотрим один из подходов к поиску закономерностей в пучках временных рядов, который предполагает отсутствие изменений в закономерностях с течением времени. Для простоты будем рассматривать единственный временной ряд длины <tex>T<tex> вместо пучка.  | ||
| + | |||
| + | |||
| + | |||
| + | Маской <tex>\omega</tex> на отрезке назовем булеву строку длины <tex>N</tex> (здесь  | ||
| + | |||
| + | параметр <tex>N</tex> определяет максимальный отступ по времени). Число единиц в маске <tex>\omega</tex>  | ||
| + | |||
| + | будем называть весом маски и обозначать <tex>H(\omega)</tex>. Элемент маски, находящийся на <tex>i</tex>-ом  | ||
| + | |||
| + | месте будем обозначать <tex>\omega(i)</tex> или <tex>\omega_i</tex>. Закономерностью <tex>R</tex> назовем  | ||
| + | |||
| + | пару <tex>(\omega; f)</tex>, где маска <tex>\omega</tex> указывает на значения ряда, являющиеся аргументами функции <tex>f</tex>, а частично-определенная функция <tex>f</tex> задает зависимость значений целевого ряда от  | ||
| + | |||
| + | переменных, на которые указывает маска <tex>\omega</tex>.  | ||
| + | |||
| + | <center><tex>f: X^{H(\omega)} \rightarrow X\cup\{\lambda\},</tex></center>  | ||
| + | где <tex>\lambda</tex> означает, что функция не определена на соответствующем наборе переменных.  | ||
| + | |||
| + | |||
| + | |||
| + | Зафиксировав теперь маску <tex>\omega = [1, 1, 1]</tex>, построим множество пар <tex>(\alpha_t, v_t)</tex>, где <tex>\alpha_t = [m(t), m(t+1), m(t+2)]</tex>, а <tex>v_t = m(t+3)<tex>, <tex>t\in\{1, 2, \dots , T-3\}</tex>.  | ||
| + | |||
| + | |||
| + | |||
| + | Полученное множество пар записывается в виде таблицы частот <tex>\|\nu_{\alpha, v}\|</tex> с числом строк, равным числу всех возможных наборов из <tex>X^{H(\omega)}=x^3</tex>, и числом столбцов, равным <tex>|X|</tex>. Элемент таблицы частот <tex>\|\nu_{\alpha, v}\| \ (0\le\alpha\le |X|^3-1,\ 0\le v\le |X|-1)</tex> — это число раз, которое значение <tex>v</tex> встречается во входных данных на наборе <tex>\tilde{\alpha}</tex> c номером <tex>\alpha</tex> из <tex>X^3</tex>.  | ||
| + | |||
| + | |||
| + | |||
| + | (Предполагается, что наборы расположены в лексикографическом порядке.)  | ||
| + | |||
| + | |||
| + | |||
| + | Обозначим <tex>\nu_{\alpha, max} = \max_{v\in\{1, 2, \dots , |X|-1\}} \nu_{\alpha, v}</tex> и <tex>v_{m} = \arg\max_{v\in\{1, 2, \dots , |X|-1\}} \nu_{\alpha, v}</tex> (в случае, если  | ||
| + | |||
| + | максимум достигается на нескольких значениях, <tex>v_m</tex> выбирается среди этих значений  | ||
| + | |||
| + | произвольным образом).  | ||
| + | |||
| + | |||
| + | |||
| + | Обозначим также <tex>\nu_{\alpha, max-1} = \max_{v\in\{1, 2, \dots , |X|-1\}, v\ne v_m} \nu_{\alpha, v}</tex> и <tex>\nu_{\alpha} = \sum_{v=0}^{|X|-1}\nu_{\alpha, v}</tex>.  | ||
| + | |||
| + | |||
| + | |||
| + | На основе таблицы частот порождается закономерность <tex>(\omega; f)</tex>, где частично-  | ||
| + | определенная функция <tex>f</tex> задается на каждом наборе <tex>\tilde{\alpha}</tex> из <tex>X^3</tex> следующим образом:  | ||
| + | |||
| + | |||
| + | |||
| + | <center><tex>f(\tilde{\alpha}) = \left\{ \begin{array}{ll}  | ||
| + | |||
| + |  v_m, & \textrm{если $\nu_{\alpha, max}-\nu_{\alpha, max-1}\ge k\cdot\nu_{\alpha}$}\\  | ||
| + | |||
| + |  \lambda, & \textrm{иначе}  | ||
| + | |||
| + |   \end{array} \right.  | ||
| + | |||
| + | </tex></center>  | ||
| + | |||
| + | |||
| + | Здесь символ <tex>\lambda</tex> обозначает отсутствие значения на данном наборе, а <tex>k</tex> — параметр алгоритма, <tex>0 < k < 1</tex>.  | ||
== Литература ==  | == Литература ==  | ||
| - | {{Задание|Егор Будников|В.В.Стрижов|24 мая 2010|  | + | {{Задание|Егор Будников|В.В.Стрижов|24 мая 2010|Yegor.Budnikov|Strijov}}  | 
[[Категория:Практика и вычислительные эксперименты]]  | [[Категория:Практика и вычислительные эксперименты]]  | ||
Версия 08:39, 6 сентября 2011
 
  | 
Введение
В статье представлена попытка прогнозирования таких специфических временных рядов, как монофонические мелодии. Были осуществлены три различных подхода: экспоненциальное сглаживание, локальное прогнозирование и поиск постоянных закономерностей.
Предлагается опробовать первый метод в традиционной его форме, чтобы ответить на вопрос, пригоден ли он для решения данной задачи. Затем предлагается во втором методе проверить работоспособность коэффициента корреляции Пирсона в качестве меры сходства. Третий будет использоваться в упрощенном варианте.
Постановка задачи
Мелодия есть функция , где 
 — позиция ноты, 
 — конечное множество нот, занумерованных в порядке увеличения тона, 
 — длительность ноты, в секундах. Таким образом, будем работать с пучком из двух временных рядов.
Предполагается, что мелодия дана законченная, но без нескольких финальных нот(в данной статье одной). Необходимо их предсказать.
Пути решения задачи
Экспоненциальное сглаживание
Пусть  — временной ряд.
Экспоненциальное сглаживание ряда осуществляется по рекуррентной формуле:
Чем меньше , тем в большей степени фильтруются, подавляются колебания исходного ряда и шума.
Если последовательно использовать рекуррентное это соотношение, то экспоненциальную среднюю 
 можно выразить через значения временного ряда 
.
После появления работ Р. Брауна экспоненциальное сглаживание часто используется для решения задачи краткосрочного прогнозирования временных рядов следующим способом.
Пусть задан временной ряд: .
Необходимо решить задачу прогнозирования временного ряда, т.е. найти
 — горизонт прогнозирования, необходимо, чтобы
.
Предположим, что D - невелико (краткосрочный прогноз), то для решения такой задачи используют модель Брауна.
.
Если рассматривать прогноз на 1 шаг вперед, то 
 — погрешность этого прогноза, а новый прогноз 
 получается в результате корректировки предыдущего прогноза с учетом его ошибки — суть адаптации.
При краткосрочном прогнозировании желательно как можно быстрее отразить новые изменения и в то же время как можно лучше "очистить" ряд от случайных колебаний.
Т.о. следует увеличивать вес более свежих наблюдений: 
.
С другой стороны, для сглаживания случайных отклонений, 
 нужно уменьшить: 
.
Т.о. эти два требования находятся в противоречии. Мы будем брать 
 из интервала (0,0.5).
Локальные методы прогнозирования
Музыкальный временной ряд отличается от обычного хаотического: он почти не хаотичен (для специалистов, я думаю, слово "почти"\ можно убрать). В нем встречаются похожие, повторяющиеся и прочие регулярные структуры.
Регулярной структурой назовем кусок временного ряда, обладающий автономностью по отношению к остальному временному ряду, склонный к повторению в немного искаженной форме. Очевидно, что "немного" должно определяться некой функцией близости. В работе использовался вариант коэффициента корреляции Неймана-Пирсона:
где интеграл понимается в смысле суммы в силу дискретности функций. Прогноз будет строиться на естественном предположении компактности регулярных структур: у похожих кусков временного ряда должны быть похожие продолжения. Воспользуемся самым простым локальным алгоритмом, который ищет ближайшего соседа к прогнозируемому участку.
Поиск постоянных закономерностей
Рассмотрим один из подходов к поиску закономерностей в пучках временных рядов, который предполагает отсутствие изменений в закономерностях с течением времени. Для простоты будем рассматривать единственный временной ряд длины  на отрезке назовем булеву строку длины 
 (здесь
параметр  определяет максимальный отступ по времени). Число единиц в маске 
будем называть весом маски и обозначать . Элемент маски, находящийся на 
-ом
месте будем обозначать  или 
. Закономерностью 
 назовем
пару , где маска 
 указывает на значения ряда, являющиеся аргументами функции 
, а частично-определенная функция 
 задает зависимость значений целевого ряда от
переменных, на которые указывает маска .
где  означает, что функция не определена на соответствующем наборе переменных.
Зафиксировав теперь маску , построим множество пар 
, где 
, а 
.
Полученное множество пар записывается в виде таблицы частот  с числом строк, равным числу всех возможных наборов из 
, и числом столбцов, равным 
. Элемент таблицы частот 
 — это число раз, которое значение 
 встречается во входных данных на наборе 
 c номером 
 из 
.
(Предполагается, что наборы расположены в лексикографическом порядке.)
Обозначим  и 
 (в случае, если
максимум достигается на нескольких значениях,  выбирается среди этих значений
произвольным образом).
Обозначим также  и 
.
На основе таблицы частот порождается закономерность , где частично-
определенная функция 
 задается на каждом наборе 
 из 
 следующим образом:
Здесь символ  обозначает отсутствие значения на данном наборе, а 
 — параметр алгоритма, 
.
Литература
|   |  Данная статья является непроверенным учебным заданием.
 До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.  | 

