AAYMA
RU
Войти

NeuroHub

Исследование в ноутбуках по прогнозу нормализованной активной мощности ветрогенератора: сравниваются RNN, LSTM, CatBoost и SARIMA, есть прогноз…

Прототип
Команда «NeuroHub» 18💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: NeuroHub
Кейс HackAlem.ai: Энергетика — Самрук-Казына
Стадия: Прототип

Задача кейса: AI-агент, прогнозирующий выработку ветровой электростанции по погодным данным

Суть

Исследование в ноутбуках по прогнозу нормализованной активной мощности ветрогенератора: сравниваются RNN, LSTM, CatBoost и SARIMA, есть прогноз CatBoost на 48 часов по погоде Open-Meteo.

Как устроено

Данные: 149 499 наблюдений с шагом 10 минут (скорость ветра, температура, мощность). SimpleRNN использует окно из 144 значений мощности, LSTM — 144 шага по трём признакам; оба проверены на последних 20% ряда. CatBoost обучается на почасовых агрегатах с признаками ветра (v, v², v³), температуры, их взаимодействия и циклических календарных признаков, со сплитом 70/15/15, ранней остановкой и опциональным TimeSeriesSplit. SARIMA (s=144) до конца не досчитана; AI-агента нет.

Ключевые решения

  • SimpleRNN
  • LSTM
  • CatBoost
  • SARIMA
  • TimeSeriesSplit
  • циклические календарные признаки
  • Open-Meteo forecast

Метрики

SimpleRNN MAE 0.0468 / RMSE 0.0775; LSTM MAE 0.0473 / RMSE 0.0777 (10-мин); CatBoost почасовой MAE 0.0204, RMSE 0.0556, nMAE 2.04%, R² 0.976

Особенности

Аккуратно подана несопоставимость метрик при разном разрешении и тестовых выборках; CatBoost сравнивается с эмпирической кривой мощности и средним; физические признаки v² и v³.

Стек

Python · Jupyter · TensorFlow/Keras · CatBoost · statsmodels · scikit-learn · pandas


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-292e04fe-neurohub.

README

README.md

NeuroHub — прогнозирование мощности ветрогенератора

Исследовательский проект по прогнозированию нормализованной активной мощности на основе истории измерений и погодных данных. В работе рассмотрены четыре подхода: RNN, LSTM, CatBoost и SARIMA.

Среди двух завершённых нейросетевых экспериментов на 10-минутных данных SimpleRNN показала немного меньшие MAE и RMSE, чем LSTM. CatBoost исследован отдельно на почасовых данных. Расчёт SARIMA на полном наборе не завершён, поэтому общего числового рейтинга всех четырёх моделей в проекте нет.

Задача проекта

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

Целевая переменная — Нормализованная активная мощность. Она выражается в долях, а не в МВт. Для перевода прогноза в физические единицы необходимо знать мощность, относительно которой выполнена нормализация.

Исходные данные

Файл dataset_energy.csv содержит 149 499 наблюдений за период с 11 марта 2023 года по 31 января 2026 года. Номинальный интервал между измерениями — 10 минут.

ПолеСодержание
IDИдентификатор записи
Статистическое времяДата и время измерения
Средняя скорость ветра(m/s)Средняя скорость ветра, м/с
Нормализованная активная мощностьЦелевая переменная
Средняя температура окружающей среды(°C)Средняя температура воздуха, °C

Пример исходных записей:

ID,Статистическое время,Средняя скорость ветра(m/s),Нормализованная активная мощность,Средняя температура окружающей среды(°C)
1,2023-03-11 0:00:00,6.62,0.37,15.52
2,2023-03-11 0:10:00,6.7,0.39,15.38
3,2023-03-11 0:20:00,7.14,0.44,15.43

В сохранённом аудите CatBoost-ноутбука не обнаружены пропуски значений, полные дубликаты, повторяющиеся временные метки и значения мощности вне диапазона 0–1. Регулярность временного ряда проверяется отдельно: отсутствие пустых ячеек само по себе не гарантирует отсутствия пропущенных временных интервалов.

Источник, условия получения и лицензия датасета в проекте не указаны.

Как работает решение

В работе были рассмотрены различные подходы к прогнозированию нормализованной активной мощности ветрогенератора.

Для нейросетевых экспериментов используются последовательности 10-минутных наблюдений. Данные разделяются по времени, чтобы оценивать модель на более позднем периоде. RNN прогнозирует мощность по её предыдущим значениям, а LSTM использует историю мощности, скорости ветра и температуры.

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

SARIMA рассматривается как классическая статистическая модель временного ряда. Её полный расчёт не был завершён в отведённое время.

