Модели прогнозирования на основе временных рядов - OXFORDST.RU

Модели прогнозирования на основе временных рядов

Обзор моделей прогнозирования временных рядов: проба пера

В рамках своей диссертации «Модель прогнозирования по выборке максимального подобия» мне нужно было делать обзор моделей прогнозирования. Кроме обзора, я сделала вариант классификации, который мне тогда не очень удался. Классификацию уже немного поправила, теперь хочется разобраться в существующих моделях прогнозирования временных рядов. Такие модели называют стохастическими моделями (stochastic models).

По оценке некто Тихонова в его «Прогнозировании в условиях рынка» на сегодняшний день (2006 год) существует около 100 методов и моделей прогнозирования. Эта оценка звучит бредово, я полно разбирала ее! Давайте теперь вместе разберемся, какие же модели прогнозирования временных рядов существуют на сегодняшний день.

  1. Регрессионные модели прогнозирования
  2. Авторегрессионные модели прогнозирования (ARIMAX, GARCH, ARDLM)
  3. Модели экспоненциального сглаживания (ES)
  4. Модель по выборке максимального подобия (MMSP)
  5. Модель на нейронных сетях (ANN)
  6. Модель на цепях Маркова (Markov chains)
  7. Модель на классификационно-регрессионных деревьях (CART)
  8. Модель на основе генетического алгоритма (GA)
  9. Модель на опорных векторах (SVM)
  10. Модель на основе передаточных функций (TF)
  11. Модель на нечеткой логике (FL)
  12. Что еще.

Регрессионные модели прогнозирования

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

  • Простая линейная регрессия (linear regression)
  • Множественная регрессия (multilple regression)
  • Нелинейная регрессия (nonlinear regression)

Лучшая книга по регрессии — архигениальная книга — Draper N., Smith H. Applied regression analysis. Ее можно скачать в сети в djvu. Лучше читать в английском варианте, написано в высшей степени для людей.

Авторегрессионные модели прогнозирования

Это широчайший и один из двух наиболее широко применимых классов моделей! Книг по этим моделям много, примеров применения много.

  • ARIMAX (autoregression integrated moving average extended), об этом написано чрезвычайно много. Основой основ является книга Box, George and Jenkins, Gwilym (1970) Time series analysis: Forecasting and control. Лучше читать на английском!
  • GARCH (generalized autoregressive conditional heteroskedasticity), здесь множество модификаций FIGARCH, NGARCH, IGARCH, EGARCH, GARCH-M.
  • ARDLM (autoregression distributed lag model), об этом только в учебниках по эконометрике.

Вопрос к аудитории: посоветуйте хорошую и понятную (!) книгу/статью по GARCH и MLE.

Модели экспоненциального сглаживания

  • Экспоненциальное сглаживание (exponential smoothing)
  • Модель Хольта или двойное экспоненциальное сглаживание (double exponential smoothing)
  • Модель Хольта-Винтерса или тройное экспоненциальное сглаживание (triple exponential smoothing)

По всем трем моделям лучшая из мною читанного статья Prajakta S.K. Time series Forecasting using Holt-Winters Exponential Smoothing.

Модель по выборке максимального подобия

Это моя модель (model on the most similar pattern), на ряде задач показывает высокую эффективность. К рядам FOREX и бирж применять не стоит, проверяли, работает неважно. Ее описание можно найти в диссертации по ссылке выше, кроме того, можно скачать пример реализации в MATLAB.

Модель на нейронных сетях

Вторая из двух наиболее популярных моделей прогнозирования временных рядов. Лучшая книга с примерами, на мой вкус, Хайкин С. Нейронные сети: полный курс. Книгу с примерами в MATLAB можно скачать по ссылке.

Модель на цепях Маркова

Модель на цепях Маркова фигурирует в множестве обзоров, однако мне не удалось найти ни хорошей книги, ни хорошей статьи о ее конкретном применении для прогнозирования временных рядов. Сама эту модель разбирала в курсе теории надежности (учебник Гнеденко), принцип ее расчета хорошо понимаю, кроме того, читала, что ее часто применяют для моделирования финансовых временных рядов.

Вопрос к аудитории: посоветуйте хорошую и понятную (!) книгу/статью по применению цепей Маркова для прогнозирования временных рядов.

Модель на классификационно-регрессионных деревьях

Вот тут материалов немного, но они есть. В частности, неплохая статья по применению этой модели для прогнозирования Hannes Y.Y., Webb P. Classification and regression trees: A User Manual for IdentifyingIndicators of Vulnerability to Famine and Chronic Food Insecurity.

