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?
źródło
Odpowiedzi:
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.
źródło
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.
źródło
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:
Najlepsze ustawienia można wybrać na podstawie wydajności zestawu do sprawdzania poprawności.
źródło
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 .
źródło