Качество завершённых экспериментов оценивается по MAE и RMSE на отложенных данных. Чем меньше значения этих метрик, тем меньше ошибка прогноза. Итоговый вывод учитывает условия каждого эксперимента: временное разрешение, состав признаков и тестовую выборку.

Исследованные модели

RNN

SimpleRNN использует последовательность предыдущих значений нормализованной мощности. Окно входных данных содержит 144 наблюдения — 24 часа при непрерывном 10-минутном шаге. Форма входа сохранённой модели — (None, 144, 1).

В ноутбуке также представлены эксперименты с многомерной RNN. Метрики в итоговой таблице относятся к одномерной SimpleRNN.

На сохранённой тестовой выборке SimpleRNN получила немного меньшие ошибки, чем LSTM. Это лучший результат среди двух представленных нейросетевых конфигураций; небольшая разница не доказывает устойчивого превосходства архитектуры RNN в других условиях.

LSTM

LSTM использует механизм памяти для обработки временных зависимостей. В данном эксперименте на вход подаются последовательности из 144 наблюдений по трём признакам: скорости ветра, мощности и температуре. Форма входа сохранённой модели — (None, 144, 3).

Результаты LSTM близки к SimpleRNN, однако её MAE и RMSE немного выше. В проведённом эксперименте вариант LSTM с дополнительными погодными признаками не улучшил итоговые метрики. Поскольку одновременно различаются архитектура и набор входных признаков, отдельно оценить влияние каждого из этих факторов по данному сравнению нельзя.

CatBoost

CatBoost исследован как модель зависимости мощности от погодных и календарных признаков.

В этом эксперименте:

  • 10-минутные измерения агрегируются до почасовых значений; для часа требуются не менее 5 из ожидаемых 6 измерений;
  • используются скорость ветра, её квадрат и куб, температура, взаимодействие ветра и температуры, циклические признаки часа, дня года и месяца;
  • данные последовательно разделяются на обучение, валидацию и тест в пропорции 70% / 15% / 15%; применяется ранняя остановка;
  • лаги фактической мощности в модель не включены.

Полученные метрики относятся к почасовому ряду. Их нельзя напрямую сопоставлять с ошибками RNN и LSTM на 10-минутных данных: агрегация изменяет целевой ряд, а тестовые выборки и входные данные различаются.

SARIMA

SARIMA также была рассмотрена в качестве модели прогнозирования временного ряда.

Для 10-минутного шага в одних сутках содержится:

24 × 60 / 10 = 144 наблюдения

Поэтому s = 144 является естественным сезонным периодом для проверки гипотезы о суточной сезонности. Наличие такой сезонности необходимо подтвердить анализом данных; сам регулярный шаг наблюдений её не доказывает.

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

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

Результаты экспериментов

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

Нейросетевые модели на 10-минутных данных

Для обеих моделей указан тест на последних 20% ряда — 29 900 наблюдениях.

МодельВходные данныеMAERMSE
SimpleRNNИстория мощности0,0467560,077491
LSTMИстория ветра, мощности и температуры0,0473010,077670

В сохранённом эксперименте SimpleRNN имеет меньшую MAE на 0,000545 и меньшую RMSE на 0,000179. Разница небольшая; повторные запуски и проверка на нескольких временных периодах необходимы для вывода об устойчивости результата.

Отдельный почасовой эксперимент

МодельТестовая выборкаMAERMSEДополнительные метрики
CatBoost3 731 почасовое наблюдение0,02040,0556nMAE: 2,0422%; R²: 0,9759

Эта строка приведена отдельно из-за отличий в разрешении и условиях оценки. Меньшие численные ошибки CatBoost не устанавливают его превосходство над нейросетями в единой задаче прогнозирования.

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

Что реализовано

  • Исследование RNN, LSTM, CatBoost и SARIMA в отдельных ноутбуках.
  • Проверка качества данных: пропуски, дубликаты, временной шаг и физические ограничения.
  • Подготовка последовательностей для нейросетевых моделей.
  • Почасовая агрегация и построение погодных и календарных признаков для CatBoost.
  • Временное разделение данных на обучающую и отложенную части.
  • Расчёт MAE и RMSE; дополнительные метрики nMAE, Bias и R² в CatBoost-эксперименте.
  • Сравнение CatBoost со средним по обучающей выборке и эмпирической кривой мощности.
  • Опциональная временная кросс-валидация через TimeSeriesSplit в CatBoost-ноутбуке.
  • Сохранение моделей и CSV с предсказаниями.
  • Графики обучения, фактических и предсказанных значений, а также диагностические графики в отдельных экспериментах.
  • Отдельный сценарий почасового прогноза CatBoost на 48 часов по данным Open-Meteo.