Модель на основе генетического алгоритма

Это странный зверь, такого рода решения я называю «иезуитскими», потому что кажется, что они рождены только для обоснования научной новизны, однако эффективность их невысока. Например, генетический алгоритм применяется для решения задач оптимизации (поиска экстремума), однако некоторые приплели его к прогнозированию временных рядов. Найти внятного материала по этой теме мне не удалось.

Вопрос к аудитории: посоветуйте хорошую и понятную (!) книгу/статью по применению генетического алгоритма для прогнозирования временных рядов.

Модель на опорных векторах

Модель на основе передаточных функций

Модель на нечеткой логике

Все эти модели принадлежат, на мой вкус, классу иезуитских. Например, опорные векторы (SVM) применяется в основном для задач классификации. Нечеткая логика где только не применяется, однако найти ее понятно описанное применение для прогнозирования временных рядов мне не удалось. Хотя в обзорах специалисты почти всегда ее указывают.

Итого

Моделей мы наберем с десяток, со всеми модификациями — два десятка. Хотелось бы, чтобы в комментариях вы не только высказывали мнение, а по возможности делали полезные ссылки на понятные материалы. Лучше на английском!

PS. Всех любителей FOREX и всякого рода бирж большая просьба не долбится ко мне в личку! Вы мне ужасно надоели!

Прогнозирование с помощью временных рядов

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

Что такое данные временных рядов?
Чтобы ответить на этот вопрос, давайте сделаем шаг назад и обсудим типы данных, которые мы используем для типичных задач регрессии и классификации. Когда мы делаем прогноз о новом наблюдении, то эта модель строится на основе сотен или тысяч предыдущих наблюдений, которые либо все фиксируются в одной точке времени, либо на основе данных точек, в которых время не имеет значения. Это называется данными поперечного сечения.
Данные временных рядов отличаются тем, что они регистрируются через регулярные промежутки времени, и порядок этих точек имеет важное значение. Поэтому любая прогнозирующая модель, основанная на данных временных рядов, будет иметь время как независимую переменную. Результатом работы модели будет прогнозируемое значение или классификация в определенное время.

Использование временных рядов?
Вот несколько примеров того, как различные отрасли промышленности используют прогнозирование временных рядов:
Энергетика — цены; спрос; производственные графики
Розничная торговля — продажи; потребительский спрос на определенные товары
Правительство штата — налоговые поступления от продаж
Транспорт — Спрос на будущие поездки
Финансы — Акции; рыночный потенциал, долгосрочные и среднесрочные прогнозы валютных курсов

Анализ временных рядов в сравнении с прогнозированием временных рядов
В то время как прогнозирование временных рядов является формой прогностического моделирования, анализ временных рядов является формой описательного моделирования. Это означает, что кто-то, проводящий анализ временных рядов, смотрит на набор данных, чтобы выявить тенденции и сезонные закономерности и связать их с внешними обстоятельствами. Многие социологи и политики используют эту форму описательного моделирования для разработки программ и рекомендаций.
Целью прогнозирования временных рядов, является прогнозирование будущего значения или классификации в определенный момент времени.

Четыре компонента временного ряда
Первым шагом при анализе временного ряда для разработки прогностической модели является выявление и понимание закономерностей, лежащих в основе данных с течением времени. Эти основные закономерности обычно классифицируются как следующие четыре компонента:
Тенденция — долгосрочное постепенное изменение ряда. Это самая простая модель тренда, так как она демонстрирует долгосрочный рост или спад.
Seasonality (Сезонность) — Предсказуемые, краткосрочные модели, которые возникают в течение одной единицы времени и повторяются бесконечно.
Циклическая составляющая — Долгосрочные колебания данных, на которые могут уйти годы или десятилетия. Такие колебания происходят не предсказуемо и часто являются результатом внешних экономических условий.
Noise (Ошибка) — Случайные колебания вследствие неконтролируемых обстоятельств.

Что такое методы прогнозирования временных рядов?
Ниже приведены методы машинного прогнозирования для использования с данными временных рядов. При принятии решения о выборе метода следует помнить о следующем:
Основываясь на предположениях о данных (т.е. соответствует ли ошибка нормальному распределению?).
Внешние факторы, которые могут влиять на тенденцию
Если задача, которую вы пытаетесь решить, имеет простое или сложное возможное решение.

