прогнозирование в matlab

20 сообщений / 0 новых
Последнее сообщение
прогнозирование в matlab

Здравствуйте, Ирина Чучуева. Очень интересный блог ведете, много статей прочитал. Стал немного понимать:) Сам недавно начал заниматься прогнозированием с помощью нейронных сетей и для себя выбрал matlab. Но вот никак не могу разобраться с нейронными сетями в  нем. В одной из статей Вы упоминали о том, что matlab один из основных ваших инструментов в прогнозировании. 

Задача у меня следующая: есть данные по температуре на каждый час в течении года и есть данные по электропотреблению тоже на каждый час в течении года. Необходимо обучить сеть так, чтобы спрогнозировать значения электропотребления на следующий год.Запускаю интерфейс nnstart и там использую Инструмент временных рядов (time series tool), после чего на вход нейронной сети подаю данные температуры, а на выход данные электропотребления. После чего тренирую сеть, она что-то там тренирует, графики мне показывает, но я по ним ничего понять не могу почти и как дальше спрогнозировать значения тоже не пойму. 

Очень надеюсь на Вашу помощь и совет. Спасибо:) 

Добрый день, Максим! Спасибо

Добрый день, Максим! Спасибо за добрые слова, вы молодец, что стараетесь понимать. Со временем понимание придет.

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

  1. У вас имеются данные по температуре и энергопотреблению почасовые. Это отлично! Сколько лет у вас истории?
  2. Какой прогноз вам нужен: на год вперед в разрешении час? То есть вы хотите получить 365*24= 8760 почасовых значений вперед?

----------------------
Ирина Чучуева,
команда Математического бюро

история за 4 года, но они

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

Максим, если задача состоит в

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

С прогнозом не поняла. Вы когда дырки закроете, то будете дальше прогнозировать? Не путайте задачи, пожалуйста. Скажу вам честно, что имея данные за 2-3 года получить качественный прогноз почасовой (!) на целый год вперед — это утопия. У вас задача ученическая или реальная? Если ученическая, то делайте дальше! Если задача реальная, то нужно уточнять постановки.

----------------------
Ирина Чучуева,
команда Математического бюро

Задача ученическая. Да я уже

Задача ученическая. Да я уже понял, что имея данные за год нет смысла прогнозировать на год вперед, поэтому сейчас стоит задача хотя бы на месяц или даже неделю... Цель моя не залатать дырки, а именно спрогнозировать значения. Программу выбрал matlab и встроенные в него инструменты нейронных сетей. Но вот застрял на том, как обучать сеть и сделать прогноз в нем. Входные данные подаю температуру на каждый час в течении года, на выход подаю значения энергопотребления тоже на каждый часв течении года. как я понимаю при обучении сеть должна определить зависимость выходных данных от входных. Но вот каким образом дальше сделать прогноз на месяц или неделею, да даже 1-2 следующих не могу разобраться. Просто подумал, что вы с этим работали в матлабе и можете дать совет или направить в нужном направлении:)

Про интерполяцию поняла.

Про интерполяцию поняла. Правильно сделали, что бросили эту затею.

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

  1. Я сделала пост на тему создания нейронной сети. Смотрите, если не видели.
  2. На выход нейронной сети подается то, что у вас является выходом. Самое простое для вас получить все недельные значения (168 почасовых значения) разом. То есть ваша сеть в самом простом варианте должна иметь 168 выхода. И при обучении туда подается фактические значения за известный период.
  3. На вход нейронной сети подается то, что что является значениями, от которых прогноз зависит. Например, если мы делаем прогноз на час вперед (на час t), то у нас один выход (часовое значение) и, например, 3 входа — то есть временной ряд за моменты времени t-1, t-2 и t-3.
  4. Если у вас будет такой громадный выход (168 значений), то вход (кол-во выходных) должно быть не менее чем в два раза больше. То есть сеть у вас выйдет огромная.
Можете попробовать сделать такую громадную сеть на первом этапе, но это неудобно.

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

У меня пока ощущение, что вы что-то запихнули в сеть, она вам что-то выдала. И непонятно, что делать с входным что-то, также как непонятно, что делать с результатом.

----------------------
Ирина Чучуева,
команда Математического бюро

Здравствуйте еще раз:)

Здравствуйте еще раз:) Скажите, пожалуйста, почему Вы в вашем примере берете потребление за 2-е предыдущих суток? Это оптимальное количество? Или чем больше, тем лучше?

Maksim wrote:почему Вы в
Maksim wrote:
почему Вы в вашем примере берете потребление за 2-е предыдущих суток? Это оптимальное количество? Или чем больше, тем лучше?