Структура проекта

Файл или каталогНазначение
dataset_energy.csvИсходные 10-минутные измерения
energy_test.ipynbПервичная проверка и исследование данных
lerning_rnn.ipynbЭксперименты с одномерной и многомерной RNN
lerning_lstm.ipynbЭксперимент с LSTM
lerning_catboost.ipynbПочасовой эксперимент CatBoost и прогноз по будущей погоде
lerning_sarima.ipynbЭксперимент SARIMA, полный расчёт не завершён
main.ipynbЗагрузка сохранённых предсказаний RNN/LSTM и расчёт метрик
model_artifacts/Сохранённые модели и CSV с предсказаниями

Названия файлов сохранены в соответствии с исходным проектом, включая написание lerning.

Технологии

ИнструментНазначение
Python, JupyterВыполнение исследовательских ноутбуков
pandas, NumPyОбработка данных
TensorFlow/KerasRNN и LSTM
CatBoostГрадиентный бустинг для почасового эксперимента
statsmodelsSARIMA
scikit-learnМасштабирование, метрики и временная кросс-валидация
Matplotlib, SeabornВизуализация
RequestsЗапрос погодных данных
OpenPyXLЧтение XLSX
JoblibСлужебная зависимость ноутбуков
Open-Meteo Forecast APIПогодные данные для отдельного сценария прогноза

Установка и запуск

Проект запускается локально в Jupyter. Требуется Python 3, совместимый с устанавливаемыми версиями библиотек. Версии зависимостей в проекте не зафиксированы.

Windows PowerShell

git clone https://github.com/BAITC-Hacks/hack-292e04fe-neurohub.git
cd hack-292e04fe-neurohub
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install jupyterlab pandas numpy matplotlib seaborn scikit-learn catboost tensorflow statsmodels openpyxl joblib requests
jupyter lab

Linux/macOS

git clone https://github.com/BAITC-Hacks/hack-292e04fe-neurohub.git
cd hack-292e04fe-neurohub
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install jupyterlab pandas numpy matplotlib seaborn scikit-learn catboost tensorflow statsmodels openpyxl joblib requests
jupyter lab

Подготовка путей

В нескольких ноутбуках используются абсолютные Windows-пути. Перед запуском замените пути к датасету и артефактам на соответствующие вашей рабочей папке.

Например, в настройках CatBoost-ноутбука:

from pathlib import Path

DATA_PATH = Path("dataset_energy.csv")

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

Просмотр результатов RNN и LSTM

  1. Откройте main.ipynb.
  2. Проверьте пути к сохранённым CSV с предсказаниями и фактическим значениям.
  3. Выполните ячейки расчёта метрик.
  4. Убедитесь, что факт и прогноз сопоставлены по одним временным меткам и выражены в одной шкале нормализованной мощности.
  5. Сопоставьте результаты с таблицей выше.

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

Повторное обучение

Откройте ноутбук выбранной модели и выполните ячейки последовательно сверху вниз:

  • lerning_rnn.ipynb — эксперименты с RNN;
  • lerning_lstm.ipynb — эксперимент с LSTM;
  • lerning_catboost.ipynb — почасовой эксперимент CatBoost;
  • lerning_sarima.ipynb — продолжение эксперимента SARIMA.

Продолжительность обучения зависит от оборудования и настроек модели. Полный расчёт SARIMA в текущем эксперименте не завершён.

Отдельный сценарий прогноза на 48 часов

В lerning_catboost.ipynb реализован прогноз по погоде из Open-Meteo. Этот сценарий отличается от оценки сохранённых предсказаний RNN и LSTM на историческом тестовом периоде.

В запросе настроены координаты 56.742815, 61.084327, температура на высоте 2 м и скорость ветра на высоте 100 м. Перед применением необходимо указать координаты нужного объекта. Для запроса требуется интернет; в исходном коде API-ключ не используется.

Порядок запуска:

  1. Указать путь к данным и выполнить ячейки подготовки, обучения и оценки CatBoost.
  2. Проверить координаты погодного запроса и настройки горизонта.
  3. Выполнить ячейки получения погоды и построения forecast_48h.
  4. Проверить временные метки и значения итогового прогноза.

Основные поля результата:

ПолеСодержание
datetimeВремя прогнозируемого часа
forecast_normalized_powerПрогноз нормализованной мощности
forecast_power_mwМощность в МВт при заданной мощности объекта
forecast_energy_mwhЭнергия за час в МВт·ч при заданной мощности объекта