Простые методы прогнозирования временных рядов
Возможно, что наиболее точная модель машинного обучения для прогнозирования временных рядов является самой простой. Точно так же, как ученые часто начинают моделировать данные поперечного сечения с простой линейной регрессией, существуют эквиваленты временных рядов. Вот несколько примеров:
Наивный прогноз — в наивном прогнозе прогнозируемое значение просто равнозначно значению самого последнего наблюдения. Этот самый простой метод часто используется в качестве эталона для оценки работы более сложных прогнозов. Другими словами, если Ваша сложная модель менее точна, чем наивный прогноз, то Вы, скорее всего, делаете что-то не так.
Среднее — В среднестатистическом методе все прогнозы равны среднему значению всех исторических данных.
Сезонный наивный метод — Это похоже на наивный прогноз за исключением того, что прогнозируемое значение является последним наблюдаемым значением из того же сезона временного периода. Например, в месячном масштабе при использовании этого метода ноябрьский прогноз будет равен последнему наблюдаемому значению в ноябре.

Читайте также  Клише и штампы в речи юриста

Регрессионное прогнозирование временных рядов
Можно разрабатывать линейные, полиномиальные и экспоненциальные регрессионные модели прогнозирования временных рядов, создавая переменную индекса времени от первого наблюдения (t=1) до последнего (t=n). В результате получается модель тренда, а не сезонности. Это полезный метод, если в основе лежит предположение о том, что данный тренд является подходящим и актуальным для выбранного вами временного периода.
Если ваша модель действительно нуждается в учете сезонности, это также можно сделать с помощью линейной регрессии. Это делается путем создания категорической переменной, указывающей сезоны.

Сглаживающие методы
В отличие от регрессионных моделей, основанных на предположениях о структуре тренда или шума, методы сглаживания временных рядов предназначены для адаптации к изменениям данных во времени. Сглаживание уменьшает шум за счет усреднения наблюдений за многократными периодами. Ниже мы обсудим два наиболее распространенных метода сглаживания — скользящее среднее и экспоненциальное сглаживание:
Скользящее среднее — Метод скользящего среднего создает ряд средних путем взятия средних значений во временном ряду в пределах заданных периодов. Предполагается, что наблюдения, близкие по времени, вероятно, также схожи по значению, поэтому взятие среднего устраняет шум. Скользящие средние обычно берутся из самых последних точек данных.
Экспоненциальное сглаживание — Экспоненциальное сглаживание берет среднее взвешенное значение по всем прошлым значениям, придавая больший вес последним наблюдениям. Целью является признание старой информации, при этом приоритет отдается самым последним данным.

Специальные требования к данным временных рядов
Как вы возможно знаете, разработка модели требует разделения данных на обучающие и валидационные наборы. При использовании данных поперечного сечения вы случайным образом разделите данные на эти группы. Однако вы не можете случайным образом разделить данные, которые имеют последовательный временной элемент. При моделировании временных рядов в качестве учебного набора используются более ранние данные, а в качестве валидационного набора — более поздние данные.
Кроме того, при прогнозировании новых значений сама модель строится на основе всего массива данных, а не только учебного раздела.

Разработка собственной модели временных рядов
Процесс разработки собственной модели машинного обучения по временным рядам аналогичен тому, как вы разрабатываете модель, используя данные поперечного сечения:
Найдите проблему, которую нужно решить, или вопрос на который нужно ответить.
Соберите данные, необходимые для ответа на вопрос.
Провести исследовательский анализ.
Выбор и тестирование моделей.
Оцените точность выбранной вами модели.
Машинное обучение с помощью нейронных сетей.

Прогнозирование временных рядов в MS EXCEL (обзорная статья)

history 4 июля 2021 г.
    Группы статей

В первом разделе статьи модели для прогнозирования временных рядов сравниваются с моделями, построение которых основано на причинно-следственных закономерностях.

Во втором разделе приведен краткий обзор трендов временных рядов (линейный и сезонный тренд, стационарный процесс). Для каждого тренда предложена модель для прогнозирования.
Затем даны ссылки на сайты по теории прогнозирования временных рядов и содержащие базы статистических данных.

Disclaimer:
Напоминаем, что задача сайта excel2.ru (раздел Временные ряды ) продемонстрировать использование MS EXCEL для решения задач, связанных с прогнозированием временных рядов. Поэтому, статистические термины и определения приводятся лишь для логики изложения и демонстрации идей. Сайт не претендует на математическую строгость изложения статистики. Однако в наших статьях:
• ПОЛНОСТЬЮ описан встроенный в EXCEL инструментарий по анализу временных рядов (в составе надстройки Пакет анализа , различных типов Диаграмм ( гистограмма , линия тренда ) и формул);
• созданы файлы примера для построения соответствующих графиков, прогнозов и их интервалов предсказания, вычисления ошибок, генерации рядов (с трендами и сезонностью ) и пр.

