Utvärdering av modellpassning utanför urvalet
Nu vet du att det är mer meningsfullt att titta på modellpassningen utanför urvalet än på passningen inom urvalet. I den här övningen ska du därför ta fram ett noggrannhetsmått utanför urvalet.
Först behöver du dock göra några förberedande steg. Använd defaultData igen. logitModelNew är redan inläst i din miljö.
Observera att du vid en fullständig analys alltid skulle behöva jämföra olika modellkandidater även – och framför allt – med data utanför urvalet.
Noggrannheten inom urvalet – med det optimala tröskelvärdet 0,3 – är 0.7922901.
Se till att du förstår om det förekommer överanpassning.
Den här övningen är en del av kursen
Maskininlärning för marknadsanalys i R
Övningsinstruktioner
Dela först upp datamängden slumpmässigt i ett tränings- och ett testset. Träningssettet ska innehålla 2/3 av all data.
Kör sedan modellen och kalla den
logitTrainNew. Använd den angivna formeln.Gör prediktioner på testsettet och beräkna sedan noggrannheten utanför urvalet med hjälp av en konfusionsmatris. Observera att
SDMToolsinte längre kan laddas ned från CRAN. Installera det på din egen dator viaremotes::install_version("SDMTools", "1.1-221.2")i stället.Jämför noggrannheten utanför urvalet med värdet inom urvalet som anges ovan.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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