Phase 2: Modellentwicklung
In Phase 1 dieses Projekts untersuchten wir Variablen, die für die Vorhersage der Variable RegenMorgen signifikant sind. Nach der Imputation fehlender Daten und der Überprüfung der Korrelation haben wir 8 Variablen als die signifikantesten Prädiktoren ermittelt: Luftfeuchtigkeit9am, Luftfeuchtigkeit3pm, Wolke9am, Wolke3pm, WindGustSpeed, Temp3pm, HumidityDiff und TempDiff. Indem wir die Antwortvariable RainTomorrow in unsere Liste aufnahmen, erstellten wir einen neuen Datensatz.
Anschließend teilten wir den Datensatz auf, wobei 70 % der Daten einen Trainingssatz bildeten und 30 % in einen Testsatz gingen. Wir verwendeten 3 verschiedene Modellbildungstechniken, um festzustellen, welche am genauesten ist: Klassifikationsbäume, Zufallswälder und neuronale Netze. Wir untersuchten auch die Bedeutung der von uns ausgewählten Variablen in den Random-Forest- und neuronalen Netzwerkmodellen.
Wie wir oben sehen können, scheint die Luftfeuchtigkeit einer der stärksten Prädiktoren in unserem Random-Forest-Modell zu sein. Das neuronale Netz misst jedoch der Temperaturdifferenz mehr Bedeutung bei, während die Luftfeuchtigkeit in diesem Modell eine wesentlich geringere Rolle spielt. In beiden Modellen scheint die Wolkenbedeckung von großer Bedeutung zu sein, während die Windgeschwindigkeit nur mäßig wichtig zu sein scheint.
Der Klassifizierungsbaum
Unser erster Klassifizierungsbaum wurde ohne Angabe des Komplexitätsparameters erstellt, um herauszufinden, welcher Wert am besten funktionieren könnte. Der optimale cp-Wert für diesen Baum lag bei etwa 0,221, mit dem wir dann einen neuen Baum erstellten.
Die Vorhersage des morgigen Regens auf dem Trainingssatz ergab eine Genauigkeit von etwa 0,828. Verglichen mit der Genauigkeit des naiven Modells von 0,78 und unter Berücksichtigung eines p-Wertes von fast 0 scheint dieses Modell von guter Qualität zu sein. Anschließend machten wir Vorhersagen für den Testdatensatz, die eine Genauigkeit von etwa 0,824 ergaben. Da beide Vorhersagen eine höhere Genauigkeit als das naive Modell aufwiesen, könnte der Klassifikationsbaum für die Vorhersage von RainTomorrow geeignet sein.
Der Zufallswald
Aufbauend auf der Methode des Klassifikationsbaums haben wir dann einen Zufallswald mit 10 k-facher Kreuzvalidierung und 50 Bäumen erstellt. Die Entwicklung von Vorhersagen auf dem Trainingssatz mit unserem Random Forest führte zu einer Genauigkeit von 0,9991, also fast 100 %. Obwohl der p-Wert mit nahezu 0 ideal ist, gibt die Tatsache, dass unser Modell nahezu perfekte Vorhersagen lieferte, Anlass zur Sorge. In der realen Welt gibt es keine perfekt genauen Modelle. Anschließend testeten wir die Vorhersage anhand der Testmenge, was zu einer Genauigkeit von nur 0,84 mit einem ähnlich signifikanten p-Wert führte. Dies deutet darauf hin, dass unser Random-Forest-Modell zu stark an die Trainingsmenge angepasst war und kein starkes Modell für künftige Vorhersagen sein würde.
Das neuronale Netzwerk
Das letzte Modell beinhaltete die Erstellung eines neuronalen Netzwerks. Auch hier wurde eine 10-k-fache Kreuzvalidierung verwendet, um zwei Netzwerke zu entwickeln, ein Basismodell mit bestimmten Parametern und ein optimales Netzwerk. Das Basis-Netzwerk wurde mit einer Größe von 12 und einem Decay von 0,1 erstellt. Die Vorhersagen auf der Trainingsmenge mit unserem Basismodell zeigten eine Genauigkeit von etwa 0,841, während die Vorhersagen auf der Testmenge etwa 0,844 betrugen.
Anschließend ließen wir RStudio nach der optimalen Größe von 1-12 und einem Decay zwischen 0,1-0,5 suchen. Ein Modell mit einer Größe von 5 und einer Abklingrate von 0,5 hatte die beste Genauigkeit von etwa 0,843, wie unten zu sehen ist.
Die Erstellung von Vorhersagen mit dem Testsatz ergab eine Genauigkeit von etwa 0.8401, während die Vorhersage mit der Testmenge eine Genauigkeit von etwa 0,8431 ergab, jeweils mit einem signifikanten p-Wert nahe 0.