Модели временных рядов и модели предметной области

Напомним, что временным рядом (англ. Time Series) называют совокупность наблюдений изучаемой величины, упорядоченную по времени. Наблюдения производятся через одинаковые периоды времени. Другой информацией, кроме наблюдений, исследователь не обладает.

Основной целью исследования временного ряда является его прогнозирование – предсказание будущих значений изучаемой величины. Прогнозирование основывается только на анализе значений ряда в предыдущие периоды, точнее — на идентификации трендов ряда. Затем, после определения трендов, производится моделирование этих трендов и, наконец, с помощью этих моделей — экстраполяция на будущие периоды.

Таким образом, прогнозирование основывается на фактических данных (значениях временного ряда) и модели ( скользящее среднее , экспоненциальное сглаживание , двойное и тройное экспоненциальное сглаживание и др.).

Примечание : Прогнозирование методом Скользящее среднее в MS EXCEL подробно рассмотрено в одноименной статье .

В отличие от методов временных рядов, где зависимости ищутся внутри самого процесса , в «моделях предметной области» (англ. «Causal Models») кроме самих данных используют еще и законы предметной области.

Примером построения «моделей предметной области» ( моделей строящихся на основе причинно-следственных закономерностей, априорно известных независимо от имеющихся данных ) может быть промышленный процесс изготовления защитной ткани. Пусть в таком процессе известно, что прочность материала ткани зависит от температуры в реакторе, в котором производится процесс полимеризации (температура — контролируемый фактор). Однако, прочность материала является все же случайной величиной, т.к. зависит помимо температуры также и от множества других факторов (качества исходного сырья, температуры окружающей среды, номера смены, умений аппаратчика реактора и пр.). Эти другие факторы в процессе производства стараются держать постоянными (сырье проходит входной контроль и его поставщик не меняется; в помещении, где стоит реактор, поддерживается постоянная температура в течение всего года; аппаратчики проходят обучение и регулярно проводится переаттестация). Задачей статистических методов в этом случае – предсказать значение случайной величины (прочности) при заданном значении изменяемого фактора (температуры).

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

Модели, строящиеся на основе причинно-следственных закономерностей, упомянуты в этой статье для того чтобы акцентировать, что их изучение предшествует теме «временные ряды». Так, часть методов, например «Регрессионный анализ» (используется метод наименьших квадратов — МНК ), используется при анализе временных рядов, но изучаются в моделях предметной области, поэтому неподготовленным «пытливым умам» не стоит игнорировать раздел статистики « Статистический вывод », в котором проверяются гипотезы о равенстве среднего значения и строятся доверительные интервалы для оценки среднего , и упомянутый выше «Регрессионный анализ».

Кратко о типах процессов и моделях для их прогнозирования

Выбор подходящей модели прогнозирования делается с учетом типа моделируемого процесса (наличие трендов). Рассмотрим основные типы процессов.

1. Стационарный процесс

Стационарный процесс – это случайный процесс чьи характеристики не зависят от времени их наблюдения. Этими характеристиками являются среднее значение , дисперсия и автоковариация. В стационарном процессе не могут быть выделены предсказуемые паттерны. Соответственно ряды демонстрирующие тренд и сезонность — не стационарны. А вот ряд с цикличностью (апериодической) является стационарным, т.к. на долгосрочном временном интервале появление циклов предсказать невозможно.

Почему стационарный процесс важен? Так как стационарность подразумевает нахождение процесса в состоянии статистической стабильности, то такие временные ряды имеют постоянное среднее значение и дисперсию, которые определяются стандартным образом.

Также для стационарного процесса определяется функция автокорреляции – совокупность коэффициентов корреляции значений временного ряда с собственными значениями, сдвинутыми по времени на один или несколько периодов. Сдвиг на несколько временных периодов часто называется лагом (обозначается k).

Функция автокорреляции является важным источником информации о временном ряде.

Примером стационарного процесса является колебания биржевого индекса, состоящего из стоимости акций нескольких компаний, около определённого значения (в период стабильности рынка).

Примечание : график стоимости акций построен на реальных данных, см. файл примера Google .

Специальным видом стационарного процесса является белый шум. У этого процесса: среднее значений ряда равно 0, имеется конечная дисперсия и отсутствует корреляция между значениями исходного ряда и рядом сдвинутым на произвольное количество периодов (лагов). В MS EXCEL белый шум можно сгенерировать функцией СЛЧИС().

2. Линейный тренд

