Erkennung von Gasverbrauchsausreißern - Neuronales Netzprojekt. Schlechte Ergebnisse


10

Ich habe versucht, Ausreißer im Energiegasverbrauch einiger niederländischer Gebäude zu erkennen und ein neuronales Netzwerkmodell zu erstellen. Ich habe sehr schlechte Ergebnisse, aber ich kann den Grund nicht finden.

Ich bin kein Experte, daher möchte ich Sie fragen, was ich verbessern kann und was ich falsch mache. Dies ist die vollständige Beschreibung: https://github.com/denadai2/Gas-consumption-outliers .

Das neuronale Netzwerk ist ein FeedFoward-Netzwerk mit Back Propagation. Wie hier beschrieben, habe ich den Datensatz in einen "kleinen" Datensatz mit 41'000 Zeilen und 9 Features aufgeteilt und versucht, weitere Features hinzuzufügen.

Ich habe die Netzwerke trainiert, aber die Ergebnisse haben 14,14 RMSE, so dass der Gasverbrauch nicht so gut vorhergesagt werden kann. Nacheinander kann ich keinen guten Ausreißererkennungsmechanismus ausführen. Ich sehe in einigen Zeitungen, dass sie Fehler wie MSE = 0,01 aufweisen, selbst wenn sie den täglichen oder stündlichen Stromverbrauch vorhersagen.

Was kann ich verbessern? Was mache ich falsch? Können Sie sich meine Beschreibung ansehen?


2
Was meinst du mit schlechten Ergebnissen? Beschreiben Sie Ihren Prozess, Ihre Ergebnisse und wie sie sich von Ihren Erwartungen unterscheiden, anstatt nur eine Verknüpfung zum Git-Repository herzustellen. Andernfalls ist diese Diskussion für niemanden von Nutzen.
Air

Es ist auch wahr: D. Ich habe die Beschreibung auf der Seite "Die Ergebnisse haben einen RMSE von 14,14, daher kann der Gasverbrauch nicht so gut vorhergesagt werden. Folglich kann ich keinen guten Ausreißererkennungsmechanismus ausführen. Ich sehe das in einigen Veröffentlichungen, selbst wenn sie vorhersagen." Täglicher oder stündlicher Stromverbrauch, sie haben Fehler wie MSE = 0,01. "
Marcodena

1
@marcodena Dies ist eine QS-Site, und andere müssen wissen, was Sie zu lösen versuchen, damit sie die Antworten verstehen und sie hoffentlich für ihre eigenen Probleme verwenden können. Das hat AirThomas gemeint, und deshalb wäre es auch schön, wenn Sie beschreiben könnten, was Sie tun und was genau Sie für falsch halten. Wenn sich der Link zu Ihrer Git-Hub-Seite ändert, ist der Link hier ungültig und andere können das Problem nicht verstehen. Bitte nehmen Sie sich eine Minute Zeit, um Ihre Frage in sich geschlossen zu halten. Vielen Dank.
Rubens

1
Wenn Sie feststellen, dass die Erklärung Ihres Problems sehr lange dauert, ist es am wichtigsten , die Zeit damit zu verbringen, Ihre Frage anderen explizit und mit vielen Details und Diskussionen über Ihre Forschungen / Versuche zu erklären. Während dieses Vorgangs finden Sie häufig einige oder alle Antworten selbst. Das ist nicht nur ein großartiges Gefühl, wenn das, was Sie finden, für andere nützlich ist, können Sie trotzdem die Frage posten, für die Sie so viel Zeit aufgewendet haben, und die Antwort (en), die Sie gefunden haben.
Air

1
Nur eine Klarstellung, wenn Sie erwähnen, dass "in einigen Veröffentlichungen Fehler wie MSE = 0,01 vorliegen", beziehen Sie sich auf denselben Datensatz, den Sie verwenden? Oder ist es ein ganz anderer Datensatz?
Insys

Antworten:


8

Nur eine Idee - Ihre Daten sind sehr saisonabhängig: Tages- und Wochenzyklen sind durchaus wahrnehmbar. Versuchen Sie also zunächst, Ihre Variablen (Gas- und Stromverbrauch, Temperatur und Sonneneinstrahlung) zu zerlegen. Hier ist ein schönes Tutorial zur Zeitreihenzerlegung für R.

Nach Erhalt der Trend- und Saisonkomponenten beginnt der interessanteste Teil. Es ist nur eine Annahme, aber ich denke, dass die Variablen des Gas- und Stromverbrauchs mittels Zeitreihenanalyse (z. B. ARIMA-Modell ) ziemlich vorhersehbar wären . Aus meiner Sicht besteht der aufregendste Teil darin, zu versuchen, Residuen nach der Zersetzung anhand der verfügbaren Daten (Temperaturanomalien, Sonneneinstrahlung, Windgeschwindigkeit) vorherzusagen. Ich nehme an, diese Residuen wären Ausreißer, nach denen Sie suchen. Ich hoffe, Sie werden dies nützlich finden.


3

In Ihrem Trainingsheft präsentieren Sie Ergebnisse für das Training mit 20 Epochen. Haben Sie versucht, diesen Parameter zu variieren, um festzustellen, ob er Ihre Leistung beeinflusst? Dies ist ein wichtiger Parameter für die Rückausbreitung.

