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?
quelle
Antworten:
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.
quelle
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.
quelle
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:
Die besten Einstellungen können durch die Leistung bei Kreuzvalidierung festgelegt werden.
quelle
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 .
quelle