Wykrywanie wartości odstających zużycia gazu - projekt sieci neuronowej. Złe wyniki


10

Próbowałem wykryć wartości odstające w zużyciu gazu energetycznego w niektórych holenderskich budynkach, budując model sieci neuronowej. Mam bardzo złe wyniki, ale nie mogę znaleźć przyczyny.

Nie jestem ekspertem, dlatego chciałbym zapytać, co mogę poprawić i co robię źle. Oto pełny opis: https://github.com/denadai2/Gas-consumption-outliers .

Sieć neuronowa jest siecią FeedFoward z propagacją wsteczną. Jak opisano tutaj , podzieliłem zestaw danych na „mały” zestaw danych zawierający 41 000 wierszy, 9 funkcji i próbowałem dodać więcej funkcji.

Przeszkoliłem sieci, ale wyniki mają 14,14 RMSE, więc nie można tak dobrze przewidzieć zużycia gazu, a więc nie mogę uruchomić dobrego mechanizmu wykrywania wartości odstających. Widzę, że w niektórych artykułach, które nawet jeśli przewidują dzienne lub godzinne zużycie energii elektrycznej, mają błędy takie jak MSE = 0,01.

Co mogę poprawić? Co ja robię źle? Czy możesz spojrzeć na mój opis?


2
Co masz na myśli, złe wyniki? Opisz swój proces, wyniki i sposób, w jaki różnią się one od oczekiwanych, zamiast tylko linku do repozytorium git. W przeciwnym razie ta dyskusja nie przyda się nikomu.
Air

To także prawda: D. Dodałem opis na stronie „Wyniki mają wartość 14,14 RMSE, więc nie można tak dobrze przewidzieć zużycia gazu, a więc nie mogę uruchomić dobrego mechanizmu wykrywania wartości odstających. Widzę to w niektórych artykułach, które nawet jeśli przewidują dzienne lub godzinne zużycie energii elektrycznej, mają one błędy takie jak MSE = 0,01. ”
marcodena

1
@marcodena To jest strona kontroli jakości, a inni muszą wiedzieć, co próbujesz rozwiązać, aby zrozumieli odpowiedzi i, mam nadzieję, mogliby wykorzystać je we własnych problemach. Właśnie to miał na myśli AirThomas i dlatego byłoby miło, gdybyś mógł opisać to, co robisz i co dokładnie uważasz za złe. Jeśli link do Twojej strony git-hub ulegnie zmianie, link tutaj będzie nieprawidłowy, a inni nie będą w stanie zrozumieć, na czym polega problem. Poświęć chwilę, aby Twoje pytanie było samodzielne. Dzięki.
Rubens,

1
Kiedy stwierdzisz, że Twój problem zajmuje bardzo dużo czasu, wtedy najważniejsze jest poświęcenie czasu na wyjaśnienie pytania innym, wyraźnie i z dużą ilością szczegółów oraz omówieniem twoich badań / prób. Często w trakcie tego procesu samodzielnie znajdziesz niektóre lub wszystkie odpowiedzi. To nie tylko wspaniałe uczucie, jeśli to, co znajdziesz, jest przydatne dla innych, nadal możesz opublikować pytanie, na które spędzasz tyle czasu, i odpowiedzi, na które wpadłeś.
Air

1
Tylko wyjaśnienie, kiedy wspominasz, że „w niektórych dokumentach mają one błędy, takie jak MSE = 0,01”, czy odwołujesz się do tego samego zestawu danych, którego używasz? A może jest to zupełnie inny zestaw danych?
insys

Odpowiedzi:


8

Pomysł - Twoje dane są bardzo sezonowe: cykle dzienne i tygodniowe są dość zauważalne. Przede wszystkim spróbuj rozłożyć swoje zmienne (zużycie gazu i energii elektrycznej, temperatura i promieniowanie słoneczne). Oto fajny samouczek na temat rozkładu szeregów czasowych dla R.

Po uzyskaniu trendów i składników sezonowych rozpoczyna się najciekawsza część. To tylko przypuszczenie, ale myślę, gaz i elektryczność zmienne zużycie byłoby dość przewidywalny za pomocą analizy szeregów czasowych (np modelu ARIMA ). Z mojego punktu widzenia najbardziej ekscytującą częścią tutaj jest próba przewidzenia resztek po rozkładzie, przy użyciu dostępnych danych (anomalie temperaturowe, promieniowanie słoneczne, prędkość wiatru). Przypuszczam, że te pozostałości byłyby wartościami odstającymi, których szukasz. Mam nadzieję, że okaże się to przydatne.


3

