Out-of-sample model fit beoordelen
Je weet nu dat het zinvoller is om naar de out-of-sample model fit te kijken dan naar de in-sample fit. In deze oefening wil je daarom een out-of-sample nauwkeurigheidsmaat bepalen.
Eerst moet je echter een paar voorbereidende stappen doen. Neem defaultData er weer bij. logitModelNew is al in je omgeving geladen.
Onthoud dat je voor een volledige analyse altijd verschillende modelkandidaten moet vergelijken, ook (en juist) met out-of-sample data.
De in-sample nauwkeurigheid — met de optimale drempel van 0,3 — is 0.7922901.
Zorg dat je begrijpt of er sprake is van overfitting.
Deze oefening maakt deel uit van de cursus
Machine Learning for Marketing Analytics in R
Oefeninstructies
Split eerst de gegevensset willekeurig in een trainings- en testset. De trainingsset moet 2/3 van alle data bevatten.
Run vervolgens snel het model en noem het
logitTrainNew. Gebruik de gegeven formule.Maak voorspellingen op de testset en bereken daarna de out-of-sample nauwkeurigheid met behulp van een confusion matrix. Let op:
SDMToolsis niet meer te downloaden via CRAN. Installeer het op je eigen computer viaremotes::install_version("SDMTools", "1.1-221.2").Vergelijk de out-of-sample nauwkeurigheid met de in-sample waarde die hierboven is gegeven.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Split data in train and test set
set.seed(534381)
defaultData$isTrain <- rbinom(nrow(defaultData), 1, 0.66)
train <- subset(defaultData, ___ == 1)
test <- subset(defaultData, ___ == 0)
logitTrainNew <- glm(formulaLogit, family = binomial, data = ___) # Modeling
test$predNew <- predict(logitTrainNew, type = "response", newdata = ___) # Predictions
# Out-of-sample confusion matrix and accuracy
confMatrixModelNew <- confusion.matrix(___, ___, threshold = 0.3)
sum(diag(confMatrixModelNew)) / sum(confMatrixModelNew) # Compare this value to the in-sample accuracy