Некоторые процессы генерируют тренд (монотонное изменение значений ряда). Например, линейный тренд y=a*x+b, точнее y=a*t+b, где t – это время. Примером такого (не стационарного) процесса может быть монотонный рост стоимости недвижимости в некотором районе.

Читайте также  Доход предприятия, его сущность и значение

Для вычисления прогнозного значения можно воспользоваться методами Регрессионного анализа и подобрать параметры тренда: наклон и смещение по вертикали.

Примечание : Про генерацию случайных значений, демонстрирующих линейный тренд, можно посмотреть в статье Генерация данных для простой линейной регрессии в EXCEL .

3. Процессы, демонстрирующие сезонность

В сезонном процессе присутствует точно или примерно фиксированный интервал изменений, например, продажи некоторых товаров имеют четко выраженный пик в ноябре-декабре каждого года в связи с праздником.

Для прогнозирования вычисляется индекс сезонности, затем ряд очищается от сезонной компоненты. Если ряд также демонстрирует тренд, то после очистки от сезонности используются методы регрессионного анализа для вычисления тренда.

Примечание : Про генерацию случайных значений, демонстрирующих сезонность, можно посмотреть в статье Генерация сезонных трендов в EXCEL.

Часто на практике встречаются ряды, являющиеся комбинацией вышеуказанных типов тенденций.

О моделях прогнозирования

В качестве простейшей модели для прогноза можно взять последнее значение индекса. Этой модели соответствует следующий ход мысли исследователя: «Если значение индекса вчера было 306, то и завтра будет 306».

Этой модели соответствует формула Y прогноз(t) = Y t-1 (прогноз в момент времени t равен значению временного ряда в момент t-1).

Другой моделью является среднее за последние несколько периодов ( скользящее среднее ). Этой модели соответствует другой ход мысли исследователя: «Если среднее значение индекса за последние n периодов было 540, то и завтра будет 540». Этой модели соответствует формула Y прогноз(t) =(Y t-1 + Y t-2 +…+Y t-n )/n

Обратите внимание, что значения временного ряда берутся с одинаковым весом 1/n, то есть более ранние значения (в момент t-n) влияют на прогноз также как и недавние (в момент t-1). Конечно, в случае, если речь идет о стационарном процессе (без тренда), такая модель может быть приемлема. Чем больше количество периодов усреднения (n), тем меньше влияние каждого индивидуального наблюдения.

Третьей моделью для стационарного процесса может быть экспоненциальное сглаживание . В этом случае веса более ранних периодов будут меньше чем веса поздних. При этом учитываются все предыдущие наблюдения. Вес каждого последующего наблюдения больше на 1-α (Фактор затухания), где α (альфа) – это константа сглаживания (от 0 до 1).
Этой модели соответствует формула Y прогноз(t) =α*Y t-1 + α*(1-α)*Y t-2 + α*(1-α)2*Y t-3 +…)

Формулу можно переписать через предыдущий прогноз Y прогноз(t) =α*Y t-1 +(1- α)* Y прогноз(t-1) = α*(Y t-1 — Y прогноз(t-1) )+Y прогноз(t-1) = α*(ошибка прошлого прогноза)+ прошлый прогноз

При экспоненциальном сглаживании прогнозное значение равно сумме последнего наблюдения с весом альфа и предыдущего прогноза с весом (1-альфа). Этой модели соответствует следующий ход мысли исследователя: «Вчера рано утром я предсказывал, что индекс будет равен 500, но вчера в конце дня значение индекса составило 480 (ошибка составила 20). Поэтому за основу сегодняшнего прогноза я беру вчерашний прогноз и корректирую его на величину ошибки, умноженную на альфа. Параметр альфа (константа) я найду методом экспоненциального сглаживания».

Подробнее о методе прогнозирования на основе экспоненциального сглаживания можно найти в этой статье .

Полезный сигнал и шум

Из-за случайного разброса, присущему временному ряду, временной ряд представляют как комбинацию двух различных компонентов: полезного сигнала и шума (ошибки). Полезный сигнал следует одному из 3-х вышеуказанных типов процессов. Сигнал может быть смоделирован и соответственно спрогнозирован. Шум представляет собой случайные ошибки (со средним значением =0, отсутствием корреляции и с фиксированной дисперсией ).

Основной задачей моделирования идентификация полезного сигнала, имеющего определенный тренд, от непредсказуемого шума. Для этого как раз и используются Модели сглаживания.

Модели прогнозирования на основе временных рядов

Министерство образования и науки Российской Федерации

Федеральное государственное образовательное учреждение высшего профессионального образования

«Чувашский государственный университет имени И.Н. Ульянова»

Кафедра региональной экономики и предпринимательства

