Hjem Personlig finansiering Sliter med overfitting i maskinlæring - dummies

Sliter med overfitting i maskinlæring - dummies

Innholdsfortegnelse:

Video: Jeg sliter med en konstant indre uro... 2024

Video: Jeg sliter med en konstant indre uro... 2024
Anonim

Gitt den neurale nettverksarkitekturen, kan du forestille deg hvor lett algoritmen kunne lære nesten alt fra data, spesielt hvis du lagde for mange lag. Faktisk gjør algoritmen det så godt at dets spådommer ofte påvirkes av en høy estimatavvik som kalles overfitting. Overfitting får det neurale nettverket til å lære hver detalj av treningseksemplene, som gjør det mulig å kopiere dem i prediksjonsfasen. Men bortsett fra treningssettet, vil det ikke alltid forutsi noe annet.

Forstå overfitting problemet

Når du bruker et neuralt nettverk for et reelt problem, må du ta noen forsiktighetsregler på en mye strengere måte enn du gjør med andre algoritmer. Nevrale nettverk er frailer og mer utsatt for relevante feil enn andre maskinlæringsløsninger.

Først deler du forsiktig dataene dine inn i opplæring, validering og testsett. Før algoritmen lærer av data, må du vurdere godheten til parametrene dine: arkitektur (antall lag og noder i dem); aktiveringsfunksjoner; læringsparameter; og antall iterasjoner. Spesielt gir arkitekturen gode muligheter til å lage kraftige prediktive modeller med stor risiko for overfitting. Læringsparameteren styrer hvor raskt et nettverk lærer fra data, men det kan ikke være tilstrekkelig for å forhindre overfitting av treningsdataene.

Du har to mulige løsninger på dette problemet:

  • Den første løsningen er regularisering, som i lineær og logistisk regresjon. Du kan summere alle tilkoblingskoeffisienter, kvadrert eller i absolutt verdi, for å straffe modeller med for mange koeffisienter med høye verdier (oppnådd ved L2-regulering) eller med verdier forskjellig fra null (oppnådd ved L1-regulering).
  • Den andre løsningen er også effektiv fordi den styrer når overfitting skjer. Den kalles tidligstopp og fungerer ved å sjekke kostnadsfunksjonen på valideringssettet som algoritmen lærer fra treningssettet.

Du kan ikke innse når modellen begynner å overfitte. Kostnadsfunksjonen som beregnes ved hjelp av treningssettet, fortsetter å øke ettersom optimalisering utvikler seg. Men så snart du begynner å ta opp støy fra dataene og slutte å lære generelle regler, kan du sjekke kostnadsfunksjonen på en ekstern prøve (valideringsprøven). På et tidspunkt vil du legge merke til at det slutter å bli bedre og begynner å forverres, noe som betyr at modellen din har nådd sin læringsgrense.

Åpning av den svarte boksen av nevrale nettverk

Den beste måten å lære å bygge et neuralt nettverk på er å bygge en. Python tilbyr et vell av mulige implementeringer for nevrale nettverk og dyp læring. Python har biblioteker som Theano, som tillater komplekse beregninger på abstrakt nivå, og flere praktiske pakker, som Lasagne, som lar deg bygge nevrale nettverk, men det krever fortsatt noen abstraksjoner. Av denne grunn trenger du wrappers, for eksempel nolearn, som er kompatibel med scikit-lær, eller Keras, som også kan pakke TensorFlow-biblioteket ut av Google som har potensial til å erstatte Theano som et programvarebibliotek for neural beregning.

R gir biblioteker som er mindre kompliserte og mer tilgjengelige, for eksempel nnet, AMORE og neuralnet. Disse korte eksemplene i R viser hvordan man trener både et klassifikasjonsnettverk (på Iris datasettet) og et regresjonsnettverk (på Boston datasettet). Fra og med klassifiseringen laster følgende kode inn datasettet og deler den inn i trening og testsett:

bibliotek (neuralnet)

mål <- modell. matrise (~ Arter, # 1, data = iris)

colnames (mål) <- c ("setosa", "versicolor", "virginica")

sett. frø (101)

indeks <- prøve (1: nrow (iris), 100)

train_predictors <- iris [indeks, 1: 4]

test_predictors <- iris [-index, 1: 4]

Fordi nevrale nettverk stole på gradient nedstigning, må du standardisere eller normalisere inngangene. Normalisering er bedre slik at minimumet er null og maksimumet er en for hver funksjon. Naturligvis lærer du hvordan du gjør den numeriske konvertering ved hjelp av treningssettet bare for å unngå mulighet for å bruke informasjon fra testen utenfor prøven.

min_vektor <- søk (train_predictors, 2, min)

range_vector <- apply (train_predictors, 2, max) -

gjelder (train_predictors, 2, min)

train_scaled <- cbind

test_scaled <- cbind (skala (test_predictors,

min_vector, range_vector),

mål [-index,]) < sammendrag (train_scaled)

Når treningssettet er klart, kan du trene modellen for å gjette tre binære variabler, hvor hver av dem representerer en klasse. Utgangen er en verdi for hver klasse proporsjonal med sannsynligheten for å være den virkelige klassen. Du velger en prediksjon ved å ta høyest verdi. Du kan også visualisere nettverket ved å bruke det interne plottet og dermed se den neurale nettverksarkitekturen og de tildelte vekter.

set. frø (102)

nn_iris <- neuralnet (setosa + versicolor + virginica ~

Sepal. Lengde + Sepal. Bredde

+ Petal. Lengde + Petal. Bredde,

data = train_scaled, hidden = c (Nn_iris, test_scaled [1: 4])

y_predicted <- apply Resultat, 1, hvilket. max)

y_true <- søk (test_scaled [5: 7], 1, hvilke. max)

confusion_matrix <- table (y_true, y_predicted)

nøyaktighet <- sum diag (confusion_matrix)) /

