Насколько хорошо мы можем предсказать солнечную радиацию, имея данные обучения за год?
В Соединенных Штатах растет производство энергии на солнечной энергии. Согласно EIA, штат Техас планирует к концу 2022 года добавить 10 гигаватт (ГВт) солнечных мощностей в масштабе коммунальных услуг. Это означает, что также растет потребность в управлении энергопотреблением, как краткосрочные и долгосрочные. В этом случае можем ли мы использовать данные о солнечной энергии для составления краткосрочных и долгосрочных прогнозов, которые помогут нам контролировать / управлять / распределять производство электроэнергии?
Солнечное излучение - это тип свойства, которое используется для измерения солнечного излучения. Существуют различные виды измерений: общая солнечная освещенность, спектральная солнечная освещенность, глобальная горизонтальная освещенность и т. Д. Измерения выполняются в основном с помощью спутниковых или наземных датчиков. В этом исследовании мы будем использовать измерения датчика поверхности.
Национальное управление океанических и атмосферных исследований (NOAA) поддерживает несколько точек измерения для ежедневной регистрации солнечной радиации на поверхности Земли. Это типичные данные временных рядов, поэтому мы можем использовать машинное обучение для прогнозирования будущей освещенности. Будущие прогнозы солнечной радиации могут быть полезны для оценки того, сколько энергии может быть произведено солнечным генератором в дни, недели или даже месяцы. Это полезно для управления распределением энергии из различных источников.
Данные
Ежедневные данные о поверхностной радиации с 7 станций в США были получены с ftp-сайта NOAA:
https://gml.noaa.gov/aftp/data/radiation/surfrad/
Данные доступны ежедневно, т.е. всего 365–366 файлов в год для каждого местоположения. Ручная загрузка этих данных - болезненная задача. Ниже я сделал небольшой скрипт для автоматизации загрузки в зависимости от местоположения и года, если вы заинтересованы в использовании этих данных для любого анализа:
Исследование данных
Данные доступны с интервалом ~ 17 секунд ежедневных записей, что составит более 520 000 наблюдений на одно место в год. Если мы будем использовать его в течение нескольких лет, это станет большим набором данных. В этом исследовании данные были преобразованы в среднечасовые и дневные средние значения, что значительно уменьшило размер, что позволило маленькому ПК обучаться в довольно больших нейронных сетях. С этими данными доступно более 28 функций. Однако для этого исследования мы выбрали только одну важную характеристику, «несолнечное» излучение, в качестве одномерного временного ряда для прогнозирования. Солнечная радиация - это сезонное явление, поэтому ее можно эффективно моделировать с помощью алгоритмов машинного обучения.
Ниже мы можем увидеть сезонный ход солнечной радиации для 2020 года, усредненный за 10 дней. Очевидно, что летом радиация будет высокой, поэтому мы можем наблюдать горб в середине этого графика. Помимо этого, облучение также должно быть периодическим на ежедневной основе. Поэтому данное исследование ориентировано на краткосрочные прогнозы (почасовые до 10 дней).
Моделирование
Моим первоначальным интересом для этого исследования было создание модели для краткосрочного прогнозирования - от нескольких часов до 10 дней. Поэтому я использовал данные только за один год для целей обучения (в данном случае измерения за 2020 год) и использовал их для прогнозирования данных 2021 года. Но у нас еще нет всех данных за 2021 год (на момент написания этой статьи сегодня 16 июня 2021 года), поэтому имеет смысл сделать прогноз на неизвестный период после этой даты. Для почасовых прогнозов данные были пересчитаны на средние значения за 1 час, а для ежедневных прогнозов данные были пересчитаны на средние значения за 1 день.
Наш подход к моделированию начался с применения традиционных методов моделирования, таких как ARIMA и SARIMAX. Однако эти модели не смогли хорошо обобщить эти данные. Возможно, это потому, что данных за один год недостаточно. Кроме того, текущие данные сильно колеблются в измерениях, что может добавить к модели дополнительный шум. (Стоит попробовать тренироваться по скользящей средней, чего я еще не делал!). С другой стороны, архитектура модели, подобная нейронной сети, такая как LSTM, кажется, очень хорошо работает с временными рядами.
Долговременная краткосрочная память (LSTM)
LSTM - это повторяющиеся нейронные сети, которые могут хранить память из прошлого. Именно поэтому сети LSTM очень полезны для прогнозирования последовательных данных. Подробная информация о LSTM выходит за рамки этой статьи, но вы легко можете найти ее в Интернете. В следующем разделе я покажу вам предварительные результаты применения LSTM радиационных временных рядов.
Ниже приведен пример архитектуры LSTM, использованной для окончательного моделирования. Если вас интересуют полные коды, я даю ссылку на GitHub в конце этой статьи.
Оценка обучения
Прежде чем делать какой-либо прогноз, давайте посмотрим, как прогнозирование модели выполнялось на фактическом наборе данных. Для текущих данных наша модель показала хорошие результаты для краткосрочного прогнозирования. По мере увеличения периода задержки наша модель начинает плохо работать.
Прогноз на будущее
На протяжении всего периода исследования самой сложной частью было выяснить, как сделать прогноз на неизвестный период. В Интернете есть множество материалов, в которых сравниваются данные обучения и тестирования для прогнозируемых временных рядов, но лишь немногие из них показывают фактические прогнозы неизвестному. В частности, очень трудно найти работающий код, и, честно говоря, мне было трудно заставить свой код работать для этой части. Ниже приведен пример функции, которую я использовал для составления прогноза. Если вы хотите использовать этот код, вам придется использовать оба блока кода, показанные ниже:
Вот пример того, как выглядит итоговый фрейм данных:
После этого вы можете использовать любую библиотеку визуализации для построения графика результата. Я считаю библиотеку plotly особенно полезной, потому что она позволяет увеличивать и уменьшать масштаб, что очень удобно для данных временных рядов.
Результат прогноза
Наконец, пора взглянуть на результат прогнозирования. Я тестировал 24-часовой, 10-дневный и 30-дневный прогноз с этой моделью. В целом прогнозы на 24 часа и 10 дней были достаточно хорошими. Для 30-дневного прогноза модель не сработала, что и следовало ожидать, поскольку мы использовали данные только за 1 год для целей обучения.
Выводы
- Настоящее исследование показывает многообещающие результаты краткосрочного прогнозирования и среднесрочного (до 10 дней) прогнозирования. В долгосрочной перспективе модель необходимо обучать на большем количестве исторических данных. Сценарий для загрузки данных за несколько лет будет удобен при обработке большого количества файлов, что означает, что я мог бы легко включить в анализ больше исторических данных.
- Краткосрочные колебания текущих данных огромны, поэтому имеет ли смысл использовать скользящие усредненные данные для обучения традиционных моделей, таких как SARIMAX?
- Наконец, в данных о радиации есть много дополнительных функций, и поэтому было бы интересно посмотреть, будет ли многомерное прогнозирование работать лучше. Это то, что нужно проверить на будущее!
Ссылка на GitHub:
Linkedin: https://www.linkedin.com/in/suman-gautam-9091572b/