Обнаружение выбросов газа - проект нейронной сети. Плохие результаты

10

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

Я не эксперт, поэтому я хотел бы спросить вас, что я могу улучшить и что я делаю неправильно. Это полное описание: https://github.com/denadai2/Gas-consuming-outliers .

Нейронная сеть - это сеть FeedFoward с обратным распространением. Как описано здесь, я разбил набор данных на «маленький» набор данных из 41 000 строк, 9 функций и попытался добавить больше функций.

Я обучил сети, но результаты имеют среднеквадратическое среднеквадратичное значение 14,14, поэтому он не может так хорошо предсказать потребление газа, следовательно, я не могу запустить хороший механизм обнаружения выбросов. Я вижу, что в некоторых работах, даже если они предсказывают ежедневное или почасовое потребление электроэнергии, они имеют такие ошибки, как MSE = 0,01.

Что я могу улучшить? Что я делаю неправильно? Можете посмотреть мое описание?

marcodena
источник
2
Что вы имеете в виду, плохие результаты? Опишите ваш процесс, ваши результаты и то, как они отличаются от того, что вы ожидали, вместо того, чтобы ссылаться только на репозиторий git. В противном случае эта дискуссия никому не будет нужна.
Air
Это также правда: D. Я добавил описание на странице «Результаты имеют среднеквадратическое среднеквадратичное значение 14,14, поэтому он не может так хорошо прогнозировать потребление газа, следовательно, я не могу запустить хороший механизм обнаружения выбросов. Я вижу, что в некоторых работах, даже если они предсказывают Суточное или почасовое потребление электроэнергии, они имеют такие ошибки, как MSE = 0,01. "
Marcodena
1
@marcodena Это сайт QA, и другие должны знать, что вы пытаетесь решить, чтобы они поняли ответы и, надеюсь, смогли использовать их в своих задачах. Вот что имел в виду AirThomas, и поэтому было бы неплохо, если бы вы могли описать, что вы делаете, и что именно вы считаете неправильным. Если ссылка на страницу вашего git-hub изменится, ссылка здесь будет недействительной, и другие не смогут понять, в чем проблема. Пожалуйста, найдите минутку, чтобы сделать ваш вопрос самодостаточным. Спасибо.
Рубенс
1
Когда вы обнаружите, что ваша проблема требует очень много времени для объяснения, именно тогда наиболее важно потратить время на то, чтобы объяснить ваш вопрос другим, явно, с большим количеством деталей и обсуждением ваших исследований / попыток. Часто во время этого процесса вы найдете некоторые или все ответы самостоятельно. Это не только прекрасное чувство, если то, что вы находите полезным для других, вы все равно можете опубликовать вопрос, на который вы тратите так много времени, а также ответы, которые вы придумали.
эфир
1
Просто пояснение: когда вы упоминаете, что «в некоторых документах есть ошибки, такие как MSE = 0,01», вы ссылаетесь на тот же набор данных, который вы используете? Или это совсем другой набор данных?
insys

Ответы:

8

Просто идея - ваши данные очень сезонные: ежедневные и еженедельные циклы весьма ощутимы. Поэтому, прежде всего, попытайтесь разложить ваши переменные (потребление газа и электроэнергии, температура и солнечная радиация). Вот хороший урок по разложению временных рядов для R.

После получения трендовых и сезонных составляющих начинается самая интересная часть. Это всего лишь предположение, но я думаю, что переменные потребления газа и электроэнергии будут вполне предсказуемы с помощью анализа временных рядов (например, модель ARIMA ). С моей точки зрения, наиболее важной частью здесь является попытка предсказать остатки после разложения, используя имеющиеся данные (температурные аномалии, солнечное излучение, скорость ветра). Я полагаю, эти остатки будут выбросами, вы ищете. Надеюсь, вы найдете это полезным.

sobach
источник
3

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

Для оценки параметров вашей модели, как указал пользователь tomaskazemekas, построение кривых обучения является очень хорошим подходом. В дополнение к этому, вы также можете создать график, используя параметр модели (например, периоды обучения или размер скрытого слоя) в сравнении с ошибкой «Обучение» и «Проверка». Это позволит вам понять компромисс между смещением и дисперсией и поможет выбрать правильное значение для ваших параметров. Некоторая информация может быть найдена здесь . Естественно, хорошей идеей будет сохранить небольшой процент ваших данных для (третьего) набора тестов.

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

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

INSYS
источник
Я добавил несколько графиков, улучшив модель LOT. В github есть новые шаги. Могу ли я спросить вас, как я могу применить линейную регрессию в задаче временного ряда? :(
Маркодена
2

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

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

Если вы решите настроить производительность своей нейронной сети, можно использовать кривую обучения, показывающую влияние изменения разных гиперпараметров на частоту ошибок. Гиперпараметры, которые можно изменить:

  • количество функций
  • порядок многочлена
  • параметр регуляризации
  • количество слоев в сети

Лучшие настройки могут быть выбраны по производительности на перекрестной проверке набора.

tomaskazemekas
источник
Я добавил несколько графиков, и теперь вы также можете проверить их параметры :)
marcodena
2

В ваших записных книжках я не видел вашу модель нейронной сети, можете ли вы указать, какую библиотеку используете, сколько у вас слоев и какой тип нейронной сети вы используете?

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

Я написал пару из вещей на аномальном значение обнаружения в сигналах временных рядов, ваши данные весьма сезонные , как sobach упоминалась , и вы можете использовать FFT (первую ссылку выше) , чтобы получить общую тенденцию в сигнале. После того, как вы получите частотную составляющую в потреблении газа, вы можете посмотреть на высокочастотные компоненты, чтобы получить выбросы.

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

Bugra
источник
Я попробовал ваш метод БПФ, но я действительно не понимаю, как установить порог частоты и амплитуду с моими данными. Я буду продолжать искать, но если бы ты мог мне помочь ...
Маркодена
Я добавил источники также
Marcodena