Ежедневные пророки

Исходная информация

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

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

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

Цель

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

Набор данных

Нам предоставляется 3 набора данных:

  1. Почасовая выработка ветровой энергии от Réseau de transport d’électricité (RTE), французского органа по передаче энергии.
  2. Прогнозы ветра (скорость и направление ветра), рассчитанные с помощью модели ветра А в 8 различных местах региона Иль-де-Франс.
  3. Прогнозы ветра (скорость и направление ветра), рассчитанные с помощью модели ветра B в 8 различных местах региона Иль-де-Франс.

Мы извлекли данные, используя предоставленные организаторами сценарии извлечения. В результате наборы данных были интерполированы и сопоставлены с временными метками, когда мы их извлекали, и непосредственно использовались для визуализации и анализа.

Данные с цветовой кодировкой могут дать больше информации. Данные о выработанной электроэнергии, первоначально измеряемые ежечасно, сначала были сгруппированы в 24-часовые столбцы. Затем эти 24 столбца соединяются вместе, чтобы получилась трубчатая таблица. Эта таблица затем условно форматируется. Чем выше стоимость ячейки (т. е. больше электроэнергии), тем экологичнее ячейка. Учитывая длину таблицы, она разделена на фрагменты, чтобы ее можно было разместить на одном экране, который показан на рис. 2. В этом формате мы можем легче увидеть закономерности в данных.

Основная статистика

Среднее значение ежедневных сумм: 422987,539

Медиана дневных сумм: 278750

Среднее значение: 17623,3741

Медиана дневных средств: 11614,5833

Медиана: 10500

Стандартное отклонение: 19073,3131

Наблюдения на макроуровне

  • Летние месяцы дают меньше энергии. В 2017–2019 годах наименее продуктивные дни (которые в основном выделены белым цветом на тепловой карте) в основном приходятся на летние месяцы.
  • С конца 2019 года регион стал значительно более продуктивным.

Автокорреляция генерации энергии

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

Кластеры

Данные можно разделить на три основных типа:

  1. Непродуктивные дни (в основном белые на тепловой карте, обозначены серым цветом на рис. 4)
  2. Короткие продуктивные периоды (менее одного дня зелени на тепловой карте, обозначенной зеленым лаймом на рисунке 4)
  3. Продолжительные продуктивные периоды (более одного дня зеленого цвета на тепловой карте, обозначенные изумрудно-зеленым цветом на рисунке 4)

Большинство непродуктивных дней выпадают небольшими группами по 2–3 дня и почти никогда не длятся более 5 дней. В течение большей части года (особенно в летние месяцы) непродуктивные дни чередуются с 1–2 малопродуктивными днями. Следовательно, чем больше последовательных непродуктивных дней после T+0, тем выше вероятность того, что T+18 будет ветреным.

Продуктивные периоды и внезапные всплески

Чем резче рост генерируемой энергии (т. е. удвоение скорости ветра от одного часа к другому), тем ниже вероятность того, что рост выдержит 18 часов (чтобы наша модель могла извлечь из этого прибыль). Большинство наиболее продуктивных периодов фермы (с высокой выработкой энергии в течение длительного периода времени, т. е. более 2 дней) обусловлено постепенным увеличением скорости ветра.

Модель

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

Ориентир

Нам нужен эталон для оценки производительности нашей модели. Модель прогнозирования постоянства является полезным инструментом для установления эталона для сравнения. В этой модели значение в текущий момент времени (T+0) используется в качестве прогнозируемого значения при T+18. Среднеквадратическая ошибка (MSE) для этой модели прогнозирования составляет 0,445. Другими словами, наша обученная модель должна достичь тестовой ошибки этого значения или ниже, чтобы превзойти прогноз постоянства.

Функции

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

  • История производства энергии ветра от T-120 до T+0, включая стандартизированные значения, разности первого и второго порядка, максимум, минимум, среднее значение и стандартное отклонение. Как показывает анализ данных, количество непродуктивных дней подряд может помочь предсказать, будет ли следующий день продуктивным. Следовательно, в сеть было передано 120 часов данных или 5 дней.
  • Прогнозы ветра при T+18, к ним относятся средняя и стандартизированная скорость ветра и усредненные значения синуса и косинуса направлений ветра при T+18.

Эксперимент

Поскольку настройки по умолчанию имели низкую производительность, например задержку при T+18, среднеквадратичную ошибку выше, чем у прогноза постоянства, и плохую корреляцию выходных данных с фактическими значениями, нам нужно было проверить оптимальные значения. настройки, которые могут дать более точные прогнозы. Сначала мы применили техники, которым обучали на видеосеансах:

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

Затем мы протестировали различные начальные конфигурации, которые определили размер и архитектуру нашей нейронной сети:

  • Количество нейронов в первом скрытом слое.
  • Коэффициент, на который уменьшается каждый последующий скрытый слой.
  • Количество скрытых слоев.
  • Скорость выпадения нейронов.
  • Параметр затухания веса (λ), управляющий размером члена регуляризации.
  • Коэффициент, на который уменьшается размерность входного вектора в автоэнкодере.
  • Оптимизатор, используемый нейронной сетью для выполнения градиентного спуска.

