Hvordan utvikle et nevralt nett for å forutsi forstyrrelser i ionosfæren

Hvordan utvikle et nevralt nett for å forutsi forstyrrelser i ionosfæren

Det kan være utfordrende å utvikle en prediktiv modell for nevrale nettverk for et nytt datasett.

En tilnærming er å først inspisere datasettet og utvikle ideer for hvilke modeller som kan fungere, og deretter utforske læringsdynamikken til enkle modeller på datasettet, og til slutt utvikle og justere en modell for datasettet med en robust testsele.

Denne prosessen kan brukes til å utvikle effektive nevrale nettverksmodeller for klassifiserings- og regresjonsforutsigende modelleringsproblemer.

I denne veiledningen vil du oppdage hvordan du utvikler en multilayer Perceptron nevralt nettverksmodell for ionosfærens binære klassifiseringssett.

Etter å ha fullført denne opplæringen, vil du vite:

  • Hvordan laste inn og oppsummere ionosfæredatasettet og bruke resultatene til å foreslå dataforberedelser og modellkonfigurasjoner som skal brukes.
  • Hvordan utforske læringsdynamikken til enkle MLP-modeller på datasettet.
  • Hvordan utvikle robuste estimater av modellytelse, justere modellytelse og forutsi nye data.

La oss komme i gang.

Hvordan utvikle et nevralt nett for å forutsi forstyrrelser i ionosfæren

Hvordan utvikle et nevralt nett for å forutsi forstyrrelser i ionosfæren
Foto av Sergey Pesterev, noen rettigheter forbeholdt.

Opplæringsoversikt

Denne opplæringen er delt inn i fire deler; de er:

  1. Ionosphere Binary Classification Dataset
  2. Neural Network Learning Dynamics
  3. Evaluering og justering av MLP-modeller
  4. Endelig modell og gjør spådommer

Ionosphere Binary Classification Dataset

Det første trinnet er å definere og utforske datasettet.

Vi vil jobbe med “Ionosfæren”Standard binært klassifiseringsdatasett.

Dette datasettet innebærer å forutsi om en struktur er i atmosfæren eller ikke gitt radarretur.

Du kan lære mer om datasettet her:

Du kan se de første radene i datasettet nedenfor.

Vi kan se at alle verdiene er numeriske og kanskje i området [-1, 1]. Dette antyder at noen form for skalering sannsynligvis ikke ville være nødvendig.

Vi kan også se at etiketten er en streng (“g”Og“b“), Noe som antyder at verdiene må kodes til 0 og 1 før du monterer en modell.

Vi kan laste datasettet som en panda DataFrame direkte fra URL; for eksempel:

Når du kjører eksemplet, lastes datasettet direkte fra URL-en og rapporterer formen til datasettet.

I dette tilfellet kan vi se at datasettet har 35 variabler (34 innganger og en utgang) og at datasettet har 351 rader med data.

Dette er ikke mange rader med data for et nevralt nettverk og antyder at et lite nettverk, kanskje med regularisering, vil være passende.

Det antyder også at bruk av k-fold kryssvalidering ville være en god ide gitt at det vil gi et mer pålitelig estimat av modellytelsen enn et tog / test split og fordi en enkelt modell vil passe på sekunder i stedet for timer eller dager med største datasett.

Deretter kan vi lære mer om datasettet ved å se på sammendragsstatistikk og et plot av dataene.

Å kjøre eksemplet laster først inn dataene før og skriver deretter ut sammendragsstatistikk for hver variabel.

Vi kan se at middelverdiene for hver variabel er i tiere, med verdier fra -1 til 1. Dette bekrefter at skalering av data sannsynligvis ikke er nødvendig.

Deretter opprettes et histogramplott for hver variabel.

Vi kan se at mange variabler har en Gaussisk eller Gaussisk-lignende fordeling.

Vi kan ha noen fordeler ved å bruke en kraftforvandling på hver variabel for å gjøre sannsynlighetsfordelingen mindre skjev, noe som sannsynligvis vil forbedre modellytelsen.

Histogrammer av datasettet for klassifisering av ionosfæren

Histogrammer av datasettet for klassifisering av ionosfæren

Nå som vi er kjent med datasettet, la oss undersøke hvordan vi kan utvikle en nevral nettverksmodell.

Neural Network Learning Dynamics

Vi vil utvikle en Multilayer Perceptron (MLP) -modell for datasettet ved hjelp av TensorFlow.

Vi kan ikke vite hvilken modellarkitektur for å lære hyperparametere som vil være bra eller best for dette datasettet, så vi må eksperimentere og oppdage hva som fungerer bra.

Gitt at datasettet er lite, er en liten batchstørrelse sannsynligvis en god ide, for eksempel 16 eller 32 rader. Å bruke Adam-versjonen av stokastisk gradientnedstigning er en god ide når du kommer i gang, da den automatisk tilpasser læringsgraden og fungerer bra på de fleste datasett.

Før vi vurderer modeller for alvor, er det lurt å gjennomgå læringsdynamikken og stille inn modellarkitekturen og læringskonfigurasjonen til vi har stabil læringsdynamikk, og deretter se på å få mest mulig ut av modellen.

Vi kan gjøre dette ved å bruke en enkel tog / testdeling av dataene og gjennomgå plott av læringskurvene. Dette vil hjelpe oss å se om vi er overlæring eller underlæring; da kan vi tilpasse konfigurasjonen deretter.

Først må vi sørge for at alle inngangsvariablene er flytende-verdier og koder måletiketten som heltall 0 og 1.

Deretter kan vi dele datasettet i input- og output-variabler, deretter i 67/33 tog- og testsett.

Vi kan definere en minimal MLP-modell. I dette tilfellet vil vi bruke ett skjult lag med 10 noder og ett utgangslag (valgt vilkårlig). Vi vil bruke ReLU-aktiveringsfunksjonen i det skjulte laget og “he_normal”Vektinitialisering, som sammen er de en god praksis.

De...

Saatat myös olla kiinnostunut