Hjem Personlig finansiering Kæmper med overfitting i maskinlæring - dummier

Kæmper med overfitting i maskinlæring - dummier

Indholdsfortegnelse:

Video: Annoncørbetalt indhold: Kelli kæmper med angst efter psykisk vold 2025

Video: Annoncørbetalt indhold: Kelli kæmper med angst efter psykisk vold 2025
Anonim

I betragtning af den neurale netværksarkitektur kan du forestille dig, hvor nemt algoritmen kan lære næsten alt fra data, især hvis du har tilføjet for mange lag. Faktisk gør algoritmen så godt, at dets forudsigelser ofte påvirkes af en høj estimatvariant kaldet overfitting. Overfitting får det neurale netværk til at lære hver eneste detalje i træningseksemplerne, hvilket gør det muligt at replikere dem i forudsigelsesfasen. Men bortset fra træningssættet vil det ikke altid forudsige noget andet.

Forstå overfitting problemet

Når du bruger et neuralt netværk til et reelt problem, skal du tage nogle forsigtighedsforanstaltninger på en meget strengere måde, end du gør med andre algoritmer. Neurale netværk er frailer og mere tilbøjelige til relevante fejl end andre maskinindlæringsløsninger.

For det første deler du dine data omhyggeligt til træning, validering og testsæt. Før algoritmen lærer af data, skal du evaluere godheden af ​​dine parametre: arkitektur (antallet af lag og noder i dem); aktiveringsfunktioner læringsparameter; og antallet af iterationer. Arkitekturen giver især gode muligheder for at skabe kraftige prædiktive modeller med stor risiko for overfitting. Læringsparameteren styrer, hvor hurtigt et netværk lærer af data, men det kan ikke være tilstrækkeligt til at forhindre overfitting af træningsdataene.

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

  • Den første løsning er regularisering som i lineær og logistisk regression. Du kan opsummere alle forbindelseskoefficienter, kvadreret eller i absolut værdi, for at straffe modeller med for mange koefficienter med høje værdier (opnået ved L2-regulering) eller med værdier, der er forskellige fra nul (opnået ved L1-regulering).
  • Den anden løsning er også effektiv, fordi den styrer, når overfitting sker. Den kaldes tidligt stop og fungerer ved at tjekke omkostningsfunktionen på valideringssætet, som algoritmen lærer fra træningssættet.

Du kan ikke være klar over, hvornår din model starter overfitting. Omkostningsfunktionen, der beregnes ved hjælp af træningssættet, forbedres, da optimering skrider frem. Men så snart du begynder at optage støj fra dataene og stoppe med at lære generelle regler, kan du tjekke omkostningsfunktionen på en ude af prøven (valideringsprøven). På et tidspunkt vil du bemærke, at det holder op med at forbedre og begynder at blive forværret, hvilket betyder at din model har nået sin læringsgrænse.

Åbning af den sorte boks i neurale netværk

Den bedste måde at lære at opbygge et neuralt netværk på er at opbygge en. Python tilbyder et væld af mulige implementeringer til neurale netværk og dyb læring. Python har biblioteker som Theano, som tillader komplekse beregninger på abstrakt niveau og mere praktiske pakker som Lasagne, som giver dig mulighed for at opbygge neurale netværk, selv om det stadig kræver nogle abstraktioner. Af denne grund behøver du wrappere, som nolearn, som er kompatibel med scikit-lær eller Keras, som også kan pakke TensorFlow-biblioteket ud af Google, der har potentiale til at erstatte Theano som et softwarebibliotek til neural beregning.

R giver biblioteker, der er mindre komplicerede og mere tilgængelige, såsom nnet, AMORE og neuralnet. Disse korte eksempler i R viser, hvordan man træner både et klassificeringsnetværk (på Iris-datasættet) og et regressionsnetværk (på Boston-datasættet). Fra og med klassifikationen læser følgende kode datasættet og opdeles i træning og testsæt:

bibliotek (neuralnet)

mål <- model. matrix (~ Species, # 1, data = iris)

colnames (target) <- c ("setosa", "versicolor", "virginica")

sæt. frø (101)

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

train_predictors <- iris [indeks, 1: 4]

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

Da neurale netværk er afhængige af gradientafstamning, skal du standardisere eller normalisere inputene. Normalisering er bedre, så minimumet er nul og maksimum er en for hver funktion. Du lærer selvfølgelig, hvordan man foretager den numeriske konvertering kun ved hjælp af træningssættet for at undgå enhver chance for at bruge information fra testen uden for prøven.

min_vektor <- apply (train_predictors, 2, min)

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

anvend (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 træningssættet er klar, kan du træne modellen for at gætte tre binære variabler, hvor hver af dem repræsenterer en klasse. Udgangen er en værdi for hver klasse proportional med sandsynligheden for at være den rigtige klasse. Du vælger en forudsigelse ved at tage den højeste værdi. Du kan også visualisere netværket ved at bruge det interne plot og dermed se den neurale netværksarkitektur og de tildelte vægte.

indstillet. frø (102)

nn_iris <- neuralnet (setosa + versicolor + virginica ~

Sepal. Længde + Sepal. Bredde

+ Petal. Længde + Petal. Bredde,

data = train_scaled, hidden = c (2),

lineær. Output = F)

plot (nn_iris)

forudsigelser <- beregne (nn_iris, test_scaled [1: 4])

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

y_true <- apply (test_scaled [5: 7], 1, hvilket. max)

confusion_matrix <- table (y_true, y_predicted)

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

sum (forvirring_matrix)

print (confusion_matrix)

print (indsæt ("Nøjagtighed:", nøjagtighed))

Du kan tegne et trænet neuralt netværk.

Følgende eksempel viser hvordan man kan forudsige husværdier i Boston ved hjælp af Boston-datasættet. Fremgangsmåden er den samme som i den foregående klassifikation, men her har du en enkelt udgangsenhed. Koden tegner også testsætets forventede resultater mod de reelle værdier for at verificere modelens gode pasform.

no_examples <- nrow (Boston)

funktioner <- colnames (Boston)

sæt. frø (101)

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

tog <- boston [indeks,]

test <- boston [-index,]

min_vektor <- apply, 2, min)

range_vector <- apply (tog, 2, max) - apply (tog, 2, min)

scaled_train <- skala (tog, min_vector, range_vector)

scaled_test <- skala test, min_vector, range_vector)

