Hem Personliga finanser Kämpar med överfitting i maskinlärande - dummies

Kämpar med överfitting i maskinlärande - dummies

Innehållsförteckning:

Video: Björn Hellberg kämpar med ett omöjligt plaströr 2024

Video: Björn Hellberg kämpar med ett omöjligt plaströr 2024
Anonim

Med tanke på den neurala nätverksarkitekturen kan du föreställa dig hur lätt algoritmen kan lära sig nästan allt från data, speciellt om du lägger till för många lager. I själva verket gör algoritmen så bra att dess förutsägelser ofta påverkas av en hög uppskattningsvariant som kallas övermontering. Överfitting gör att det neurala nätverket lär sig varje detalj i träningsexemplen, vilket gör det möjligt att replikera dem i prediktionsfasen. Men förutom träningsuppsättningen kommer det aldrig någonsin att förutsäga något annat.

Förstå överfittingproblemet

När du använder ett neuralt nätverk för ett verkligt problem måste du vidta några försiktighetsåtgärder på ett mycket strängare sätt än vad du gör med andra algoritmer. Neurala nätverk är frailer och mer benägna att relevanta fel än andra maskininlärningslösningar.

Först delar du noggrant dina data i träning, validering och testuppsättningar. Innan algoritmen lär sig från data måste du utvärdera godheten hos dina parametrar: arkitektur (antalet lager och noder i dem); aktiveringsfunktioner; lärande parameter; och antal iterationer. I synnerhet erbjuder arkitekturen stora möjligheter att skapa kraftfulla prediktiva modeller med hög risk för övermontering. Inlärningsparametern styr hur snabbt ett nätverk lär sig från data, men det kan inte räcka för att förhindra övervakning av träningsdata.

Du har två möjliga lösningar på detta problem:

  • Den första lösningen är regularisering, som i linjär och logistisk regression. Du kan summera alla kopplingskoefficienter, kvadrerade eller i absolutvärde, för att straffa modeller med för många koefficienter med höga värden (uppnås genom L2-regularisering) eller med värden som skiljer sig från noll (uppnås genom L1-regularisering).
  • Den andra lösningen är också effektiv eftersom den kontrollerar när överfitting sker. Den heter early-stop och fungerar genom att kontrollera kostnadsfunktionen på valideringsuppsättningen som algoritmen lär sig från träningsuppsättningen.

Du kanske inte inser när din modell börjar överföras. Kostnadsfunktionen som beräknas med träningsuppsättningen fortsätter att förbättras när optimeringen fortskrider. Men så fort du börjar spela in ljud från data och sluta lära sig allmänna regler, kan du kontrollera kostnadsfunktionen på ett externt prov (valideringsprovet). Vid något tillfälle kommer du märka att det slutar förbättra och börjar förvärras, vilket innebär att din modell har nått sin inlärningsgräns.

Öppna den svarta rutan i neurala nätverk

Det bästa sättet att lära sig att bygga ett neuralt nätverk är att bygga en. Python erbjuder en mängd möjliga implementeringar för neurala nätverk och djupt lärande. Python har bibliotek som Theano, vilket möjliggör komplexa beräkningar på abstrakt nivå och mer praktiska paket, som Lasagne, som låter dig bygga neurala nätverk, men det kräver fortfarande några abstraktioner. Av denna anledning behöver du wrappers, som nolearn, som är kompatibel med scikit-learn, eller Keras, som också kan sätta in TensorFlow-biblioteket som släpptes av Google, som har potential att ersätta Theano som ett mjukvarubibliotek för neural beräkning.

R ger bibliotek som är mindre komplicerade och mer tillgängliga, till exempel nnet, AMORE och neuralnet. Dessa korta exempel i R visar hur man tränar både ett klassificeringsnätverk (på Iris dataset) och ett regressionsnätverk (på Boston-dataset). Från och med klassificeringen laddar följande kod datauppsättningen och delar upp den i tränings- och testuppsättningar:

bibliotek (neuralnet)

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

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

frö (101)

index <- prov (1: nrow (iris), 100)

train_predictors <- iris [index, 1: 4]

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

Eftersom neurala nätverk bygger på gradient nedstigning, måste du standardisera eller normalisera ingångarna. Normalisering är bättre så att läget är noll och maximalt är en för varje funktion. Naturligtvis lär du dig hur man gör den numeriska omvandlingen endast med träningsuppsättningen för att undvika chanser att använda information från testet utanför provet.

min_vektor <- tillämpa (train_predictors, 2, min)

range_vector <- tillämpa (train_predictors, 2, max) -

tillämpa (train_predictors, 2, min)

train_scaled <- cbind

test_scaled <- cbind (skala (test_predictors,

min_vector, range_vector),

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

När träningssatsen är klar kan du träna modellen för att gissa tre binära variabler, var och en representerar en klass. Utgången är ett värde för varje klass proportionellt mot sannolikheten för att vara den verkliga klassen. Du väljer en förutsägelse genom att ta det högsta värdet. Du kan också visualisera nätverket genom att använda det inre diagrammet och därmed se den neurala nätverksarkitekturen och de tilldelade vikterna.

set. frö (102)

nn_iris <- neuralnet (setosa + versicolor + virginica ~

Sepal. Längd + Sepal. Bredd

+ Petal. Längd + Petal. Bredd,

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

y_predicted <- apply resultat, 1, vilken. max)

y_true <- tillämpa (test_scaled [5: 7], 1, vilken. max)

confusion_matrix <- table (y_true, y_predicted)

noggrannhet <- summa diag (confusion_matrix)) /

summa (confusion_matrix)

skriv ut (confusion_matrix)

print (klistra in ("Noggrannhet:", noggrannhet))

Du kan rita ett utbildat neuralt nätverk.