Мы также протестировали функции, которые будут загружены в нейронные сети для обучения:

  • Длина окна прошлой выработки энергии ветра.
  • Продолжительность прогнозов ветра.
  • Методы осреднения скорости и направления ветра.

Устранение неполадок

Время ожидания

Тайм-ауты возникают, когда тренировочная сессия наших моделей длится более 3 часов (ограничение, установленное организатором, чтобы избежать накопления ресурсов сервера). Тайм-ауты связаны с большими размерами входных данных, большими размерами сети и использованием дорогостоящих в вычислительном отношении функций активации. Мы столкнулись с многочисленными тайм-аутами, и ниже приведены несколько примеров, когда наши модели часто получали тайм-ауты:

  • Нейронные сети из 6 и более слоев или сети с 512 нейронами в первом скрытом слое часто теряли время ожидания.
  • Загрузка прошлой истории производства энергии до T-168 (эквивалентно данным за предыдущую неделю), включая импульс и силу.
  • Использование неусредненных данных, т. е. ввод всех 32 значений (скорости ветра и направления ветра из 8 мест, предсказанных двумя моделями ветра).

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

Подгонка

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

  • Представляем больше обучающих данных.
  • Использование более высокого значения λ.
  • Использование более высокого процента отсева.
  • Уменьшение количества функций.

Результаты

После неоднократных проб и ошибок мы остановились на следующих настройках:

  • Сплит тренировка-тестирование 7:3.
  • В первом скрытом слое нейронной сети 256 нейронов.
  • В нашей нейронной сети есть 4 скрытых слоя.
  • Каждый последующий слой уменьшается в 0,25 раза.
  • Адам используется в качестве алгоритма градиентного спуска.
  • Каждый нейрон имеет вероятность отсева 0,1.
  • λ = 10–6 в члене регуляризации.
  • Входы масштабируются после стандартизации.
  • Входные размеры сжимаются автокодировщиком с 369 до 120.
  • Нейроны имеют полиномиальные члены до x2, а tanh используется в качестве функции активации.

Все эти методы были успешно развернуты и снизили потери при тестировании примерно до 0,30–0,31, что ниже нашего эталона. Мы параллельно обучали 20 моделей одной конфигурации, и они постоянно выдавали это значение. Это означает, что наша модель последовательно превосходит модель прогнозирования постоянства при предварительной оценке.

Чтобы оценить, насколько хороши прогнозы, полученные нашей моделью, мы рассмотрели графики корреляции прогнозируемых и фактических значений. Как правило, прогнозы в целом хорошо коррелировали с фактическими значениями. Мы видим, что прогнозы и фактические значения соответствуют линии y = x в обучающих данных. На тестовых данных прогнозы и фактические значения хорошо укладываются в линию y = x, хотя и не так близко, как данные обучения.

Кроме того, графики с запаздыванием показали самый высокий пик при T+1. Этот вывод является наиболее заметным в обучающих данных. Однако в данных тестирования пик не такой резкий, а вторичный пик сопоставимой высоты виден при T+18.

Рисунок 8. Графики запаздывания прогнозов, созданных нашими лучшими конфигурациями.

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

Рисунок 9. Чистая прибыль, полученная нашей моделью.

Улучшения

Другие типы нейронных сетей

В нашем исследовании мы обнаружили, что рекуррентные нейронные сети работают лучше, чем наша нейронная сеть, поскольку они обладают свойством «запоминать» прошлые данные с помощью ячеек LSTM. Следовательно, использование более продвинутого типа нейронной сети, такого как рекуррентные нейронные сети, может повысить производительность нашей задачи.

Возможные улучшения текущей сети

Предпочитается недооценка

В нейронную сеть можно добавить код, чтобы она предпочитала занижение прогноза завышению. В данном сценарии превышение прогноза на 1 кВтч приводит к штрафу в размере 20 евроцентов, тогда как недооценка той же величины приводит только к убыткам в размере 10 евроцентов. Следовательно, нейронная сеть может удвоить ошибку завышенного прогноза в функции потерь, чтобы имитировать сценарий.

День года как характеристика

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

Вывод

Нейронная сеть настроена для прогнозирования производства энергии ветряными турбинами в определенных местах во Франции. В сети используются предыдущие данные о производстве энергии и прогнозы относительно направления и скорости ветра. Сначала нейронная сеть была настроена на большое количество входных данных с ресурсоемкими конфигурациями и постепенно корректировалась, чтобы предотвратить тайм-аут и снизить потери. В конечном итоге нейронная сеть дала потерю примерно 0,30, превзойдя потерю устойчивости 0,445. Прогнозы нейронной сети были уменьшены, чтобы бороться с завышенными прогнозами и получать небольшую прибыль. Предлагаются и обсуждаются усовершенствования нейронной сети.