Fas 2: Modellutveckling

Under fas 1 av detta projekt studerade vi variabler som är viktiga för att förutsäga variabeln RainTomorrow. Efter imputering av saknade data och kontroll av korrelation fastställde vi att 8 variabler var de mest signifikanta prediktorerna: Humidity9am, Humidity3pm, Cloud9am, Cloud3pm, WindGustSpeed, Temp3pm, HumidityDiff och TempDiff. Genom att inkludera svarsvariabeln RainTomorrow i vår lista skapade vi ett nytt dataset.

Vi delade sedan upp datasetetet så att 70 % av datan bildade en träningsuppsättning och 30 % gick till en testuppsättning. Vi använde tre olika tekniker för modellbyggande för att avgöra vilken som skulle vara mest exakt: klassificeringsträd, slumpmässiga skogar och neurala nätverk. Vi studerade också betydelsen av våra utvalda variabler i random forest- och neurala nätverksmodellerna.

Signifikanta variabler ordnade efter förutspådd betydelse för variabeln RainTomorrow

Som vi ser ovan verkar luftfuktighet vara en av de starkaste prediktorerna i vår random forestmodell. Det neurala nätverket lägger dock större vikt vid temperaturskillnaden, och luftfuktigheten har mycket mindre betydelse i modellen. I båda modellerna verkar molntäckningen ha stor betydelse medan vindbyghastigheten verkar vara måttligt låg.

Klassificeringsträdet

Vårt första klassificeringsträd byggdes utan att komplexitetsparametern angavs för att utforska vilket värde som kan fungera bäst. Det optimala cp-värdet för detta träd slutade med att vara ungefär 0,221, vilket vi sedan använde för att bygga ett nytt träd.

För att förutsäga regn imorgon användes ett beskuret klassificeringsträd

För att förutsäga regn imorgon på träningsuppsättningen resulterade det i ungefär 0,828 noggrannhet. Jämfört med den naiva modellens noggrannhet på 0,78, och med tanke på ett p-värde på nästan 0, verkade den här modellen vara en modell av god kvalitet. Vi gjorde sedan förutsägelser på testdatamängden, vilket resulterade i en noggrannhet på cirka 0,824. Eftersom båda förutsägelserna visar större noggrannhet än den naiva modellen kan klassificeringsträdet vara gångbart för att förutsäga RainTomorrow.

Den slumpmässiga skogen

För att förbättra metoden med klassificeringsträd byggde vi sedan en slumpmässig skog med 10 k-fold korsvalidering och 50 träd. Att utveckla förutsägelser på träningsuppsättningen med vår slumpmässiga skog resulterade i en noggrannhet på 0,9991, nästan 100 %. Även om p-värdet är idealiskt på nästan 0, ger det faktum att vår modell hade nästan perfekta förutsägelser anledning till oro. I den verkliga världen finns det inte perfekt exakta modeller. Vi testade sedan förutsägelser på testuppsättningen, vilket resulterade i en noggrannhet på endast 0,84 med ett lika signifikant p-värde. Detta indikerade att vår slumpmässiga skog var överanpassad till träningsuppsättningen och inte skulle vara en stark modell för framtida förutsägelser.

Förutsägning av RainTomorrow med en slumpmässig skogsmodell

Det neurala nätverket

Den sista modellen innebar att skapa ett neuralt nätverk. Vi använde återigen 10 k-fold korsvalidering för att utveckla två nätverk, en grundmodell med specificerade parametrar och ett optimalt nätverk. Grundnätverket skapades med en storlek på 12 och en avklingning på 0,1. Att göra förutsägelser på träningsuppsättningen med vår grundmodell visade en noggrannhet på cirka 0,841, medan förutsägelserna på testuppsättningen var cirka 0,844.

Vi lät sedan RStudio söka efter den optimala storleken från 1-12 och decay mellan 0,1-0,5. En modell med storlek 5 och förfall 0,5 bestämdes ha den bästa noggrannheten på cirka 0,843, vilket framgår nedan.

Söka efter den optimala nätverksstorleken och förfallshastigheten

Byggande av förutsägelser igen med testuppsättningen beräknade en noggrannhet kring 0.8401, medan förutsägelser med testuppsättningen resulterade i cirka 0,8431 noggrannhet, var och en med ett signifikant p-värde nära 0.

Förutsägelse av RainTomorrow med hjälp av ett anpassat neuralt nätverk

.

Lämna ett svar

Din e-postadress kommer inte publiceras.