Найти тему

ПРОГНОЗИРОВАНИЕ ТЕХНОЛОГИЧЕСКИХ ПАРАМЕТРОВ АВТОМАТИЗИРОВАННОГО ТЕПЛОВОГО ПУНКТА

Оглавление

Авторы:
Олейников В. С. - Старший преподаватель высшей школы киберфизических систем и управления. СПбПУ
Федотовских Е.А. - Студент СПбПУ

Источник:
https://www.elibrary.ru/item.asp?id=46550360

Современная сфера ЖКХ все больше внедряет автоматизированные системы управления технологическими процессами (АСУ ТП) для работы с малыми технологическими объектами, распределёнными по городу. Отслеживание состояния каждого объекта для своевременного выявления нештатных ситуаций или для корректировок в алгоритмы управления является крайне трудозатратной задачей. Для уменьшения промежутка времени между событием и реакции системы предлагается производить предиктивный анализ параметров объекта для заблаговременных корректировок уставок в алгоритмах управления.

Для внедрения был выбран отопительный пункт с погодным регулированием. На каждом объекте имеется датчик наружной температуры, которые делает измерения каждые 4 минуты и заносит их в базу данных. С помощью машинного обучения можно предсказывать температуру в будущем, используя прошлые значения.

Для начала нужно создать и обучить модель. Для обучения были предоставлены данные о температуре, снятые каждые 4 минуты с одного из объектов за период с 1 ноября 2020 года по 31 декабря 2020 года в формате CSV. В файле содержится два столбца – время (btime) и температура в градусах по цельсию (avg_value).

Рис. 1 – данные
Рис. 1 – данные

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

Обработку данных, создание и обучение модели будем производить в среде Google Collab, которая запускается в браузере и может выполнять код языка Python по блокам. Данный сервис часто используется в машинном обучении, так как там есть доступ к использованию мощных GPU, что позволяет обучать модели в десятки раз быстрее, чем на CPU локальной машины.

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

Проверим как считался файл.

Рис. 2 – проверка считывания
Рис. 2 – проверка считывания

Время в файле записано в формате строки string, считаем его в нужном формате времени.

Рис. 3 – преобразуем строку во временной формат
Рис. 3 – преобразуем строку во временной формат

Для удобства выведем график температур за два месяца.

Рис. 4 – график температур
Рис. 4 – график температур

Создаем тренировочный и валидационный датафреймы. Тренировочным является первые 80% данных, валидационным остальные 20%. На тренировочном происходит обучение модели, на валидационном проверяется ее качество прямо во время обучения.

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

Рис. 5 – разбиение на датасеты
Рис. 5 – разбиение на датасеты

Напишем функцию для создания датасетов временных рядов для обучения на основе имеющихся датафреймов. В качестве features выступают первые n=window_size элементов, в качестве label - n+1 элемент. Features, или же «фичи» - это данные по которым мы предсказываем элемент, который называется label(«лейбл» или «таргет»). batch_size– размер выборки данных после прямого распространения по сети которой будут изменяться веса в модели. Если поставить batch_size8, а размер всего датасета обучения 4392, то за одну эпоху веса будут меняться 549 раз. Параметр use_scaler отвечает за нормализацию данных, чтобы все features имели одинаковый вес при обучении, если параметр выбран как true. Параметр shuffle отвечает за перемешивание выборок данных датасета.

Также нужно убрать из датасета «фич» последние window_sizeэлементов, так как для предсказания последних «лейблов» будет нехватать «фич», если этого не сделать. Далее эти параметры отправляются в стандартную функцию tensorflow для работы с временными рядами. Параметр sequence_stride – это шаг последовательности, то насколько элементов вперед будем предсказывать. Попробуем предсказывать на 1 элемент вперед.

Рис. 6 – функция создания датасетов
Рис. 6 – функция создания датасетов

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

Рис. 7 – создание датасетов
Рис. 7 – создание датасетов