Für die Schätzung Ihrer Modellparameter ist das Zeichnen von Lernkurven ein sehr guter Ansatz, wie der Benutzer tomaskazemekas betonte. Darüber hinaus können Sie ein Diagramm mithilfe eines Modellparameters (z. B. Trainingsepochen oder versteckte Ebenengröße) im Vergleich zu Trainings- und Validierungsfehlern erstellen. Auf diese Weise können Sie den Kompromiss zwischen Verzerrung und Varianz verstehen und einen guten Wert für Ihre Parameter auswählen. Einige Infos finden Sie hier . Natürlich ist es eine gute Idee, einen kleinen Prozentsatz Ihrer Daten für einen (dritten) Testsatz aufzubewahren.

Als Randnotiz scheint es, dass eine Erhöhung der Anzahl der Neuronen in Ihrem Modell keine signifikante Verbesserung für Ihren RMSE zeigt. Dies legt nahe, dass Sie es auch mit einem einfacheren Modell versuchen könnten, dh mit weniger Neuronen, und sehen könnten, wie sich Ihr Modell verhält.

Tatsächlich würde ich vorschlagen (falls Sie dies noch nicht getan haben), zuerst ein einfaches Modell mit wenigen oder keinen Parametern zu versuchen, z. B. lineare Regression, und Ihre Ergebnisse mit der Literatur zu vergleichen, nur um die Gesundheit zu überprüfen.


Ich habe einige Grafiken hinzugefügt, nachdem ich das Modell VIEL verbessert habe. In Github gibt es die neuen Schritte. Darf ich Sie fragen, wie ich die lineare Regression in einem Zeitreihenproblem anwenden kann? :(
marcodena

2

Das Hauptproblem hierbei ist, dass Sie bereits vor dem Versuch, Anomalieerkennungsalgorithmen anzuwenden, nicht genügend Vorhersagen über den Gasverbrauch mithilfe neuronaler Netze erhalten.

Wenn das Hauptziel hier darin besteht, das Stadium zu erreichen, in dem Anomalieerkennungsalgorithmen verwendet werden könnten, und Sie angeben, dass Sie Zugriff auf Beispiele für die erfolgreiche Anwendung der linearen Regression für dieses Problem haben, könnte dieser Ansatz produktiver sein. Eines der Prinzipien einer erfolgreichen Anwendung für maschinelles Lernen besteht darin, dass vor der endgültigen Auswahl anhand der Ergebnisse verschiedene Algorithmen ausprobiert werden können.

Wenn Sie die Leistung Ihres neuronalen Netzwerks optimieren, kann eine Lernkurve verwendet werden , in der die Auswirkung der Änderung verschiedener Hyperparameter auf die Fehlerrate dargestellt wird. Hyperparameter, die geändert werden können, sind:

  • Anzahl der Funktionen
  • Ordnung des Polynoms
  • Regularisierungsparameter
  • Anzahl der Schichten im Netzwerk

Die besten Einstellungen können durch die Leistung bei Kreuzvalidierung festgelegt werden.


Ich habe einige Grafiken hinzugefügt und Sie können jetzt auch die Parameter überprüfen :)
marcodena

2

In Ihren Notizbüchern habe ich Ihr neuronales Netzwerkmodell nicht gesehen. Können Sie angeben, welche Bibliothek verwendet wird, wie viele Ebenen Sie haben und welche Art von neuronalen Netzwerk Sie verwenden?

In Ihren Notizbüchern scheinen Sie den verrauschten und Ausreißer-Datensatz zum Trainieren des neuronalen Netzwerks zu verwenden. Ich denke, Sie sollten das neuronale Netzwerk auf dem Datensatz trainieren, für den Sie keine Ausreißer haben, damit Sie den Beobachtungsabstand von der Vorhersage von sehen können das neuronale Netzwerk, um die Beobachtung entweder als Ausreißer oder nicht zu kennzeichnen.

Ich schrieb Paar von Sachen auf Erkennung von Ausreißern in Zeitreihensignalen, Ihre Daten stark saison ist als sobach erwähnt und man kann FFT verwenden (ersten Link oben) den allgemeinen Trend im Signal zu erhalten. Nachdem Sie die Frequenzkomponente im Gasverbrauch erhalten haben, können Sie sich die Hochfrequenzkomponenten ansehen, um die Ausreißer zu ermitteln.

Wenn Sie darauf bestehen möchten, ein neuronales Netzwerk für saisonale Daten zu verwenden, sollten Sie auch wiederkehrende neuronale Netzwerke überprüfen, da diese die früheren Beobachtungen besser als ein neuronales Vanille-Netzwerk berücksichtigen und angeblich ein besseres Ergebnis für die vorhandenen Daten liefern können .


Ich habe Ihre FFT-Methode ausprobiert, aber ich verstehe wirklich nicht, wie ich den Frequenzschwellenwert und die Amplitude mit meinen Daten einstellen soll. Ich werde weiter suchen, aber wenn du mir helfen
könntest

Ich habe auch die Quellen hinzugefügt
marcodena
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.