Прогнозирование в национальной экономике

«Модели прогнозирования на основе временных рядов»

1. Задачи анализа временных рядов. Первоначальная обработка временных рядов.

2. Методы нахождения параметров уравнения тренда. Метод наименьших квадратов.

Список использованной литературы

Существует множество математических моделей, посредством которых решаются те, или иные задачи. Во всех сферах деятельности человека важным моментом является прогнозирование последующих событий. Сейчас существует более 100 методов и методик прогнозирования, Условно их можно разделить на фактографические и экспертные. Фактографические методы основаны на анализе информации об объекте, а экспертные – на суждениях экспертов, которые получены при проведении коллективных или индивидуальных опросов.

1. Задачи анализа временных рядов. Первоначальная обработка временных рядов

Основные задачи анализа временных рядов. Базисная цель статистического анализа временного ряда заключается в том, чтобы по имеющейся траектории этого ряда:

1.определить, какие из неслучайных функций присутствуют в разложении (1), т.е. определить значения индикаторов ci;

2.построить «хорошие» оценки для тех неслучайных функций, которые присутствуют в разложении (1);

3.подобрать модель, адекватно описывающую поведение случайных остатков et, и статистически оценить параметры этой модели.

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

Временные ряды отражают тенденцию изменения параметров системы во времени, поэтому входным параметром х является момент времени.

Выходной параметр y называется уровнем ряда. В случае отсутствия ярко выраженных изменений в течение времени, общая тенденция сохраняется. Ряд можно описать уравнением вида

F (t) – детерминированная функция времени.

ET – случайная величина

Во временных рядах проводится операция анализа и сглаживания тренда, который отражает влияние некоторых факторов. Для построения тренда применяется МНК-критерий.

Существуют моментальные и интервальные ряды. В моментальных рядах отражаются абсолютные величины, по состоянию на определенный момент времени, а в интервальных – относительные величины (показатель за год, месяц, и т.д.). Исследование данных при помощи рядов позволяет во многих случаях более четко представить детерминированную функцию. При этом рассчитываются базисные и цепные показатели (прирост, коэффициент роста, коэффициент роста, темп роста, темп прироста, и др.). Под базисными показателями понимают, показатели, которые соотносятся к начальному уровню ряда. Цепные показатели относятся к предыдущему уровню.

Прогноз явлений по временным рядам состоит из двух этапов:

— Прогноз детерминированной компоненты.

— Прогноз случайной компоненты.

Обе проблемы связаны с анализом результатов парных экспериментов. В отличие от аппроксимации и интерполяции анализ временных рядов включает в себя методы оценки случайных компонент. Поэтому прогнозирование при помощи временных рядов является более точным.

Исследование рядов имеет большое значение и для технических, и для экономических систем.

2. Методы нахождения параметров уравнения тренда. Метод наименьших квадратов

Одна из важнейших задач статистики — определение в рядах динамики общей тенденции развития.

Основной тенденцией развития называется плавное и устойчивое изменение уровня во времени, свободное от случайных колебаний. Задача состоит в выявлении общей тенденции в изменении уровней ряда, освобожденной от действия различных факторов.

Изучение тренда включает два основных этапа:

· ряд динамики проверяется на наличие тренда;

· производится выравнивание временного ряда и непосредственно выделение тренда с экстраполяцией полученных результатов.

С этой целью ряды динамики подвергаются обработке методами укрупнение интервалов, скользящей средней и аналитического выравнивания:

1. Метод укрупнения интервалов.

Одним из наиболее элементарных способов изучения общей тенденции в ряду динамики является укрупнение интервалов. Этот способ основан на укрупнении периодов, к которым относятся уровни ряда динамики. Например, преобразование месячных периодов в квартальные, квартальных в годовые и т.д.

Учебник. Прогнозирование спроса для службы проката велосипедов с помощью анализа временных рядов и ML.NET

Сведения о том, как прогнозировать спрос для службы проката велосипедов с помощью одномерного анализа временных рядов по данным, которые хранятся в базе данных SQL Server, с применением ML.NET.

В этом руководстве вы узнаете, как:

  • Определение проблемы
  • загружать данные из базы данных;
  • создавать модели прогнозирования;
  • выполнять оценку модели прогнозирования;
  • сохранять модели прогнозирования;
  • применять модели прогнозирования.

Предварительные требования

  • Visual Studio 2019 или более поздней версии с установленной рабочей нагрузкой «Кроссплатформенная разработка .NET Core».

Общие сведения о примере прогнозирования по временным рядам