sum (confusion_matrix)

utskrift (confusion_matrix)

print (lim inn ("Nøyaktighet:", nøyaktighet))

Du kan plotte et opplært nevralnett.

Følgende eksempel viser hvordan du kan forutsi husverdier i Boston, ved hjelp av Boston datasettet. Prosedyren er den samme som i forrige klassifisering, men her har du en enkelt utgangsenhet. Koden viser også testsettets forventede resultater mot de reelle verdiene for å verifisere den gode passformen til modellen.

no_examples <- nrow (Boston)

funksjoner <- colnames (Boston)

sett. frø (101)

indeks <- prøve (1: no_examples, 400)

tog <- boston [indeks,]

test <- boston [-index,]

min_vektor <- gjelder, 2, min)

range_vector <- søk (tog, 2, maks) - søk (tog, 2, min)

scaled_train <- skala (tog, min_vektor, range_vector)

skalertest test, min_vector, range_vector)

formel = lim ("medv ~", lim inn (funksjoner [1: 13],

kollaps = 'n'))

nn_boston <- neuralnet = scaled_train,

skjult = c (5, 3), lineær. utgang = T)

spådommer <- beregne (nn_boston, scaled_test [1: 13])

predicted_values ​​<- Resultatet er

range_vector [14]) + min_vector [14]

RMSE <- sqrt (gjennomsnitt ((test [14] - predicted_values) ^ 2))

RMSE))

plot (test [14], predicted_values, cex = 1. 5)

ablinje (0, 1, lwd = 1)

Sliter med overfitting i maskinlæring - dummies

Redaktørens valg

Topp 5 Fantasy Baseball Sites - Dummies

Topp 5 Fantasy Baseball Sites - Dummies

Hvis du er en stor fantasy baseball fan og ser ut til å bli med i verden av online fantasy sport, så se ikke lenger. Følgende liste inneholder de fem beste fantasybaseball-nettstedene i henhold til nettstedslayout, oppdatert statistikk, utenfor råd og hjelp og teamstyringsalternativer.

Hva skal man gjøre som en baseball coach - dummies

Hva skal man gjøre som en baseball coach - dummies

Som en baseball trener, du ikke bare må lede teamet ditt, du må ta med forsyninger for å praktisere. Du vil kanskje øke følgende liste, men den inneholder grunnleggende for å få til alle baseballpraksis: Riktig lager førstehjelpsutstyr Ekstra vann Øvelsesplan for dagen, oppdelt etter tid ...

Får utrustet til å spille baseball - dummies

Får utrustet til å spille baseball - dummies

Når du tar baseballfeltet, bør du ta med det beste utstyret som er tilgjengelig. Du trenger ikke å bruke store summer til å kjøpe toppkvalitets tilbehør så lenge du vet hva du skal se etter og hvor du skal finne den. Med mindre du er under 10 år, kjøp utstyr som oppfyller alle de store ligaspesifikasjonene. ...

Redaktørens valg

Hvordan du finner ditt nivå av oppmerksomhet - dummies

Hvordan du finner ditt nivå av oppmerksomhet - dummies

Du kan sikkert ta noen form for ikke-tradisjonell trening og dump det i en tønne merket "mind-body. "Det er greit hvis du foretrekker enkelhet og ikke vil bli innpakket med kategorisering og vurdering. Men du kan også kikke på treningsprogrammer på et dypere nivå, vurdere omfanget av oppmerksomhet i en ...

Hvordan du får mest mulig ut av din meditasjon - dummies

Hvordan du får mest mulig ut av din meditasjon - dummies

For å få mest mulig ut av meditasjonspraksis må forplikte seg til det. Når du begynner å meditere regelmessig, kan du høste utallige fordeler - fra lavere stress og kolesterol til høyere nivåer av tilfredshet og lykke. Her er noen tips for å maksimere meditasjonspraksis: Meditere jevnlig - helst hver dag. Sett bort en ...

Redaktørens valg

Slik bruker du det nye perspektivet i Adobe Illustrator CS6 - dummies

Slik bruker du det nye perspektivet i Adobe Illustrator CS6 - dummies

I Adobe Illustrator CS6 Du kan opprette og redigere kunstverk basert på perspektivgitterfunksjonen (introdusert i CS5). Gitteret er en stor hjelp i å skape vellykkede perspektivillustrasjoner. For å vise eller skjule standardperspektivruten, trykk Ctrl + Shift + I (Windows) eller Kommando + Skift + I (Mac). Du kan bruke verktøyet Perspective Grid på verktøylinjen til å ...

Hvordan å pakke inn tekst ved hjelp av AdobeCS5 Illustrator - dummies

Hvordan å pakke inn tekst ved hjelp av AdobeCS5 Illustrator - dummies

Ved hjelp av en tekstbrytestil i Adobe Creative Suite 5 (Adobe CS5) Illustrator-prosjektet er en enkel måte å legge til litt kreativitet. En tekstpakke tvinger tekst til å vikle rundt en grafikk.

Hvordan du bruker Life Paint-funksjonen i Adobe Illustrator CS6 - dummies

Hvordan du bruker Life Paint-funksjonen i Adobe Illustrator CS6 - dummies

Ikke bekymre deg om å fylle lukkede figurer eller la filler flykte fra objekter med hull i uønskede områder. Ved å bruke Live Paint-funksjonen til Adobe Illustrator CS6, kan du lage det bildet du ønsker og fylle ut regioner med farge. Live Paint-bøtta registrerer automatisk regioner som er sammensatt av uavhengige kryssende baner og fyller dem tilsvarende. Malingen ...