Создадим LSTM модель (такие модели используются при работе с данными, которые зависят от своих предыдущих значений, например текст или как в данной задаче временной ряд) с выходной размерностью 32. Модель является рекуррентной. Далее слой из 1 нейрона, так как мы предсказываем только одно значение.

Рис. 8 – создание модели
Рис. 8 – создание модели

Напишем функцию компиляции и обучения модели. Функция принимает на вход созданную модель, тренировочный и валидационный датасеты и количество эпох обучения. При обучении используется среднеквадратичная ошибка, оптимизатор «Адам», в качестве метрики (показателя качества) выступает абсолютная ошибка. Стандартная функция библиотеки tensorflow fitвозвращает «history» - объект с помощью которого можно напечатать и построить графики значений метрик во время обучения.

Рис. 9 – функция обучения модели
Рис. 9 – функция обучения модели

Обучаем модель на 50 эпохах. Так как в model.fit мы указали значение параметра verbose=1, то видим вывод о среднеквадратичной ошибке по эпохам, а также выбранной метрики – абсолютной ошибки.

Рис. 10 – обучение модели
Рис. 10 – обучение модели

Построим графики метрики для тренировочного и валидационного датасетов. На оси х - кол-во эпох обучения. Как можно видеть на валидационном датасете на последних эпохах метрика все еще уменьшалась, значит переобучения нет.

Рис. 11 – график метрики тренировочного датасета
Рис. 11 – график метрики тренировочного датасета
Рис. 12 – график метрики валидационного датасета
Рис. 12 – график метрики валидационного датасета

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

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

Рис. 13 – график предсказанных и реальных значений
Рис. 13 – график предсказанных и реальных значений
Рис. 14– график ошибки
Рис. 14– график ошибки

Как можно видеть в основном предсказания сделаны достаточно точно, но есть небольшое количество выбросов. Эти выбросы связаны с возможной неточностью датчика температуры (вызванной нагревом на солнце). В целом ошибка предсказаний меньше 0.5 градусов по цельсию, что является хорошим результатом.

Литература

1. Железный Сергей Владимирович, Ситников Александр Иванович, Толстых Андрей Андреевич Использование методов машинного обучения для прогнозирования загрязненности атмосферного воздуха // Вестник ВИ МВД России. 2019. №3. URL: https://cyberleninka.ru/article/n/ispolzovanie-metodov-mashinnogo-obucheniya-dlya-prognozirovaniya-zagryaznennosti-atmosfernogo-vozduha (дата обращения: 02.07.2021).

2. Фролькис Виктор Абрамович, Добровлянский Дмитрий Богданович Прогноз температуры воздуха с помощью методов машинного обучения // StudNet. 2020. №9. URL: https://cyberleninka.ru/article/n/prognoz-temperatury-vozduha-s-pomoschyu-metodov-mashinnogo-obucheniya (дата обращения: 02.07.2021).

3. Девяткин Александр Витальевич, Извин Андрей Валерьевич, Зыков Дмитрий Артурович ПРИМЕНЕНИЕ МЕТОДА ГРУППОВОГО УЧЕТА АРГУМЕНТОВ В ПРОГНОЗИРОВАНИИ ВРЕМЕННЫХ РЯДОВ // E-Scio. 2020. №5 (44). URL: https://cyberleninka.ru/article/n/primenenie-metoda-gruppovogo-ucheta-argumentov-v-prognozirovanii-vremennyh-ryadov (дата обращения: 02.07.2021).

4. Using Machine Learning to Predict the Weather: Part 1 [Электронный ресурс]. Adam McQuistan. Режим доступа: https://stackabuse.com/using-machine-learning-to-predict-the-weather-part-1

5. Weather forecasting with Machine Learning, using Python [Электронный ресурс]. Piero Pialunga. Режим доступа: https://towardsdatascience.com/weather-forecasting-with-machine-learning-using-python-55e90c346647

6. Будыльский, Д. В. GRU и LSTM: современные рекуррентные нейронные сети / Д. В. Будыльский // Молодой ученый. – 2015. – № 15(95). – С. 51-54.