NeuroHub
Исследование в ноутбуках по прогнозу нормализованной активной мощности ветрогенератора: сравниваются RNN, LSTM, CatBoost и SARIMA, есть прогноз…
О проекте
Команда: 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.mdNeuroHub — прогнозирование мощности ветрогенератора
Исследовательский проект по прогнозированию нормализованной активной мощности на основе истории измерений и погодных данных. В работе рассмотрены четыре подхода: 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 наблюдениях.
| Модель | Входные данные | MAE | RMSE |
|---|---|---|---|
| SimpleRNN | История мощности | 0,046756 | 0,077491 |
| LSTM | История ветра, мощности и температуры | 0,047301 | 0,077670 |
В сохранённом эксперименте SimpleRNN имеет меньшую MAE на 0,000545 и меньшую RMSE на 0,000179. Разница небольшая; повторные запуски и проверка на нескольких временных периодах необходимы для вывода об устойчивости результата.
Отдельный почасовой эксперимент
| Модель | Тестовая выборка | MAE | RMSE | Дополнительные метрики |
|---|---|---|---|---|
| CatBoost | 3 731 почасовое наблюдение | 0,0204 | 0,0556 | nMAE: 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/Keras | RNN и LSTM |
| CatBoost | Градиентный бустинг для почасового эксперимента |
| statsmodels | SARIMA |
| 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
- Откройте
main.ipynb. - Проверьте пути к сохранённым CSV с предсказаниями и фактическим значениям.
- Выполните ячейки расчёта метрик.
- Убедитесь, что факт и прогноз сопоставлены по одним временным меткам и выражены в одной шкале нормализованной мощности.
- Сопоставьте результаты с таблицей выше.
Количество строк само по себе не подтверждает правильность сопоставления факта и прогноза. При проверке следует учитывать временной сдвиг, создаваемый входным окном, и горизонт предсказания.
Повторное обучение
Откройте ноутбук выбранной модели и выполните ячейки последовательно сверху вниз:
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-ключ не используется.
Порядок запуска:
- Указать путь к данным и выполнить ячейки подготовки, обучения и оценки CatBoost.
- Проверить координаты погодного запроса и настройки горизонта.
- Выполнить ячейки получения погоды и построения
forecast_48h. - Проверить временные метки и значения итогового прогноза.
Основные поля результата:
| Поле | Содержание |
|---|---|
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.
Ссылка на развёрнутое приложение в проекте не указана.
Авторы коммитов
История коммитов
- 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 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.