В ноутбуке используется демонстрационное значение INSTALLED_CAPACITY_MW = 50.0. Оно не является подтверждённой характеристикой объекта. Для работы только с нормализованными значениями предусмотрено INSTALLED_CAPACITY_MW = None.

Если нормализация выполнена относительно установленной мощности объекта, пересчёт имеет вид:

Мощность, МВт = нормализованная мощность × установленная мощность, МВт
Энергия, МВт·ч = средняя мощность за интервал, МВт × длительность интервала, ч

Для часового интервала численные значения средней мощности в МВт и энергии в МВт·ч совпадают, но это разные физические величины.

Сохранённые артефакты

В проекте предусмотрены сохранённые модели:

  • model_artifacts/rnn_wind_power.keras;
  • model_artifacts/lstm_wind_power.keras;
  • model_artifacts/catboost_wind_power.cbm.

Также сохранены CSV с примерами предсказаний. Они позволяют изучить результаты без повторного обучения.

Для применения RNN и LSTM к новым данным необходимо воспроизвести исходную подготовку входных последовательностей и масштабирование. Отдельно сериализованные объекты масштабирования для этих моделей в описанной версии проекта отсутствуют.

Ограничения и дальнейшая работа

  • Сравнение моделей. Для общего рейтинга необходимо единое временное разрешение, одинаковый тестовый период и горизонт прогноза. Состав и доступность входных данных должны быть явно зафиксированы.
  • Устойчивость результата. Разница между SimpleRNN и LSTM мала. Нужны повторные запуски и оценка на нескольких временных отрезках.
  • SARIMA. Требуется завершить расчёт и получить метрики на сопоставимом тесте.
  • Оценка по погоде. CatBoost проверялся на наблюдавшейся погоде. Ошибки будущих погодных прогнозов могут ухудшить результат при практическом использовании.
  • Горизонт нейросетевого прогноза. Результаты на исторической тестовой выборке сами по себе не подтверждают качество самостоятельного прогноза на 48 часов. Такой режим требует отдельной проверки.
  • Воспроизводимость. Необходимо зафиксировать версии зависимостей, заменить абсолютные пути и сохранять объекты масштабирования вместе с нейросетевыми моделями.
  • Интеграция. Координаты и демонстрационную мощность нужно настроить под объект. Обработка отказов погодного API ограничена.
  • Готовность к эксплуатации. Проект состоит из исследовательских ноутбуков. Веб-интерфейс, серверный API, автоматическое расписание прогнозов, автоматические тесты и CI в описанной версии отсутствуют.
  • Данные. Требуется задокументировать происхождение и лицензию датасета, а также подтвердить соответствие погодных данных условиям измерения на объекте.

Демонстрация

Решение демонстрируется локально в Jupyter Notebook. Для просмотра сравнения RNN и LSTM используется main.ipynb, для изучения обучения — ноутбуки соответствующих моделей. Прогноз по будущей погоде показан отдельно в lerning_catboost.ipynb.

Ссылка на развёрнутое приложение в проекте не указана.

Звёзды
⭐ 0
Форки
0
Язык
Jupyter Notebook
Последний push
в прошлом месяце
Коммиты
12
Авторы
3
Файлы
15
Ветки
1

Авторы коммитов

mrskira 9dikoshs 2YasminaTuk 1

История коммитов

  • 2026-09-23 17:38README.md secondmrskira
  • 2026-09-23 17:28README.md firstmrskira
  • 2026-09-23 17:21fixed errorsmrskira
  • 2026-09-23 15:59textmrskira
  • 2026-09-23 15:55wind_farm_hourly_forecastingmrskira
  • 2026-09-23 15:55EDA datadikoshs
  • 2026-09-23 15:53arima_serima_forecastingdikoshs
  • 2026-09-23 15:07testing modelmrskira
Все коммиты (12)
  • 2026-09-23 14:45change trackmrskira
  • 2026-09-23 14:42change treckmrskira
  • 2026-09-23 14:011YasminaTuk
  • 2026-09-23 13:56first commitmrskira
Структура репозитория (15 файлов)
.gitignore
README.md
dataset_energy.csv
energy_test.ipynb
lerning_catboost.ipynb
lerning_lstm.ipynb
lerning_rnn.ipynb
lerning_sarima.ipynb
main.ipynb
model_artifacts/catboost_predictions.csv
model_artifacts/catboost_wind_power.cbm
model_artifacts/lstm_predictions.csv
model_artifacts/lstm_wind_power.keras
model_artifacts/rnn_predictions.csv
model_artifacts/rnn_wind_power.keras

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.