Шаблон ML System Design Doc от телеграм-канала Reliable ML
- Итерация - это все работы, которые совершаются до старта очередного пилота
- БТ - бизнес-требования
- EDA - Exploratory Data Analysis - исследовательский анализ данных
- Увеличение выручки от продажи электроэнергии солнечными и ветряными электростанциями на рынке на сутки вперед оптового рынка электроэнергии
- Дополнительный продукт, показывающий потребность в DWH
- Благодаря использованию машинного обучения можно будет учитывать параметры, напрямую влияющие на выработку электроэнергии
-
Успехом будет являться рост выручки от продажи электроэнергии на рынке на сутки вперед
-
Результаты модели сопоставимы и\или превышают результаты работы профильного специалиста (трейдера)
-
Результаты, достигаемые трейдером с моделью превышают результаты трейдера без модели
-
План минимум (для рынка РФ) среднесуточное значение ошибки прогноза модели должно быть ниже ошибки трейдера
$$dMAPE_{трейдер}≥dMAPE_{модель}$$
- План максимум (для зарубежного рынка) среднечасовое значение ошибки прогноза модели должно быть ниже ошибки трейдера
$$MAPE_{трейдер}≥MAPE_{модель}$$
- Суммарные объемы продажи электроэнергии на РСВ, полученные благодаря использованию прогнозов модели, за рассматриваемый период (валидационной выборки) должны быть больше объемов трейдера
$$sum_{i=1}^{N}W_{модель}≥sum_{i=1}^{N}W_{трейдер}$$
- В течение торговых суток (Х+1) участники рынка-владельцы электростанций подают заявки, в которых указывают какой объем электроэнергии планируют к поставке на рынок на сутки вперед.
- В операционные сутки электростанция вырабатывает столько электроэнергии, сколько это технически возможно
- Оплата поступает только за объемы электроэнергии, которые были указаны в заявке
- Если указанный ранее объем не закрыт - разность необходимо докупить на БР по рыночной цене.
- Если владалец электростанции превысил указанный ранее объем - излишки уходят на рынок за 1 рубль.
Целевое видение
- Параллельно разрабатывает 3 направлениям силами отдельных специалистов
- Прогноз на основе значений выработки и метеоданных
- Прогноз на основе выработки и времянной зависимости
- Нереализуемо. Детекция облаков с помощью CV и вычисление площади затенения станции и интенсивность затенения
- Нет данных нужного качества в открытом доступе (геоснимки в слишком большом масштабе, станцию не видно)
- Закрытые данные невозможно получить ввиду политики безопасности компаний (записи с видеокамер)
- Приоритетным является первое направление как наиболее эффективное.
- Второе и третье могут дать некоторый прирост к точности всего продукта и сформировать тем самым ансамбль моделей
Общие ограничения
- Прогноз выработки необходимо делать на сутки вперед.
- Проверить прогноз можно будет только на следующие сутки.
- Заявка должна быть сформирована и подана на рынок в течение торговых суток до 13:00 МСК
- Модель должна оперировать более чем 1 источником метеоданных
- Модель должна легко масштабироваться с одного объекта на несколько объектов
- Должен формироваться отчет в формате, удобном для подачи заявки на рынок
- Должна формироваться визуализация для удобного анализа результатов прогнозов
- Должен быть сформирован пайплайн обработки метеоданных
- Архивы метеоданных и метеопрогнозы платные
- Зимой станцию заметает снегом, сильно снижает качество данных
- Новые объекты не сразу выходят на установленную мощность
- Оборудование на объекте может выходить из строя
- Не всю информацию о работоспособности объекта можно получать в этот же день.
- В некоторых локациях погода может меняться за день (прогноз уже отправили, а погода поменялась)
- Объем датасета не менее 1 года, дискретизация не менее 1 часа
- Валидационная выборка не менее 20% от всего датасета
- Количество дней в валидационной выборке с объемами выработки электроэнергии не менее 80% максимально зарегестрированных - не менее половины (зимой объемы выработки небольшие, выручка маленькая, а вероятность ошибки прогноза намного выше)
- Для time-series направления прогноз дополнительно необходимо делать на несколько часов вперед
- Для CV направления прогноз необходимо делать только на несколько часов вперед
Ограничения для пилота
- Достаточно прогноза для одного объекта (при достижении удовлетворительной точности)
- Достаточно прогноза на 1 источнике метеоданных (при достижении удовлетворительной точности)
- Достаточно прогноза для летних месяцев
Ожидания от пилота
- Проверка гипотезы, что с помощью машинного обучения на прогнозах погоды можно получить прогнозы выработки лучше, чем их получают трейдеры
- Полученная в рамках пилота модель будет работать параллельно, чтобы можно было сравнить результаты
- Критерий успеха пилота: схожая или более высокая точность прогнозов выработки по сравнению с трейдером
-
Выявление лучших (реализуемых) технологий машинного обучения для каждого из трех направлений
-
Среднее значение dMAPE >= 85% на валидационной выработке на метеопрогнозе
-
Выявление временнЫх зависимостей и интеграция их в основное решение (с приростом точности)
-
Детекция облаков с прогнозом затенения площади станции и интеграция в основное решение (с приростом точности)
-
Что не будет закрыто
Data Scientist
-
Описание результата с точки зрения качества кода и воспроизводимости решения
Data Scientist
Технический долг
- Описание планируемого технического долга (что оставляем для дальнейшей продуктивизации)
Data Scientist
- Гипотеза, что можно спрогнозировать значения выработки электроэнергии на основе данных прогноза погоды, среди которых основными параметрами являются:
- Значение солнечной радиации
- Зависит от угла, под которым солнечные лучи падают на солнечную панель. Есть панели с трекерами, которые обеспечивают "прием" солнечных лучей под углом 90 градусов. На объектах в РФ, угол фиксированный. НЕ каждый метеосервис учитывет (и при этом правильно) данный аспект, поэтому полностью полагаться на значение радиации нельзя (иначе можно было бы всё расчитать по формуле)
- Может поставлять источником данных в виде суммарного значение, а также в виде отдельных значений в разных плоскостях.
- Меняется в зависимости времени дня (суточная периодичность)
- Меняется в зависимости времени года (сезонность)
- Температура солнечных панелей
- зависит от температуры окружающего воздуха
- интенсивности работы (чем больше генерации, например днем, тем сильнее нагреваются)
- скорости ветра (влияет на теплоотдачу)
- чем холодней - тем выше эффективность и наоборот
- Значение солнечной радиации
- Для прогнозов на основе метеоданных разработана LightGBM модель на открытых данных с kaggle подтверждающая гипотезу
- Есть гипотеза, что отдельная модель, работающая только с временнЫми зависимостями может поднять результаты основной модели, прогнозирующей на основе метеоданных
- на периоде сутки вперёд
- на периоде несколько часов вперёд (который будет уточнять прогноз на сутки вперед)
- Гипотеза, что прогнозируя площадь затенения станции можно поднять точность основной модели и второстепенной модели
-
- Детекция облака, его площади
-
- Расчет скорости его движения, траектории и изменения размеров
-
- Определение "густоты" облака (кучые дождевые облака затенят станцию на 100%, а прозрачные пористые облака из верхних слоёв атмосферы снизят выработку незначительно)
-
- Прогнозирование затеняемой им площади станции с учётом интенсивности затенения (например в виде интегрального показателя показывающего среднее значение затеняемого объекта)
-
- Использование полученного значения в прогнозе на несколько часов вперед (который будет его уточнять)
-
- Нужно учесть, что в основном метеопрогнозе уже учитывается облачность
-
Описание всех общих предпосылок решения, используемых в системе – с обоснованием от запроса бизнеса: какие блоки данных используем, горизонт прогноза, гранулярность модели, и др. Data Scientist
- Работа с табличными данными, обладающими времянной зависимостью
- Прогнозирование на основе погодных данных
- Прогнозирование временнЫх рядов
- Детектирование облаков по снимкам спутников
Как-нибудь потом
- Блок-схема для бейзлайна и основного MVP с ключевыми этапами решения задачи: подготовка данных, построение прогнозных моделей, оптимизация, тестирование, закрытие технического долга, подготовка пилота, другое.
Data Scientist
- Пример возможной блок схемы
Схема обязательно включает в себя архитектуру бейзлайна. Если бейзлайн и основной MVP отличаются несущественно, то это может быть одна блок-схема. Если значительно, то рисуем две: отдельно для бейзлайна, отдельно для основного MVP.
Если блок-схема шаблонна - т.е. её можно скопировать и применить к разным продуктам, то она некорректна. Блок-схема должна показывать схему решения для конкретной задачи, поставленной в части 1.
Этап - 1 подготовка и анализ данных
Пример данных в репозитории. Табличные данные
- fact.xls - матрица с target - Целевая переменная
- weather.xls - матрица с признаки
- тренировочный набор 10% от выборки
- валидационный набор 20% от выборки
- Необходимо
- кросс-валидация на 5 блоках
- поиск гиперпараметров (GridSearchCV)
Результат
- обработанный датасет табличных данных, пригодный для обучения
- скрипт обработки данных, являющийся прототипом для будущего пайплайна
- результаты анализа данных, выявленные зависимости, закономерности
Этап - 2 анализ технологий машинного обучения и выбор метрики
- выявление эффективной техологии машинного обучения
- для прогнозирования на табличных данных: LightGBM, XGBoost, CatBoost, решения основанные на нейронных сетях
- для прогнозирования временнЫх рядов (ETNA)
- выбор наиболее эффективной метрики из стандартных (rmse, mse, mape ...)
Результат
- выбранные библиотеки по прогнозированию
- табличных данных
- временнЫх рядов
- выбранная метрика
Этап - 3 Первая Итерация
- для табличных данных с метеопрогнозом
- применением кросс-валидации на не менее чем 5 блоках
- перебором гиперпараметров с помощью GridSearchCV (не менее 5)
- При прогнозировании на основе метеоданных выяснить влияние shuffle=True на прогноз (возможно нет необходимости учитывать временную зависимость)
- имплементировать ClearML для трекинга результатов обучения
Результат
- обученная модель прогнозирования выработки электроэнергии на основе решающих деревьев
- имплементирован ClearML для трекинга результатов обучения
Этап - 4 Фич инжиниринг, кастомизация метрик, тюнинг гиперпараметров
- на основе анализа данных и результатов первой итерации сгенерировать новые фичи
- создать кастомную метрику dMAPE
- Интегрировать тюнинг гиперпараметров (optuna)
- сравнить качество обучения на разных датасетах
Результат
- добавлены новые фичи
- обучение модели производится с помощью кастомной метрики dMAPE
- используется тюнинг гиперпараметров optuna
- проведено сравнениео бучения на разных датасетах. Выбран один сервис для платной подписки
Этап - 5 Вторая итерация обучения
- создать и имплементировать обучение на кастомной метрике dwMAPE
- обучить нейронную сеть для получения доп. признака
- обучить модель с применение доп. признака от нейронной сети
Результат
- обученная модель, использующая dwMAPE
- сравнительный анализ обучения на новой метрике (можно путем версионирования в ClearML)
- обученная модель на основе нейросетей
- результат прогнозирования нейросети имплементировано в модель на основе решающих деревьев
- Оценка пилота будет проводится с помощью сравнения точности прогнозов
- новой системы прогнозирования (модель) и старой (человек) в рамках одного объекта
- расчета потенциальной выручки при использовании прогнозов модели и сравнении с реальной выручкой, полученной на объекте
- период оценки - 3 месяца без обильных снежных осадков
- Увеличение средней точности прогноза по объекту за рассматриваемый период
- рост потенциальной (расчетной, на основе результатов модели) выручки с объекта
-
Удалённый сервер: Аппаратные требования:
Процессор: 4 ядра, частота 2.0 ГГц или выше (например, Intel Core i5 или аналогичный) ОЗУ: 8 ГБ или больше Жесткий диск: SSD, минимум 256 ГБ Программное обеспечение:
Операционная система: Ubuntu 20.04/22.04 или другой Linux Python версии 3.7 или выше с установленными библиотеками (NumPy, Pandas, scikit-learn, Streamlit и др.) Пропускная способность канала: от 10 Мбит/с
- Контейнеризация модели в Docker. Модель будет доступна через REST API для получения прогнозов.
- Инфраструктура будет развернута на удаленном/локальном сервере.
- Время отклика API - не более 100 мс
- Доступность системы - 99%
- Пиковая нагрузка - до 1000 запросов в секунду
- Прогноз погоды по 1 объекту: 100$/год
- Аренда удаленного сервера 50$/мес (локальный 0$)
- отсутствует
- Невозможность передачи данных для обучения по внутренним причинам (политика безопасности)