www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Построение NARX в MATLAB для прогнозирования данных временных рядов.

Дата публикации May 9, 2017

Kenduskeag на высоких потоках. При более низких потоках (вы можете буквально выйти к той скале посередине).

В прошлом году я опубликовалстатья(наPaddleSoftсчет), где я описал прогнозирование потока Kenduskeag с использованием NARX, встроенного в MATLAB. Однако я специально не включил столько технических деталей, которые пытался написать для широкой аудитории. Итак, я создал полное руководство о том, как построить нелинейную авторегрессионную сеть с экзогенным вводом (NARX) в MATLAB для прогнозирования данных временных рядов.

Учебник

Процесс на самом деле довольно прост: импортируйте данные, создайте модель, обучите модель, а затем сделайте прогноз.

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

  1. Импортировать данные

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

Мы называем эту функцию с[X_input,height]=load_data('height.csv')(Обратите внимание, что хотя мы используем xlsread, он все равно будет работать с файлами CSV).

2. Обучение

Давайте теперь посмотрим на наш учебный код:

Давайте немного разбить этот код. Первое, что мы должны сделать, это использовать функцию tonndata, чтобы получить наш ввод в массив ячеек. Далее мы должны выбрать нашу функцию обучения. Лично у меня был наибольший успех с байесовской регуляризацией (т.е. trainbr), однако, это, вероятно, займет больше времени. Потом рreparetsподготовит данные в правильном формате для нашего NARX (24).

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

Затем мы принимаем довольно стандартные решения, такие как обучение / проверка / разделение тестов в строках 28–30, и, наконец, обучаем сеть (строка 30). Остальная часть кода является необязательной, поэтому я не буду вдаваться в подробности. Но не стесняйтесь поиграть и почувствовать, что есть в наличии.

3. Делать прогнозы

Теперь, чтобы сделать наши прогнозы для наших CSV, мы будем использовать наш недавно созданный height_net. Я лично нашел, что проще всего просто разделить тестовые данные на два CSV: один с обоими входами (температура и дождь) и значениями высоты для штампов 0: длина-240, а второй - только с входами для длины-240: длина ( * где длина - это количество строк в нашем тесте CSV). Это примерно соответствует прогнозу для 10-дневного прогноза погоды (то есть с использованием давно известного временного ряда, а затем прогнозирования 10 * 24 штампов, полученных из API погоды). Вы также можете легко разделить данные в самом коде MATLAB, но я считаю, что проще всего сделать это таким образом. Имея это в виду, вот наш код предсказания:

Мы передаем в известной последовательности меток времени воткрытовысота чистая, чтобы получитьxfа такжеaf, Затем мы закрываем сеть, чтобы сделать несколько прогнозов (12). Наконец, мы делаем реальные прогнозы (13). Теперь вы можете посмотреть на прогнозы, посмотрев на y2 или unknownY, который мы переназначили.

Я надеюсь, что этого примера достаточно, чтобы намочить ноги при помощи NARX в MATLAB. В будущем я надеюсь больше вникнуть в преимущества NARX по сравнению с другими RNN, такими как LSTM.

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

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map