Phase 2: Modelontwikkeling
Tijdens fase 1 van dit project bestudeerden we variabelen die significant zijn voor het voorspellen van de variabele RainTomorrow. Na imputatie van ontbrekende gegevens en controle van correlatie, stelden we 8 variabelen vast als de meest significante voorspellers: Vochtigheid 9 uur ’s ochtends, Vochtigheid 3 uur ’s middags, Bewolking 9 uur ’s ochtends, Bewolking 3 uur ’s middags, Windstootsnelheid, Temp 3 uur ’s middags, Vochtigheidsverschil en Tempverschil. Door de responsvariabele, RainTomorrow, in onze lijst op te nemen, creëerden we een nieuwe dataset.
We splitsten de dataset vervolgens op, waarbij 70% van de gegevens een trainingsset vormde en 30% naar een testset ging. We gebruikten 3 verschillende model-bouw technieken om te bepalen welke het meest accuraat zou zijn: classificatie bomen, random forests, en neurale netwerken. We bestudeerden ook het belang van onze geselecteerde variabelen in de random forest- en neurale netwerkmodellen.
Zoals we hierboven kunnen zien, lijkt vochtigheid een van de sterkste voorspellers in ons random forest-model te zijn. Het neurale netwerk hecht echter meer belang aan het temperatuurverschil en de vochtigheid is veel minder belangrijk in het model. In beide modellen lijkt bewolking een belangrijke rol te spelen, terwijl de snelheid van de windstoten middelmatig laag lijkt.
De classificatieboom
Onze eerste classificatieboom werd gebouwd zonder de complexiteitsparameter te specificeren, om te onderzoeken welke waarde het beste zou kunnen werken. De optimale cp-waarde voor deze boom bedroeg uiteindelijk ongeveer 0,221, die we vervolgens gebruikten om een nieuwe boom te bouwen.
Het voorspellen van RainTomorrow op de trainingsset resulteerde in een nauwkeurigheid van ongeveer 0,828. Vergeleken met de nauwkeurigheid van het naïeve model van 0,78, en rekening houdend met een p-waarde van bijna 0, bleek dit model van goede kwaliteit te zijn. Vervolgens deden we voorspellingen op de testdataset, wat resulteerde in een nauwkeurigheid van ongeveer 0,824. Aangezien beide voorspellingen nauwkeuriger zijn dan het naïeve model, kan de classificatieboom geschikt zijn voor het voorspellen van RainTomorrow.
Het Random Forest
Verder dan de classificatieboom-methode hebben we een random forest gebouwd met 10 k-voudige kruisvalidatie en 50 bomen. Het ontwikkelen van voorspellingen op de trainingsset met ons random forest resulteerde in een nauwkeurigheid van 0.9991, bijna 100%. Hoewel de p-waarde ideaal is op bijna 0, geeft het feit dat ons model bijna perfecte voorspellingen had reden tot bezorgdheid. In de echte wereld bestaan perfect nauwkeurige modellen niet. Vervolgens testten we de voorspellingen op de testset, wat resulteerde in een nauwkeurigheid van slechts 0,84 met een even significante p-waarde. Dit wees erop dat ons willekeurig bos te veel was aangepast aan de trainingsset en geen sterk model zou zijn voor toekomstige voorspellingen.
Het neurale netwerk
Het laatste model bestond uit het creëren van een neuraal netwerk. We gebruikten opnieuw 10 k-voudige kruisvalidatie om twee netwerken te ontwikkelen, een basismodel met gespecificeerde parameters en een optimaal netwerk. Het basisnetwerk werd gemaakt met een grootte van 12 en een verval van 0.1. Het maken van voorspellingen op de trainingsset met ons basismodel liet een nauwkeurigheid zien van ongeveer 0.841, terwijl voorspellingen op de testset rond de 0.844 lagen.
We lieten RStudio vervolgens zoeken naar de optimale grootte van 1-12 en verval tussen 0.1-0.5. Een model met grootte 5 en verval 0,5 bleek de beste nauwkeurigheid rond 0,843 te hebben, zoals hieronder te zien is.