Följande exempel visar hur man kan förutsäga husvärden i Boston, med hjälp av Boston-datasatsen. Förfarandet är detsamma som i föregående klassificering, men här har du en enda utmatningsenhet. Koden visar också testsatsens förutsägda resultat mot de verkliga värdena för att verifiera modellens bra passform.

no_examples <- nrow (Boston)

funktioner <- colnames (Boston)

set. frö (101)

index <- prov (1: no_examples, 400)

tåg <- boston [index,]

test <- boston [-index,]

min_vektor <- tillämpa, 2, min)

range_vector <- apply (tåg, 2, max) - tillämpa (tåg, 2, min)

scaled_train <- skala (tåg, min_vektor, range_vector)

skalad test, min_vector, range_vector)

formel = klistra in ("medv ~", klistra in (funktioner [1: 13],

kollaps = '+'))

nn_boston <- neuralnet = scaled_train,

dold = c (5, 3), linjär utdata = T)

förutsägelser <- beräkna (nn_boston, scaled_test [1: 13])

predicted_values ​​<- resultat

range_vector [14]) + min_vector [14]

RMSE <- sqrt (medelvärde ((test [14] - predicted_values) ^ 2))

RMSE))

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

ablin (0, 1, lwd = 1)

Kämpar med överfitting i maskinlärande - dummies

Redaktörens val

Hur man justerar inställningar för din bakgrund i Gamestar Mechanic - dummies

Hur man justerar inställningar för din bakgrund i Gamestar Mechanic - dummies

När du har lagt till en Bakgrund till ditt spel kan du ytterligare anpassa bakgrunden i Gamestar Mechanic genom att använda två ytterligare alternativ i dialogrutan Nivåinställningar: Bakgrundsrullning och Bakgrundsstil. Bakgrundsrullning Parallaxen är en viktig egenskap hos bakgrunden i spel där alternativet Fler skärm är valt. Redigerbar ...

Hur man balanserar svårigheten hos ett Gamestar Mechanic Game - dummies

Hur man balanserar svårigheten hos ett Gamestar Mechanic Game - dummies

Det vanligaste exemplet på balansering ett spel i Gamestar Mechanic balanserar svårigheten: Gör inte spelet så lätt att det är tråkigt och gör det inte så svårt att det är frustrerande. För att finjustera spelets svårighet måste du göra små förändringar utan att bli förbunden till ...

För att kalibrera accelerometern för ditt HTML5-spel - dummies

För att kalibrera accelerometern för ditt HTML5-spel - dummies

Som standard antar HTML5-spelaccelerometern Det neutrala läget är perfekt horisontellt - det vill säga enheten ligger platt på ett bord. Men det här är mobila enheter, och spelare vill ofta ha det neutrala stället att vara någon annanstans. Grundläggande tekniken för att kalibrera tiltkontrollen är att hålla koll på en ...

Redaktörens val

Gör äta rena förändringar i livet - dummies

Gör äta rena förändringar i livet - dummies

Rena ätförändringar i ditt liv är inte svåra att göra, men de tar lite gumption, uthållighet och övning. När du gör en koncentrerad insats för att äta lägre på livsmedelskedjan, märka hur detta beslut påverkar andra delar av ditt liv. För att vara framgångsrik måste du tänka på mat och äta annorlunda, vilka ...

Köttfri måndag och hållbarhet - dummies

Köttfri måndag och hållbarhet - dummies

Köttfri måndag är ett ganska nytt koncept som ofta nämns på Facebook och Twitter. Allt det betyder är att en dag i veckan väljer du att äta vegetarian eller vegan. Inte bara kan Meatless Monday spara pengar (eftersom kött är dyrt), men planen hjälper miljön (eftersom stora kött-, fläsk- och kycklingsanläggningar skapar nitrat ...

5 Hälsofördelar Kopplade till Medelhavsdiet - dummies

5 Hälsofördelar Kopplade till Medelhavsdiet - dummies

Medelhavsdieten har länge varit prydnad för vilket ger hälsoeffekter, såsom att minska kranskärlssjukdom och minska risken för vissa cancerformer. Inklusive färska grönsaker och frukter, baljväxter och hälsosamma fetter i din kost kan hjälpa dig att förbättra din hälsa på många sätt. Forskning visar att en traditionell medelhavsdiet minskar ...

Redaktörens val

Hur man arbetar med Nikon D3300-minneskort - dummies

Hur man arbetar med Nikon D3300-minneskort - dummies

Som mediet som lagrar dina bildfiler , Nikon D3300s minneskort är en viktig del av din kamera. Följ dessa tips för att köpa och behålla kort: Köpkort: När du handlar för ett SD-minneskort är den enda specifikationen som noterar annat än kortkapaciteten kort hastighet, vilket indikerar hur snabbt data ...

Timerfotografering: Nikon D5200-dummies med Nikon D5200

Timerfotografering: Nikon D5200-dummies med Nikon D5200

Med intervall Timer Fotografering på Nikon D5200, du kan ställa in kameran för att automatiskt släppa avtryckaren med intervall som sträcker sig från sekunder till timmar från varandra. Med den här funktionen kan du fånga upp ett ämne eftersom det förändras över tiden - en teknik som är känd som fotografering med tidsfördröjning - utan att behöva stå runt på ...

JPEG Filer på Nikon D3300-dummies

JPEG Filer på Nikon D3300-dummies

Uttalad "jay-peg", det här formatet är standardinställningen på din Nikon D3300, som det är på de flesta digitalkameror. JPEG är populär av två huvudorsaker: Omedelbar användbarhet: Alla webbläsare och e-postprogram kan visa JPEG-filer, så att du kan dela bilder online direkt efter att du har tagit dem. Du kan också få en ...