[PYTHON] [Teil 4] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen

Bis zum letzten Mal

Bis zum letzten Mal

[Teil 1] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen. [Teil 2] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen. [Teil 3] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen.

Wenn Sie nur das Endergebnis zusammenfassen

Wir haben die Epoche von 50 auf 100 Generationen erhöht, und die durchschnittliche AUC betrug 0,724. Die folgenden Ergebnisse waren derzeit die besten.

Wetter precision recall f1-score
Regen 0.53 0.77 0.63
Fein 0.86 0.68 0.76
durchschnittlich 0.76 0.71 0.72

Zumindest gab es zu wenige Generationen. Das Ändern des Bildes, das Erhöhen der Trainingsdaten und die ternäre Klassifizierung verbesserten die Ergebnisse jedoch nicht.

Versuch und Irrtum

Nach vielen Versuchen und Irrtümern habe ich versucht, etwas zu tun, das weder ähm noch ähm war, aber ich konnte nichts finden, das diese AUC überschritt ...

Um nur die Ergebnisse zusammenzufassen:

Wenn Sie versuchen, die Generation auf 1000 Generationen zu ändern, sinkt die Genauigkeit.

Das ist Überlernen. Bei Trainingsdaten steigt die Genauigkeit auf 0,95, bei Testdaten sind die Ergebnisse jedoch schlechter.

Selbst wenn Sie versuchen, die Anzahl der ausgeblendeten Ebenen zu erhöhen, erhöht sich die Genauigkeit nicht, sondern verringert sich.

Im Moment haben wir 500 Knoten in der verborgenen Ebene, aber selbst wenn wir dies auf 1000 Knoten setzen, hat sich die Genauigkeit nicht verbessert.

Ich versuche, ein feines Modell, ein Regenmodell und ein Wolkenmodell zu erstellen, aber die Genauigkeit sinkt.

Ich habe drei Modelle erstellt, die eine binäre Klassifizierung durchführen, ob es sonnig, regnerisch oder bewölkt ist, aber die Genauigkeit ist gesunken.

Ich habe versucht, die Anzahl der Faltschichten zu erhöhen, aber auch die Genauigkeit hat sich nicht verbessert.

Es wurde gesagt, dass es besser sei, es zu erhöhen, aber das ist auch nutzlos.

etc.

Möglichkeit der Ankunft

Infolgedessen sind die Kandidaten, die angekommen sind, wie folgt.

1. Ändern Sie die Skalierungsmethode.

Bisher wurde die Skalierung von Bilddaten durchgeführt

img_mat /= 255.

Das war eine sehr einfache Skalierung. Skalierung ist auch beim konventionellen maschinellen Lernen wichtig, und es ist oft schwierig, ohne richtige Skalierung zu lernen.

Daher wird dies geändert, indem die Trainingsdaten für jeden RGB-Kanal wie folgt standardisiert werden.

for i in range(0,3):
	m = x_train_mat[:,i,:,:].mean()
	s = x_train_mat[:,i,:,:].std()
	x_train_mat[:,i,:,:] = (x_train_mat[:,i,:,:] - m)/s
	x_test_mat[:,i,:,:] = (x_test_mat[:,i,:,:] - m)/s

Infolgedessen hat sich die Lerngeschwindigkeit im Hinblick auf den Lernprozess erheblich geändert, und die Genauigkeit hat sich in wenigen Generationen verbessert.

2. Hinzufügung der Stapelverarbeitung

Laut dem Artikel sollte CNN ein vorab trainiertes Modell verwenden. Lassen Sie uns dies kurz vorstellen. Beim normalen Training teilt die Stapelgröße die Trainingsdaten innerhalb von 1 Epoche, aber die Trainingsdaten selbst, die in das Modell eingeführt werden sollen, werden geteilt.

Mit anderen Worten