Этот пример содержит консольное приложение .NET Core на языке C# , которое прогнозирует спрос для службы проката велосипедов с помощью алгоритма одномерного анализа временных рядов, называемого анализом сингулярного спектра. Код для этого примера можно найти в репозитории dotnet/machinelearning-samples на сайте GitHub.

Определение проблемы

Для эффективной работы крайне важную роль играет правильное управление запасами. Слишком большой запас товаров означает, что значительная его часть хранится на полках и не приносит дохода. Слишком малый запас приводит к потере продаж, а клиенты уходят к конкурентам. Это означает, что постоянно актуален вопрос об оптимальном уровне складских запасов. Анализ временных рядов помогает ответить на этот вопрос путем изучения исторических данных, выявления закономерностей и прогнозирования на их основе значений на некоторый период вперед.

Читайте также  Модели предоставления сестринского ухода

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

В этом руководстве применяется алгоритм Анализ сингулярного спектра (SSA). SSA разбивает временной ряд на набор основных компонентов. Эти компоненты можно интерпретировать как части одного сигнала: тенденции, шумы, сезонные колебания и многие другие факторы. Полученные компоненты реконструируются и применяются для прогнозирования значений на будущие периоды.

Создание консольного приложения

Создайте консольное приложение .NET Core на C# с именем BikeDemandForecasting.

Установите пакет NuGet Microsoft.ML.

В этом примере используется последняя стабильная версия пакетов NuGet, упомянутых выше, если не указано иное.

  1. В обозревателе решений щелкните проект правой кнопкой мыши и выберите Управление пакетами NuGet.
  2. Выберите nuget.org в качестве источника пакета, щелкните вкладку Обзор и найдите Microsoft.ML.
  3. Установите флажок Включить предварительные версии.
  4. Нажмите кнопку Установить.
  5. Нажмите кнопку ОК в диалоговом окне Предварительный просмотр изменений. Затем нажмите кнопку Принимаю в диалоговом окне «Принятие условий лицензионного соглашения», если вы согласны с условиями лицензионного соглашения для выбранных пакетов.
  6. Повторите эти действия для System.Data.SqlClient и Microsoft.ML.TimeSeries.

Подготовка и анализ данных

  1. Создайте каталог с именем Data.
  2. Скачайте файл базы данных DailyDemand.mdf и сохраните его в каталоге Data.

Данные, используемые в этом руководстве, получены из набора данных UCI по аренде велосипедов. Хади Фанаит (Hadi Fanaee-T) и Жуан Гама (Joao Gama), ‘Event labeling combining ensemble detectors and background knowledge’ (Маркировка событий по сочетанию множества датчиков и предварительных знаний), Progress in Artificial Intelligence (2013): стр. 1–15, Springer Berlin Heidelberg, ссылка на веб-страницу.

Исходный набор данных содержит несколько столбцов, соответствующих сезонности и погоде. Для сокращения объема, поскольку для алгоритма в этом руководстве нужны значения только из одного числового столбца, мы уплотнили исходный набор данных, сохранив только следующие столбцы:

  • dteday: дата наблюдения.
  • year: закодированный год наблюдения (0 = 2011, 1 = 2012).
  • cnt: общее число арендованных велосипедов за этот день.

Исходный набор данных сопоставляется с таблицей базы данных в базе данных SQL Server, которая имеет следующую схему.

Ниже приводится пример этих данных.

RentalDate Год TotalRentals
1/1/2011 985
1/2/2011 801
1/3/2011 1349

Создание классов входных и выходных данных

Откройте файл Program.cs и замените существующие инструкции using следующим кодом.

Создайте класс ModelInput . Добавьте приведенный ниже код в класс Program .

Класс ModelInput содержит следующие столбцы:

  • RentalDate: дата наблюдения.
  • Year: закодированный год наблюдения (0 = 2011, 1 = 2012).
  • TotalRentals: общее число арендованных велосипедов за этот день.

Создайте класс ModelOutput под только что созданным классом ModelInput .

Класс ModelOutput содержит следующие столбцы:

  • ForecastedRentals: прогнозируемые значения для прогнозируемого периода.
  • LowerBoundRentals: минимальные прогнозируемые значения для прогнозируемого периода.
  • UpperBoundRentals: максимальные прогнозируемые значения для прогнозируемого периода.

Определение путей и инициализация переменных

В методе Main определите переменные, которые будут хранить расположение данных, строку подключения и расположение для обученной модели.

Инициализируйте переменную mlContext новым экземпляром MLContext , добавив следующую строку в метод Main .