Я пробовала для тестового примера разные варианты (штук 10). Вариант с 48 входами оказался наиболее точным. Однако, если комплексно подходить к делу, то лучше попробовать перебором вычислить, какое кол-во входов приводят к максимальной точности, тем более, что время расчета не такое значительное. Кол-во входов для вашего ряда будет зависеть от характера именно временного ряда. Вероятно, тут сложно сделать обобщенную рекомендацию. Это и есть долгий и трудоемкий процесс обучения нейронной сети :-)

----------------------
Ирина Чучуева,
команда Математического бюро

И еще немного не понимаю,

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

Может попробывать расширить

Может попробывать расширить вход и брать 48 значений температуры и 48 значений энергопотребления?

Да, если у вас два ряда, то

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

----------------------
Ирина Чучуева,
команда Математического бюро

Здравствуйте. И снова прошу

Здравствуйте. И снова прошу Вашей помощи:) При использовании встроенного функционала построения нйронных сетей в MATLAB есть закладка, где неоходимо выбрать, что-то вроде вида сети. Есть разные варианты: NAR (nonlinear autoregressive) , NARX (nonlinear autoregressive with external input), Nonlinear Input-Output. В первом варианте NAR вот такая вот картинка http://prntscr.com/182tvz, во втором http://prntscr.com/182txt Не могли бы Вы мне подсказать это метод обучения сети или вид нейронной сети или что-то другое?:) Спасибо.

Хотя дальше написано, что

Хотя дальше написано, что метод обучения сети алгоритм Левенберга-Марквардта. Значит это уже не метод обучения, вот здесь я и запутался.

Добрый день, Максим!

Добрый день, Максим!

Методы обучения и архитектура сети — это разные вещи! На картинка по ссылкам изображены разные архитектуры.

  1. NAR модель используется для прогноза только предыдущие значени того же ряда y(t).
  2. А NARX модель использует для прогноза 2 временных ряда: исходный y(t) и x(t).

Какой у вас вариант зависит от того, как вы прогнозируете: с внешним фактором x(t) или без него?

Что касается Levenberg–Marquardt algorithm, то я с ним не работала, но по описанию Википедии мне понятно, что они делают. Не думаю, что вам стоит с этим подробно разбираться.

----------------------
Ирина Чучуева,
команда Математического бюро

Спасибо большое. До того как

Спасибо большое. До того как прочитал Ваше сообщение уже дошло, что это архитектура сети:) Сейчас все таки разбираюись с алгоритмом обучения в MATLAB. Но еще есть небольшая непонятка вот на этой картинке http://prntscr.com/187g6t Вроде бы все понятно в архитектуре, но вот не могу найти нигде, что разработчики подразумевает под блоком "b". Остальные обозначения понятны. 

И еще, если Вам не сложно, могли бы вы меня поправить, если я не прав. 1:2 на картинке это вроде как запаздывание или задержка. Как я понимаю это нужно, чтобы сеть при обучении учитывала 2 предыдущих значения?

Maksim wrote:что разработчики
Maksim wrote:
что разработчики подразумевает под блоком "b".

Это смещение, единичный доп вход в сеть. Вот тут уже спрашивали насчет смещения в нейронных сетях.

Maksim wrote:
1:2 на картинке это вроде как запаздывание или задержка.

Вот это обозначение, кстати, наверное, единственное мне неясное на картинке. Все остальное вроде ясно: один вход, один выход, 10 нейронов в скрытом слое, один в выходном слое. Весьма вероятно, что это смещение, то есть используется не y(t), а y(t-1). Иначе не видно, чтобы система прогнозировала... Но не очень похоже, что 1:2 делает из одного входа два... Не очень читаемая картинка.

----------------------
Ирина Чучуева,
команда Математического бюро

Добрый день Ирина. Вы не

Добрый день Ирина. Вы не знаете, есть ли люди на этом форуме, которые очень хорошо разбираются в матлабе 2012? В частности nnstart clustering?

Здравствуйте! Прошу прощения

Здравствуйте! Прошу прощения за задержку, была в отпуске.

Вы знаете, тут как-то MATLAB как средство не обсуждалось особенно. Вам стоит посмотреть на сайт MATLABa и тамошний очень удобный форум по продукту в большей степени — http://www.mathworks.com/matlabcentral/answers/

----------------------
Ирина Чучуева,
команда Математического бюро

Здравствуйте

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

 

Я не занимаюсь составлением

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

----------------------
Ирина Чучуева,
команда Математического бюро

2010 - 2018 © Математическое бюро

Все права защищены в соответствии с законодательством РФ

При полном или частичном использовании материалов ссылка на сайт обязательна