ML-прогноз энергопотребления для энергосбыта
Решили прикладную задачу энергетического предприятия с помощью ML-модели прогнозирования.Клиент
Норвежская компания Baseline Energy занимается розничной поставкой электроэнергии: закупает электричество на оптовом рынке и продает организациям и физлицам.
Чтобы правильно рассчитывать объем закупок у поставщика, компании клиента требовался инструмент прогнозной аналитики. В 2021 году Baseline Energy обратилась к нам за разработкой решения по прогнозированию на базе машинного обучения. Предиктивная аналитика – профильная область Zuzex.
Вызовы
До этого Baseline Energy прогнозировала энергопотребление ручным способом. Затем отправляла заявки производителю с информацией о том, сколько планирует закупить электроэнергии в отчетный период. Точность ручного прогноза составляла ~92%, однако отклонения в пиковые периоды приводили к дополнительным расходам.
Чем точнее будет наш ML-прогноз, тем меньше непредвиденных трат в будущем понесет Baseline Energy. И тем эффективнее будет решение, которые мы разработаем.

1. Подготовка данных и обучение модели
Первый вызов – обработать сложные Excel-таблицы, очистить данные и выделить значимые признаки. Затем на их основе создать датасеты и обучить модель.

2. Точность
Второй вызов – повысить точность почасового прогнозирования. После обучения нейросети сравнить прогноз, который выдает модель, с текущим уровнем точности. Если добьемся показателя выше 92%, то задача клиента будет решена.
Как мы обучали прогнозную модель
Этап 1. Сбор данных
Baseline Energy предоставила данные по потреблению и производственной загрузке за два последних года. Отдельно мы выделили статистику за выходные и праздничные дни. Взяли метеорологические данные, чтобы точнее оценить погодную зависимость и сезонность.
Этап 2. Обработка данных
С помощью Python мы привели эти данные к «общему знаменателю», отобрали наиболее полезные, уменьшили размерность и собрали наборы.
Использовали библиотеки для обработки данных и построения моделей, чтобы упростить анализ:
– Для препроцессинга (предварительной обработки) и регрессии (прогнозирования по уже имеющимся данным) использовали пакет Scikit-Learn.
– Для обнаружения выбросов (аномалии, которые могли бы исказить статистические данные) – пакет Outlier Detection (PyOD).
Этап 3. Запуск и сравнение
Выбрали архитектуру, построили модель, подали в нее данные. Обученную модель проверяли на свежих данных, которые отправляла нам Baseline Energy. Сравнивали прогнозы на тестовой выборке с ручным прогнозом от Baseline Energy и фактическим электропотреблением в одно и то же время.
Этап 4. Получение результатов
Мы проверили модель на обучающих и тестовых данных, чтобы убедиться, что она не просто запоминает исторические значения, а действительно корректно обобщает поведение потребления.
Для разных MPID значения метрики расхождения Кульбака-Лейблера находились в диапазоне 0,01-0,05, что говорит о стабильности модели и ее способности корректно обобщать данные без переобучения.
Технологии
Бэкенд
Python
Бэкенд
Django
Библиотека
Scikit-Learn (sklearn)
Библиотека
XGBoost
База данных
PostgreSQL
Инфраструктура
Google Cloud Platform
Результат
Благодаря Baseline Energy Application Service (BEAS) – системе прогнозирования энергопотребления, которую мы разработали для клиента, – точность прогнозов выросла до 96%. Это позволило точнее планировать закупки электроэнергии и снизить издержки.
BEAS представляет собой ML-систему с API, которая:
- собирает и визуализирует фактическое потребление электроэнергии по всем объектам клиента;
- строит почасовые прогнозы для Measuring Point ID (MPID);
- учитывает привязку объектов к сети электроснабжения (GLID) и связанные с этим параметры.
точность прогноза, которой мы добились.
Оранжевая кривая – реальные данные,
желтая кривая – предсказания BEAS.
Что происходит дальше:
Мы получаем запрос, обрабатываем его в течение 24 часов и связываемся по указанным вами e‑mail или телефону для уточнения деталей.
Подключаем аналитиков и разработчиков. Совместно они составляют проектное предложение с указанием объемов работ, сроков, стоимости и размера команды.
Договариваемся с вами о следующей встрече, чтобы согласовать предложение.
Когда все детали улажены, мы подписываем договор и сразу же приступаем к работе.