Класс MLContext будет стартовой точкой для любых операций ML.NET. При инициализации класса mlContext создается новая среда ML.NET, которая может использоваться всеми объектами в рабочем процессе создания модели. По существу он аналогичен классу DBContext в Entity Framework.

Загрузка данных

Создайте DatabaseLoader , который загружает записи с типом ModelInput .

Определите запрос для загрузки данных из базы данных.

Алгоритмы ML.NET предполагают, что данные имеют тип Single . Следовательно, полученные из базы данных числовые значения, тип которых отличается от Real (значение одиночной точности с плавающей запятой), необходимо преобразовать в Real .

Столбцы Year и TotalRental в базе данных имеют целочисленные типы. С помощью встроенной функции CAST они приводятся к типу Real .

Создайте DatabaseSource для подключения к базе данных и выполните запрос.

Загрузите данные в IDataView .

Набор данных содержит данные за два года. Для обучения используются только данные за первый год, а данные за второй год откладываются для сравнения фактических значений с прогнозом, созданным моделью. Отфильтруйте данные с помощью преобразования FilterRowsByColumn .

Для отбора данных за первый год извлекаются те строки, у которых значение в столбце Year меньше 1. Для этого параметру upperBound присваивается значение 1. И наоборот, для данных за второй год извлекаются те строки, у которых это значение равно 1. Для этого параметру lowerBound присваивается значение 1.

Определение конвейера анализа временных рядов

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

forecastingPipeline принимает 365 точек данных за первый год и разделяет набор данных временных рядов на выборки за 30-дневные (помесячные) интервалы, как указано в параметре seriesLength . Каждая из этих выборок анализируется по еженедельным (7-дневным) периодам. При определении прогнозируемого значения для предстоящих периодов используются значения за предыдущие семь дней. Модель настроена на прогнозирование семи предстоящих периодов, как определено параметром horizon . Прогноз является лишь предположением, то есть не всегда будет на 100 % точным. Поэтому нам лучше получить диапазон значений, который определяется верхней и нижней границами для наилучшего и наихудшего сценариев. В нашем примере для определения нижней и верхней границ устанавливается уровень достоверности 95 %. Вы можете увеличить или уменьшить этот уровень достоверности. Чем выше значение уровня достоверности, тем шире диапазон между верхней и нижней границами.

Используйте метод Fit , чтобы обучить модель и подогнать данные по ранее определенным forecastingPipeline .

Оценка модели

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

Добавьте новый служебный метод Evaluate под методом Main .

В методе Evaluate примените метод Transform с обученной моделью, чтобы спрогнозировать данные на следующий год.

Чтобы получить фактические значения из примера данных, используйте метод CreateEnumerable .

Чтобы получить прогнозируемые значения, используйте метод CreateEnumerable .

Вычислите разницу между реальными и прогнозируемыми значениями, которая обычно называется ошибкой.

Для оценки точности модели вычислите среднюю абсолютную погрешность и среднеквадратическую погрешность.

Для оценки точности используются следующие метрики.

  • Средняя абсолютная погрешность. Оценивает, насколько близки прогнозы к фактическому значению. Принимает значения в диапазоне от 0 до бесконечности. Чем ближе это значение к 0, тем лучше качество модели.
  • Среднеквадратическая погрешность. Суммирует ошибки в модели. Принимает значения в диапазоне от 0 до бесконечности. Чем ближе это значение к 0, тем лучше качество модели.

Выведите значения метрик на консоль.

Используйте метод Evaluate в методе Main .

Сохранение модели

Если вы довольны поведением модели, сохраните ее для использования в других приложениях.

В методе Main создайте TimeSeriesPredictionEngine . TimeSeriesPredictionEngine — это удобный метод для создания единичных прогнозов.

Сохраните модель в файл с именем MLModel.zip , которое задано ранее определенной переменной modelPath . Выполните метод Checkpoint , чтобы сохранить модель.

Применение модели для прогнозирования спроса

Добавьте новый служебный метод Forecast под методом Evaluate .

В методе Forecast вызовите метод Predict , чтобы получить прогноз по прокату на следующие семь дней.

Сравните фактические и прогнозируемые значения по семи периодам.

В цикле извлекайте выходные данные прогноза и выводите их на консоль.

Запуск приложения

Из метода Main вызовите метод Forecast .

Запустите приложение. Должен отобразиться результат, аналогичный приведенному ниже. Для краткости выходные данные были сжаты.

Сверка фактических и прогнозируемых значений показывает следующие связи:

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

Поздравляем! Вы успешно создали модель машинного обучения для прогнозирования спроса на прокат велосипедов.

Исходный код для этого руководства можно найти в репозитории dotnet/machinelearning-samples.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: