Долгосрочное прогнозирование ежедневных цен на электроэнергию (пример)

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

(Различия между версиями)
Перейти к: навигация, поиск
Строка 1: Строка 1:
== Постановка задачи ==
== Постановка задачи ==
-
У нас есть временной ряд из матрицы <tex>X</tex> признаков и вектора <tex>Y</tex> ответов. Нам необходимо восстановить вектор ответов <tex>\hat{Y}</tex> по матрице признаков <tex>\hat{X}</tex>. Известно, что временной ряд, который необходимо восстановить идет непосредственно после временного ряда, ответы для которого нам известны.
+
Задана выборка <tex> D= \Bigl\{(\mathbf{x^i}, \mathbf{y^i})\Bigr\} _1 ^ m -</tex> множество <tex> m </tex> пар, состоящих из вектора значений свободных переменных <tex>\mathbf{x^i} </tex> и значения зависимой переменной <tex>\mathbf{y^i} </tex>. Индекс <tex> i </tex> объектов далее будем рассматривать, как элементы множества <tex> i \subset I =\Bigl\{1, \cdots, m\Bigr\}. </tex> Выборка разбивается на два множества <tex> I= \mathfrak{L} \sqcup \mathfrak{C} </tex> на обучающую и контрольную. Контрольная выборка содержит данные за последний месяц.
-
Предлагается использовать функционал качества MAPE:
+
Дан временной ряд
-
+
<tex>x=\begin{Vmatrix}
-
: <tex>{ Q(\hat{Y}) = \sum_{i=1}^n \frac{|y_i-\hat{y}_i|}{|y_i|}</tex>,
+
-
+
-
где <tex>\hat{Y} = (\hat{y}_1, \hat{y}_2, \dots, \hat{y}_n )</tex> -- восстановленные ответы, а <tex>Y = (y_1, y_2, \dots , y_n)</tex> -- правильные ответы.
+
-
 
+
-
== Описание данных ==
+
-
 
+
-
У нас есть данные с 01/01/2003 до сегодняшнего дня. Данные для прогнозирования состоят из временного ряда, различных погодных параметров (температура, скорость ветра, относительная влажность, ...) и средних цен на электричество.
+
-
 
+
-
В нашей задаче мы используем следующие данные - матрицу переменных '''xRegression''' и вектор откликов '''yRegression'''. Мы будем обозначать их '''X''' и '''Y''' соответственно. Размер '''X'''
+
-
-- <tex>n\times m</tex>, где <tex>n</tex> -- количество объектов (временной ряд дней), а <tex>m</tex> -- количество переменных. Размер '''Y'''
+
-
-- <tex>n\times 1</tex>.
+
-
 
+
-
Первый столбец <tex>X</tex> и <tex>Y</tex> -- временной ряд. Второй столбец <tex>Y</tex> -- вектор откликов. Они нормализованы на среднегодичное значение. Количество переменных в <tex>X</tex> -- 26. Они представлены в таблице ниже.
+
-
 
+
-
{| class="wikitable" style="text-align: center;"
+
-
|- bgcolor="#cccccc"
+
-
! width=30 % |#
+
-
! width=160 % | Описание
+
-
|-
+
-
| '''1''' || временной ряд
+
-
|-
+
-
| '''2-6''' || день недели
+
-
|-
+
-
| '''7-18''' || месяц
+
-
|-
+
-
| '''19''' || средняя температура
+
-
|-
+
-
| '''20''' || индекс HDD
+
-
|-
+
-
| '''21''' || индексCDD
+
-
|-
+
-
| '''22''' || максимальная температура
+
-
|-
+
-
| '''23''' || минимальная температура
+
-
|-
+
-
| '''24''' || относительная влажность
+
-
|-
+
-
| '''25''' || осадки
+
-
|-
+
-
| '''26''' || скорость ветра
+
-
|-
+
-
|}
+
-
=== Предположения о характере данных ===
+
-
 
+
-
* Предполагается, что отсчеты времени сделаны через равные промежутки.
+
-
 
+
-
* Предполагается, что ряд имеет периодическую составляющую.
+
-
 
+
-
* Предполагается, что ряд имеет пропущенные значения.
+
-
 
+
-
* Предполагается, что длина ряда кратна периоду. Это условие можно достичь, присоединив к началу ряда необходимое число пропущенных значений.
+
-
 
+
-
В нашем случае, данные имеют ярко выраженную годовую периодическую составляющyю. Это можно проследить на примере данных о средней температуре за день.
+
-
[[Изображение:Data-mean_temp.png|800px]]Data-mean_temp.png
+
-
 
+
-
 
+
-
 
+
-
==Пути решения задачи==
+
-
 
+
-
 
+
-
* Данные имеют годовую периодику. Будем выполнять прогноз с горизонтом прогноза, равным длине периода, при помощи авторегрессии.
+
-
 
+
-
* Параметры модели, с помощью которых выполняется прогноз вектора Y, находятся с помощью алгоритма [[Метод наименьших углов (пример)|LARS]].
+
-
 
+
-
===Авторегрессия===
+
-
 
+
-
Построение авторегрессионной матрицы. Дан временной ряд <tex>
+
-
x=\begin{Vmatrix}
+
x_1 \\
x_1 \\
x_2 \\
x_2 \\
Строка 93: Строка 25:
Обозначим столбцы матрицы <tex> x_k, \cdots x_1\\ </tex>. Для каждого столбца <tex> i </tex> матрицы <tex> X </tex> построим набор моделей-предикатов. Для это зафиксируем столбец <tex> x_i </tex> , считая, что прогнозируеем значение ряда в момент времени <tex> i+k </tex>.
Обозначим столбцы матрицы <tex> x_k, \cdots x_1\\ </tex>. Для каждого столбца <tex> i </tex> матрицы <tex> X </tex> построим набор моделей-предикатов. Для это зафиксируем столбец <tex> x_i </tex> , считая, что прогнозируеем значение ряда в момент времени <tex> i+k </tex>.
 +
==Пути решения задачи==
 +
 +
* Прогноз вектора <tex> \mathbf{y} </tex> с горизонтом прогноза, равным длине периода выполняется при помощи авторегрессии.
 +
* Прогноз временных рядов матрицы <tex> X </tex> выполняется при помощи авторегрессии. Построение вектора <tex> \mathbf{y} </tex> по матрице признаков <tex> X </tex>, выполняется при помощи [[Метод наименьших углов (пример)|LARS]].
 +
 +
===Авторегрессия===
 +
 +
Построение авторегрессионной матрицы.
 +
Зафиксируем столбец <tex> x_i </tex>, и для каждого из них построим набор моделей предикатов.
Для каждого из прочих столбцов <tex> x_j, j= 1 \cdots ,k\\ </tex> решим задачу линейной регрессии <tex> |x_i-\mathbf{G_jw}\|^2\longrightarrow\min </tex>, где матрица
Для каждого из прочих столбцов <tex> x_j, j= 1 \cdots ,k\\ </tex> решим задачу линейной регрессии <tex> |x_i-\mathbf{G_jw}\|^2\longrightarrow\min </tex>, где матрица
<tex>
<tex>
-
X=\begin{Vmatrix}
+
G=\begin{Vmatrix}
g_1(x_mj) & g_2(x_mj) \cdots & g_r(x_mj) \\
g_1(x_mj) & g_2(x_mj) \cdots & g_r(x_mj) \\
g_1(x_(m-1)j & g_2(x_(m-1)j) \cdots & g_r(x_(m-1)j \\
g_1(x_(m-1)j & g_2(x_(m-1)j) \cdots & g_r(x_(m-1)j \\
Строка 112: Строка 53:
-
==Вычислительный эксперимент==
 
-
===Авторегрессия===
 
-
 
-
Выборка разбивается на обучающую и тестовую. Тестовой выборкой являются данные за последний год. Прогнозирование выполняется с помощью построения авторегрессионной матрицы. На примере нескольких временных рядом посмотрим, как реальные данные соотносятся с прогнозируемыми.
 
-
 
-
====Cредняя температура====
 
-
 
-
[[Изображение:Mean temp.png#filelinks|800px]]
 
-
 
-
====Минимальная температура====
 
-
 
-
[[Изображение:Low temp.png#filelinks|800px]]
 
-
 
-
====Индекс HDD====
 
-
 
-
[[Изображение:Heating days.png#filelinks|800px]]
 
-
 
-
 
-
 
-
====Осадки====
 
-
 
-
[[Изображение:Precipitation.png#filelinks|800px]]
 
-
 
-
 
-
===LARS===
 
-
 
-
Выборка разбивается на обучающую и тестовую. Тестовой выборкой являются данные за последний год. Вектор Y находим с помощью алгоритма LARS.Проверим, насколько реальные данные соотносятся с прогнозируемыми.
 
-
 
-
====График LARS====
 
-
 
-
[[Изображение:Price.png#filelinks|800px]]
 
-
 
-
====График MAPE====
 
-
 
-
[[Изображение:Mape.png#filelinks|800px]]
 
-
 
-
==Код==
 
-
 
-
 
-
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/electricity%20forcasting/autoregression.m autoregression.m]
 
-
 
-
 
-
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/FeatureSelectionStep/lars.m lars.m]
 
==Смотри также==
==Смотри также==
-
 
+
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/electricity%20forcasting ссылка на статью и код]
-
* [[Прогнозирование ежедневных цен на электроэнергию (отчет)]]
+
-
* [[Метод наименьших углов (пример)|Метод наименьших углов]]
+
==Литература==
==Литература==
Строка 186: Строка 82:
|год = 2006
|год = 2006
}}
}}
 +
# {{книга
 +
|автор = Hsiao-Tien Pao
 +
|ссылка = http://www.springerlink.com/content/h422246780708564
 +
|заглавие = A Neural Network Approach to m-Daily-Ahead Electricity Price Prediction
 +
|год = 2006
 +
}}
 +
# {{книга
 +
|автор = Wei Wu, Jianzhong Zhou,Li Mo and Chengjun Zhu
 +
|ссылка = http://www.springerlink.com/content/m321712571941311/
 +
|заглавие = Forecasting Electricity Market Price Spikes Based on Bayesian Expert with Support Vector Machines
 +
|год = 2006
 +
}}
 +
{{Задание|Раиса Джамтырова|В.В.Стрижов|24 декабря 2010|Раиса Джамтырова|Strijov}}
{{Задание|Раиса Джамтырова|В.В.Стрижов|24 декабря 2010|Раиса Джамтырова|Strijov}}
[[Категория:Практика и вычислительные эксперименты]]
[[Категория:Практика и вычислительные эксперименты]]

Версия 20:54, 22 ноября 2010

Содержание

Постановка задачи

Задана выборка  D= \Bigl\{(\mathbf{x^i}, \mathbf{y^i})\Bigr\} _1 ^ m  - множество  m пар, состоящих из вектора значений свободных переменных \mathbf{x^i} и значения зависимой переменной \mathbf{y^i} . Индекс  i объектов далее будем рассматривать, как элементы множества  i \subset I =\Bigl\{1, \cdots, m\Bigr\}. Выборка разбивается на два множества  I= \mathfrak{L} \sqcup \mathfrak{C} на обучающую и контрольную. Контрольная выборка содержит данные за последний месяц.

Дан временной ряд x=\begin{Vmatrix}
x_1 \\
x_2 \\
\vdots \\
x_T
\end{Vmatrix}
.

Составляется  (m {X} k) -матрица значений временного ряда:


X=\begin{Vmatrix}
x_T    & x_T-1 \cdots & x_T-k+1 \\
x_(m-1)k & x_(m-1)k-1   \cdots & x_(m-2)k+1  \\
\vdots     
\\
x_k & x_k-1  \cdots & x_1\\
\end{Vmatrix}
, в которой длина ряда  T= mk .

Обозначим столбцы матрицы  x_k, \cdots  x_1\\ . Для каждого столбца  i матрицы  X построим набор моделей-предикатов. Для это зафиксируем столбец  x_i , считая, что прогнозируеем значение ряда в момент времени  i+k .

Пути решения задачи

  • Прогноз вектора  \mathbf{y} с горизонтом прогноза, равным длине периода выполняется при помощи авторегрессии.
  • Прогноз временных рядов матрицы  X выполняется при помощи авторегрессии. Построение вектора  \mathbf{y} по матрице признаков  X , выполняется при помощи LARS.

Авторегрессия

Построение авторегрессионной матрицы. Зафиксируем столбец  x_i , и для каждого из них построим набор моделей предикатов. Для каждого из прочих столбцов  x_j, j= 1 \cdots  ,k\\ решим задачу линейной регрессии  |x_i-\mathbf{G_jw}\|^2\longrightarrow\min , где матрица


G=\begin{Vmatrix}
g_1(x_mj)    & g_2(x_mj) \cdots & g_r(x_mj) \\
g_1(x_(m-1)j & g_2(x_(m-1)j)   \cdots & g_r(x_(m-1)j  \\
\vdots     
\\
g_1(x_j) & g_2(x_j)  \cdots & g_r(x_j)\\
\end{Vmatrix}

Функции  g_1, \cdots , g_r заданы или определены, исходя из дополнительных условий.

Выбирается заданное число  p векторов  G_jw , доставляющих наибольшее значение функционалу качества. Обозначим  P - множество выбранных индексов  {j} . Строится корректор над множеством моделей-предикатов- линейная регрессия  |x_i-\mathbf{H_pb}\|^2\longrightarrow\min с ограничением на неотрицательность векторов  b . Матрица  H_p - присоединённые векторы  G_jw . Прогнозируемое значение ряда  x в момент времени  k+i равно значению первого элемента вектора  H_pb .



Смотри также

ссылка на статью и код

Литература

  1. Vadim Strijov Model Generation and its Applications in Financial Sector. — 2009.
  2. Bradley Efron, Trevor Hastie, Iain Johnstone and Robert Tibshirani Least Angle Regression. — 2002.
  3. Стрижов В.В Методы выбора регрессионных моделей. — 2010.
  4. Rafal Weron Modeling and Forecasting Electricity Loads and Prices. — 2006.
  5. Hsiao-Tien Pao A Neural Network Approach to m-Daily-Ahead Electricity Price Prediction. — 2006.
  6. Wei Wu, Jianzhong Zhou,Li Mo and Chengjun Zhu Forecasting Electricity Market Price Spikes Based on Bayesian Expert with Support Vector Machines. — 2006.


Данная статья является непроверенным учебным заданием.
Студент: Раиса Джамтырова
Преподаватель: В.В.Стрижов
Срок: 24 декабря 2010

До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}.

См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.

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