formel = pasta ("medv ~", indsæt (funktioner [1: 13],

collapse = 'n'))

nn_boston <- neuralnet = scaled_train,

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

forudsigelser <- compute (nn_boston, scaled_test [1: 13])

forudsagt_værdier <- (forudsigelser $ netto. resultat

interval_vector [14]) + min_vector [14]

RMSE <- sqrt (middelværdi ((test [14] - forudsagt_valider) ^ 2))

udskrive (indsæt ("RMSE: RMSE))

plot (test [14], forudsagte_værdier, cex = 1. 5)

ablin (0, 1, lwd = 1)

Kæmper med overfitting i maskinlæring - dummier

Valg af editor

Få hjælp til din kodependency - dummies

Få hjælp til din kodependency - dummies

Hvis du mener, at du måske er afhængig af hinanden, har du brug for hjælp til at ændre din adfærd. Her er nogle kilder til hjælp til dem, der lider af kodependens: Læs alt hvad du kan om kodependency (men læsning alene er utilstrækkelig til at ændre). Gå til et tolv-trinsmøde for kodependenter, f.eks. Codependents Anonym, kaldet CoDA eller Al-Anon for ...

Helbredelse Depression med Mindfulness er muligt - men det tager tid - dummies

Helbredelse Depression med Mindfulness er muligt - men det tager tid - dummies

Med den rigtige støtte , er opsving fra depression med mindfulness muligt. Det er nyttigt at huske at enhver helbredelse gennem depression tager tid og ofte mødes med en op og ned proces af lows, højder, stabile perioder, lavt niveau igen, så mere stabile tider, der fører til en anden forbedring og følelse bedre. Så meget som du ...

Sunde alternativer til loathsome Personal Labels - dummies

Sunde alternativer til loathsome Personal Labels - dummies

Du kan forandre hvordan du føler ved at ændre den måde du tænker og snakker om dig selv. Nedenstående tabel opdeler mellem negative selvdæmpende etiketter, som du måske siger højt eller indadtil tænker på dig selv og konstruktive sundere bekræftelser, som du kan vælge at sige og føle i stedet. At skifte dine ord på denne måde kan hjælpe dig ...

Valg af editor

Sådan oprettes dit DSLR-filmprojekt - dummier

Sådan oprettes dit DSLR-filmprojekt - dummier

Det er nemt at starte et DSLR-filmprojekt. Bare gå til Fil → Ny → Projekt for at lave en ny. Derefter skal du give det et navn, helst en der har noget at gøre med filmen. Du kan kalde det The Last Kiss eller Debbie. Det er ligegyldigt. Bare navngiv det og klik på OK. Udnyt ...

Sådan skaber du dramatisk lys til din DSLR-film - dummier

Sådan skaber du dramatisk lys til din DSLR-film - dummier

Forstå begrebet dramatisk belysning er en start, men teori får dig kun så langt. Det hjælper ikke medmindre du kan bruge din DSLR til at skabe overbevisende belysning. Traditionelt trepunkts lys giver et godt udgangspunkt. Derefter bliver tingene mere interessante. Filmlys som Rembrandt Når du tænker på det mest dramatiske ...

Hvordan man laver magiske film med flip video - dummier

Hvordan man laver magiske film med flip video - dummier

En magisk film er magisk, primært fordi du er overlader det til FlipShare til at redigere sammen tilfældige segmenter af dine klip og billeder i en endelig forkortet film, der fanger den overordnede essens af dine klip. Nogle vigtige beslutninger Magic Movie-funktionen gør med hensyn til dine klip, når du opretter en Magic Movie ...

Valg af editor

Hvordan man arbejder med CSS3-moduler - dummier

Hvordan man arbejder med CSS3-moduler - dummier

For at gøre det enklere, kan CSS3-modulerne adskilles i ti kategorier: grænser, baggrunde, skrifttyper, teksteffekter, flere kolonner, overgange, 2D overgange, 3D overgange, animationer og brugergrænseflade. Tag et kort kig på hvert modul for at se, hvad det kan gøre. Grænser: Grænsemodulet udvider kapaciteterne i grænsekategorien ved at tilføje valgmuligheder ...

Sådan arbejder du med CSS3 Pattern Selectors - dummies

Sådan arbejder du med CSS3 Pattern Selectors - dummies

I nogle tilfælde et valg du har brug for make in CSS3 har intet at gøre med enten tags eller attributter, men mønsteret, hvor objekterne vises på siden. Du kan f.eks. Kun vælge det første objekt, uanset hvad det pågældende objekt kan være. I nogle tilfælde vil du ...

Hvordan man arbejder med skyder i CSS3 - dummies

Hvordan man arbejder med skyder i CSS3 - dummies

Skydere giver brugeren mulighed for at indtaste en værdi visuelt - som en del af en helhed. I CSS3 sikrer en skyder, at brugeren indtaster en korrekt værdi inden for en række værdier, så du behøver ikke bekymre dig om sikkerhedsproblemer eller forkerte værdier. Som et resultat giver skyderen et værdifuldt middel til ...