W zeszycie treningowym prezentujesz wyniki treningu z 20 epokami. Czy próbowałeś zmieniać ten parametr, aby sprawdzić, czy wpływa on na twoją wydajność? Jest to ważny parametr dla wstecznej propagacji.

Jak zauważył tomaskazemekas, do oszacowania parametrów modelu, bardzo dobrym podejściem jest wykreślanie krzywych uczenia się. Oprócz tego można również utworzyć wykres przy użyciu parametru modelu (np. Epok treningu lub rozmiaru ukrytej warstwy) w porównaniu do błędu szkolenia i walidacji. Umożliwi to zrozumienie kompromisu odchylenia / wariancji i pomoże wybrać dobrą wartość parametrów. Niektóre informacje można znaleźć tutaj . Oczywiście dobrym pomysłem jest przechowywanie niewielkiego odsetka danych w (trzecim) zestawie testowym.

Na marginesie, wydaje się, że zwiększenie liczby neuronów w twoim modelu nie wykazuje znaczącej poprawy dla twojego RMSE. Sugeruje to, że możesz również spróbować z prostszym modelem, tj. Z mniejszą liczbą neuronów i zobaczyć, jak zachowuje się twój model.

W rzeczywistości sugerowałbym (jeśli jeszcze tego nie zrobiłeś) wypróbowanie prostego modelu z kilkoma parametrami lub bez parametrów, np. Regresji liniowej, i porównanie wyników z literaturą, tak jak w przypadku kontroli rozsądku.


Dodałem kilka wykresów, po ulepszeniu modelu A LOT. W github są nowe kroki. Czy mogę zapytać, w jaki sposób mogę zastosować regresję liniową w przypadku szeregów czasowych? :(
marcodena

2

Główny problem polega na tym, że nawet przed próbą zastosowania algorytmów wykrywania anomalii nie można uzyskać wystarczająco dobrych prognoz zużycia gazu za pomocą sieci neuronowych.

Jeśli głównym celem jest osiągnięcie etapu, w którym można zastosować algorytmy wykrywania anomalii, i oświadczysz, że masz dostęp do przykładów udanego zastosowania regresji liniowej dla tego problemu, takie podejście może być bardziej produktywne. Jedną z zasad udanej aplikacji uczenia maszynowego jest to, że można wypróbować kilka różnych algorytmów przed ostatecznym wyborem na podstawie wyników.

Po wybraniu dostrojenia wydajności sieci neuronowej można zastosować krzywą uczenia się wykreślającą wpływ zmiany w różnych hiperparametrach na poziom błędów. Hiperparametry, które można modyfikować, to:

  • liczba funkcji
  • kolejność wielomianu
  • parametr regularyzacji
  • liczba warstw w sieci

Najlepsze ustawienia można wybrać na podstawie wydajności zestawu do sprawdzania poprawności.


Dodałem kilka wykresów i teraz możesz sprawdzić także parametry :)
marcodena

2

W twoich notatnikach nie widziałem twojego modelu sieci neuronowej, czy możesz wskazać, której biblioteki używa, ile masz warstw i jakiego rodzaju sieci neuronowej używasz?

W swoich notatnikach wygląda na to, że używasz głośnego i odstającego zestawu danych do trenowania sieci neuronowej. Myślę, że powinieneś trenować sieć neuronową w zestawie danych, że nie masz żadnych odstających wartości, abyś mógł zobaczyć odległość obserwacji od prognozy sieć neuronowa do oznaczenia obserwacji jako odstająca lub nie.

Napisałem kilka z rzeczy na Outlier wykrywania sygnałów razem w serii, dane są bardzo sezonowe jak sobach wymienione i można użyć FFT (pierwszy link powyżej), aby uzyskać ogólną tendencję w sygnale. Po uzyskaniu składnika częstotliwości w zużyciu gazu, możesz spojrzeć na składniki wysokiej częstotliwości, aby uzyskać wartości odstające.

Ponadto, jeśli chcesz nalegać na wykorzystanie sieci neuronowej do danych sezonowych, możesz sprawdzić rekurencyjne sieci neuronowe, ponieważ mogą one uwzględniać wcześniejsze obserwacje lepiej niż waniliowa sieć neuronowa i prawdopodobnie mogą zapewnić lepszy wynik dla danych, które masz .


Wypróbowałem twoją metodę FFT, ale tak naprawdę nie rozumiem, jak ustawić próg częstotliwości i amplitudę dla moich danych. Będę szukał, ale jeśli mógłbyś mi pomóc ...
marcodena

Dodałem również źródła
marcodena
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.