Att träna en modell på rätt sätt

Övervakad inlärning i R: Regression

Nina Zumel and John Mount

Win-Vector, LLC

En modell kan prestera mycket bättre på träningsdata än på ny data.

  • Tränings-$R^2$: 0,9; Test-$R^2$: 0,15 -- Överanpassad
Övervakad inlärning i R: Regression

Test/träningsuppdelning

Rekommenderad metod när data finns i god tillgång

Övervakad inlärning i R: Regression

Exempel: Modellera kvinnlig arbetslöshet

  • Träna på 66 rader, testa på 30 rader
Övervakad inlärning i R: Regression

Modellprestanda: träning vs. test

  • Träning: RMSE 0,71, $R^2$ 0,8
  • Test: RMSE 0,93, $R^2$ 0,75
Övervakad inlärning i R: Regression

Korsvalidering

Föredras när datamängden är för liten för att avsätta ett testset

Övervakad inlärning i R: Regression

Korsvalidering

Övervakad inlärning i R: Regression

Korsvalidering

Övervakad inlärning i R: Regression

Korsvalidering

Övervakad inlärning i R: Regression

Skapa en korsvalideringsplan

library(vtreat)
splitPlan <- kWayCrossValidation(nRows, nSplits, NULL, NULL)
  • nRows: antal rader i träningsdata
  • nSplits: antal folder (partitioner) i korsvalideringen
    • t.ex. nfolds = 3 för trefolds-korsvalidering
  • de 2 återstående argumenten behövs inte här
Övervakad inlärning i R: Regression

Skapa en korsvalideringsplan

library(vtreat)
splitPlan <- kWayCrossValidation(10, 3, NULL, NULL)

Första fold (A och B för träning, C för test)

splitPlan[[1]]
$train
1  2  4  5  7  9 10
$app
3 6 8

Träna på A och B, testa på C, osv...

split <- splitPlan[[1]]
model <- lm(fmla, data = df[split$train,])
df$pred.cv[split$app] <- predict(model, newdata = df[split$app,])
Övervakad inlärning i R: Regression

Slutlig modell

Övervakad inlärning i R: Regression

Exempel: Arbetslöshetsmodell

Måttyp RMSE $R^2$
träning 0,7082675 0,8029275
test 0,9349416 0,7451896
korsvalidering 0,8175714 0,7635331
Övervakad inlärning i R: Regression

Nu kör vi en övning!

Övervakad inlärning i R: Regression

Preparing Video For Download...