Lerndaten A → Modelloptimierung → Lerndaten B → Modelloptimierung → (ry

Führen Sie nach dem Optimieren des Modells mit A wie in gezeigt die Modelloptimierung mit B mit diesem Parameter durch.

Konzeptionell soll Überlernen und Feinabstimmung unterdrückt werden.

Wenn Sie in Code schreiben

N = len(x_train_mat)
wbatch = N/3
perm = np.random.permutation(N)
for i in six.moves.range(0, N, wbatch):
	t_x_data = x_train_mat[perm[i:i + wbatch]]
	t_y_data = y_train[perm[i:i + wbatch]]
	if len(t_y_data) > wbatch / 2:
    	"""Verwerfen Sie, wenn zu wenig Trainingsdaten vorhanden sind"""
    	cnn.fit_test(t_x_data,t_y_data,x_test_mat,y_test)

So was.

3. Verarbeitung von Lehrerdaten

Die Lehrerdaten in den Trainingsdaten sind voreingenommen, und die Beziehung ist wie Regen <fein. Infolgedessen passt es übermäßig auf die Sonnenseite, und es hat sich gezeigt, dass sich die Genauigkeit des Regens nicht verbessert. Um die Regendaten in den Trainingsdaten zu erhöhen, wurde daher die folgende Verarbeitung durchgeführt.

  1. Machen Sie alle Daten für 2015 zu Trainingsdaten.
  2. Fügen Sie den Trainingsdaten "Regen" -Daten für 2013 und 2014 hinzu.
  3. Verwenden Sie alle 2016-Daten, ohne die Testdaten zu ändern.

4. Bescheidener Modellwechsel

Um Überlernen zu vermeiden, haben wir Drop-Outs in die CNN Max-Pooling-Ergebnisse aufgenommen.

5. Passen Sie die Filtergröße und die Poolgröße an

Bis jetzt habe ich mich für diesen Bereich entschieden, ohne ihn anzupassen, und ihn auf 3 gesetzt, aber ich werde dies ändern.

Fortschritt

Unter den oben genannten Bedingungen ändern wir die Filtergröße und die Poolgröße.

Für Filtergröße 3 und Poolgröße 2

Durchschnittliche AUC: 0,711 Sonnige AUC: 0,790

Wetter precision recall f1-score
Regen 0.6 0.61 0.6
Fein 0.82 0.82 0.82
durchschnittlich 0.75 0.75 0.75

Für Filtergröße 3 und Poolgröße 4

Durchschnittliche AUC: 0,719 Haru AUC: 0,783

Wetter precision recall f1-score
Regen 0.66 0.58 0.61
Fein 0.82 0.86 0.84
durchschnittlich 0.77 0.77 0.77

Für Filtergröße 3 und Poolgröße 6

Durchschnittliche AUC: ** 0,735 ** Sonnige AUC: 0,780

Wetter precision recall f1-score
Regen 0.67 0.61 0.63
Fein 0.83 0.86 0.85
durchschnittlich 0.78 0.78 0.78

Für Filtergröße 3 und Poolgröße 8

Durchschnittliche AUC: 0,688 Sonnige AUC: 0,790

Wetter precision recall f1-score
Regen 0.67 0.48 0.56
Fein 0.79 0.89 0.84
durchschnittlich 0.75 0.76 0.75

Für Filtergröße 5 und Poolgröße 6

Durchschnittliche AUC: ** 0,741 ** Haru AUC: 0,784

Wetter precision recall f1-score
Regen 0.53 0.8 0.64
Fein 0.88 0.68 0.77
durchschnittlich 0.77 0.72 0.73

Für Filtergröße 1 und Poolgröße 6

Durchschnittliche AUC: ** 0,750 ** Sonnige AUC: 0,790

Wetter precision recall f1-score
Regen 0.61 0.7 0.65
Fein 0.85 0.8 0.83
durchschnittlich 0.78 0.77 0.77

Anscheinend ist das Ergebnis besser, wenn die Filtergröße auf 0 und die Poolgröße etwas größer eingestellt ist. Durch Erhöhen der Poolgröße werden mehr charakteristische Merkmale extrahiert, sodass dies diesmal möglicherweise besser ist. Ich denke, es gibt je nach Problem eine gute Kombination aus Filtergröße und Poolgröße.

Ergebnisse von Versuch und Irrtum

Das Endergebnis des fertigen Modells ist wie folgt.

Durchschnittliche AUC: ** 0,767 ** Haru AUC: ** 0,806 **

Wetter precision recall f1-score
Regen 0.59 0.77 0.67
Fein 0.88 0.76 0.82
durchschnittlich 0.79 0.76 0.77

Es ist als AUC erheblich gestiegen.

Fazit

Ich setze Versuch und Irrtum fort, indem ich verschiedene Bedingungen ändere, aber ich konnte so etwas wie ein Muster nicht finden, also versuche ich verschiedene Kombinationen. Da die Auswertung jedoch zu viel mit den Testdaten erfolgt, sind die Testdaten nicht auch Teil der Trainingsdaten? Es ist sicher, dass die Theorie herausgekommen ist. Es ist möglicherweise besser, andere Testdaten zu verwenden, wenn das endgültige Modell fertiggestellt ist.

Recommended Posts

[Teil 4] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Teil 1] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Teil 3] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Teil 2] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Deep Learning aus den mathematischen Grundlagen Teil 2 (während der Teilnahme)
Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.
Verbessertes Lernen, um von null bis tief zu lernen
Bildausrichtung: von SIFT bis Deep Learning
"Deep Learning from Grund" Memo zum Selbststudium (Teil 12) Deep Learning
Erhalten Sie Daten von Poloniex, einem virtuellen Geldwechsel, über die API und verwenden Sie Deep Learning, um den Preis des nächsten Tages vorherzusagen.
Über die Reihenfolge des Lernens von Programmiersprachen (vom Anfänger bis zum Fortgeschrittenen) Teil 2
Deep Learning-Anfänger versuchten die Wettervorhersage aus meteorologischen Satellitenbildern mit Keras
Tweet die Wettervorhersage mit Bot Teil 2
Deep Learning von Grund auf neu ① Kapitel 6 "Lerntechniken"
POST-Images von ESP32-CAM (MicroPython) an den Server
Aktienkursprognose mit Deep Learning (TensorFlow) -Teil 2-
Deep Learning von Grund auf neu
Erstellen Sie einen Datensatz mit Bildern, die für das Training verwendet werden sollen
[Deep Learning von Grund auf neu] Ich habe die Affine-Ebene implementiert
Ich wollte die Python-Bibliothek von MATLAB verwenden
Othello ~ Aus der dritten Zeile von "Implementation Deep Learning" (4) [Ende]
Ich habe versucht, Dropout zu erklären
Deep Learning von Grund auf 1-3 Kapitel
Papier: Maschinelles Lernpapier, das Bilder im Gehirn reproduziert (Tiefenbildrekonstruktion aus menschlicher Gehirnaktivität)
Verwendung des Generators
[Deep Learning] Untersuchen Sie, wie jede Funktion des Faltungsnetzes verwendet wird [DW Tag 3]
[Deep Learning von Grund auf neu] Ich habe versucht, die Gradientenbestätigung auf leicht verständliche Weise zu erklären.
[Python] Ich habe versucht, LINE BOT die Wettervorhersage beantworten zu lassen
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
(Deep Learning) Ich habe Bilder von der Flickr-API gesammelt und versucht, durch Transferlernen mit VGG16 zu unterscheiden
Einführung in Deep Learning ~ Lernregeln ~
Ich habe das Toho-Projekt mit Deep Learning aufgenommen ... ich wollte.
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
"Deep Learning from Grund" Memo zum Selbststudium (Teil 8) Ich habe die Grafik in Kapitel 6 mit matplotlib gezeichnet
Wie benutzt man den Dekorateur?
Einführung in Deep Learning ~ Backpropagation ~
[Deep Learning von Grund auf neu] Informationen zu den Ebenen, die für die Implementierung der Backpropagation-Verarbeitung in einem neuronalen Netzwerk erforderlich sind
Kapitel 1 Einführung in Python Schneiden Sie nur die guten Punkte des Deeplearning aus, die von Grund auf neu erstellt wurden
[Maschinelles Lernen] Verstehen Sie aus der Mathematik, warum der Korrelationskoeffizient zwischen -1 und 1 liegt.
Lua-Version Deep Learning von Grund auf neu Teil 6 [Inferenzverarbeitung für neuronale Netze]
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
[Python + Heroku] Vom Zustand ohne Python zur Anzeige von etwas mit Heroku (Teil 2)
Deep Learning / Deep Learning von Grund auf neu 2 Kapitel 4 Memo
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
Deep Learning / Deep Learning von Grund auf neu Kapitel 3 Memo
Wie man SWIG von waf benutzt
Deep Learning / Deep Learning von Null 2 Kapitel 5 Memo
Einführung in das tiefe Lernen ~ Funktionsnäherung ~
Versuchen Sie es mit TensorFlow Part 2
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Tiefes Lernen, um ohne GPU zu beginnen
Einführung in Deep Learning ~ Codierungsvorbereitung ~
Poste ein Bild von Python auf Tumblr
Verwenden Sie die Flickr-API von Python
Deep Learning / Deep Learning von Null 2 Kapitel 7 Memo
Deep Learning / Deep Learning von Null 2 Kapitel 8 Memo
Deep Learning / Deep Learning von Grund auf neu Kapitel 5 Memo
Deep Learning / Deep Learning von Grund auf neu Kapitel 4 Memo
Deep Learning / Deep Learning von Grund auf neu 2 Kapitel 3 Memo