Обучение MLP нейронной сети на данных временных рядов?

Вопрос или проблема

У меня вопрос новичка, но мне было интересно узнать, можно ли обучить нейронную сеть типа MLP на данных временного ряда?

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

Я экспериментирую в Python с библиотекой Tensorflow Keras и знаю, что по умолчанию в процессе обучения данные случайным образом перемешиваются. Это недопустимо для задачи временного ряда, где случайное перемешивание уберет сезонность из данных? (стационарные/нестационарные) Результаты перемешивания данных на первый взгляд неплохи, но без случайного перемешивания результаты для MLP NN плохие, как будто модель плохо обучается.

Я знаю, что другие методы прогнозирования временных рядов могут включать ARIMA, LSTM и т. д., но мне было интересно узнать, можно ли использовать MLP для этих целей тоже? Мне в конечном итоге нужен метод краткосрочного прогнозирования, который может включать почасовой прогноз погоды (из веб-API) для прогнозирования будущего почасового потребления электроэнергии зданием. Буду признателен за любые советы.

Спасибо

Я разместил тот же вопрос на публикацию о машинном обучении об удалении тенденций и трансформации разностей сезонности для данных временных рядов. Джейсон Браунли ответил на мои вопросы:

Да, вы можете использовать MLP, CNN и LSTM. Сначала требуется преобразовать данные в задачу поднадзорного обучения с использованием скользящего окна:

https://machinelearningmastery.com/time-series-forecasting-supervised-learning/

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

https://machinelearningmastery.com/backtest-machine-learning-models-time-series-forecasting/

Вы можете увидеть десятки уроков и мою книгу об этом здесь:

https://machinelearningmastery.com/start-here/#deep_learning_time_series

МОЙ ОТВЕТ НА ЭТО СООБЩЕНИЕ

Бен 12 февраля 2021 года, 8:09 #

Круто, спасибо за всю информацию. Если я использую мультимодальное скользящее окно для MLP NN, следует ли при обучении модели использовать shuffle_data == True? Или я не должен перемешивать обучающие данные…? Огромное спасибо!

Ответ Джейсона на мой вышеупомянутый вопрос

Джейсон Браунли 12 февраля 2021 года, 13:36 #

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

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

Не моя работа:
https://www.kaggle.com/abhishek/entity-embeddings-to-handle-categories

.

Ответ или решение

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

Теория

MLP — это разновидность искусственной нейронной сети, состоящая из нескольких слоев нейронов, которая обучается с использованием обратного распространения ошибки. В отличие от рекуррентных нейронных сетей, таких как LSTM, MLP не имеет внутренней памяти или механизма обработки последовательностей, что делает его менее подходящим для непосредственной обработки временных рядов. Однако, временные ряды можно преобразовать в формат задачи контролируемого обучения, что позволяет использовать MLP.

Преобразование данных

Для применения MLP к данным временных рядов сначала необходимо преобразовать их в задачу контролируемого обучения. Процесс называется методом скользящего окна. Он заключается в создании "окна" недавних временных точек, которые будут использованы в качестве входных данных, а следующий временной шаг будет выступать в роли целевой метки. Таким образом, у вас получится набор данных тренировки, готовый для sklearn или других библиотек машинного обучения.

Валидация модели

Даже если вы используете MLP, основная сложность остается в корректной валидации и тестировании модели. Методика проверочной валидации с учетом временного порядка данных, известная как "walk-forward validation", позволяет оценивать модели, сохраняя временную последовательность.

Пример

Рассмотрим пример с прогнозированием мощности здания с учетом погодных данных:

  1. Преобразование данных: Создайте матрицу, где каждая строка содержит погодные условия и отслеживаемую мощность за предыдущие ‘n’ часов (скользящее окно), а метка — мощность в следующий час.
  2. Нейронная сеть: Создайте MLP с входами, соответствующими размеру окна, и обучите на преобразованных данных.
  3. Валидация: Реализуйте "walk-forward validation", чтобы обеспечить тестирование модели на данных, которые всегда находятся в будущем от тренировочного набора.

Применение

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

  • Не стоит перемешивать данные времени ряда: Это бы нарушило временные зависимости и ухудшило бы точность модели. Работа с неразмешанными данными позволит модели лучше выявить временные зависимости и тренды.
  • Используйте одноразовое кодирование и/или встраивания сущностей: Так как у вас есть категориальные временные переменные (дни недели, месяцы и т.д.), используйте одноразовое кодирование, или попробуйте встраивание сущностей для лучшей обработки в модели нейронной сети.

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

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

Оцените материал
Добавить комментарий

Капча загружается...