Я пытаюсь создать алгоритм для анализа данных о энергопотреблении в реальном времени. Цель проста: обнаружить пик/скачок энергопотребления в зданиях в режиме реального времени и принять необходимые меры для его устранения.
Данные поступают в виде потока значений мощности (кВт), отбор проб каждые 10 минут. У меня есть несколько наборов данных о энергопотреблении за год.
Данные очень сезонные, энергопотребление в зданиях сильно варьируется в зависимости от погоды, движения людей, праздников: множество неизвестных параметров.
/>Я мог бы определить пик мощности как быстрый всплеск мощности относительной величины, не зависящий от сезонных тенденций в здании, продолжающийся не более часа (например: аномалия сверх того, что можно считать нормой).
Это определение очень относительное. На графике легко отличить пик. С математическими правилами все становится сложнее, особенно если учесть один порог или стандартное отклонение.
Вот диаграмма данных за два дня. Синим цветом показано энергопотребление. Красным цветом обозначены пики, интерпретированные вручную.
Как видите, определить пик сложнее, чем определить норму или «сезонность». Пик в январе — это не то же самое, что пик в июле. У них разное значение и разное происхождение.
Это затрудняет их идентификацию с помощью таких основных инструментов, как стандартное отклонение, среднее значение или пороговое значение.
Существует несколько способов обнаружение пиков на основе статистики и машинного обучения. Я попробовал оба варианта, но немного запутался.
Первый способ - это то, что я называю статистическим: сравнение стандартного отклонения одной выборки (z-показатель), порога выше среднего или экспоненциального среднего. (Пример: здесь)
Проблема заключается в неизбежном введении задержки, которая делает модель чувствительной к быстрому, но сезонному увеличению энергопотребления, а также чувствительности к «шуму» и плохому влиянию указанного пика на среднее значение. По сути, у него возникают проблемы с основным поведением здания.
Машинное обучение было бы полезно для борьбы с тенденциями. Это привело меня к моделям обнаружения аномалий. На первый взгляд они могут узнать, что такое нормальное поведение, и обнаружить выбросы + они в основном остаются без присмотра, что хорошо, когда в реальной жизни определение выброса схематично.
Естественно, я дал его. испытание. Я использовал библиотеку PySad и начал экспериментировать с моделями, следуя этому руководству. На данный момент модель IForest в движущемся окне работает лучше всего с оценкой AUROC, близкой к 1. (Я устранил ямы, обнулив оценку аномалии, если значение ниже среднего значения выборки).
Я также устранил ямы, обнулив оценку аномалии. пробовал LOFP и KNNCAD с плохими результатами.
Проблема здесь в том, что точность модели сильно варьируется в зависимости от набора данных, достигая (AUROC)0,65 на менее очевидных пиках.
Мой вопрос сейчас следующий: Есть ли у вас какие-либо идеи или идеи относительно подходящей модели машинного обучения или статистического метода для точного обнаружения пиков в реальном времени? (Autoencder, CWT, LOF, SVM?) Или вы знаете лучший способ сделать это?
Я планировал объединить несколько методов, но мне хочется объединить кажущаяся случайность точности методов не даст мне лучшего результата.
Я также должен учитывать, что настройка гиперпараметров продвинутых моделей, таких как SARIMA, будет невозможна, потому что люди, использующие алгоритм, не Эксперты по машинному обучению или аналитики данных.
Подробнее здесь: https://stackoverflow.com/questions/784 ... -detection