Evaluarea potrivirii modelului pe date noi (out-of-sample)
Acum știi că are mai mult sens să analizezi potrivirea modelului pe date noi (out-of-sample) decât pe datele de antrenament (in-sample). În acest exercițiu, vei calcula o măsură de acuratețe out-of-sample.
Înainte de asta, va trebui să parcurgi câțiva pași pregătitori. Folosește din nou defaultData. logitModelNew este deja încărcat în mediul tău de lucru.
Reține că, pentru o analiză completă, ar trebui să compari întotdeauna mai mulți candidați de model și folosind date out-of-sample.
Acuratețea in-sample – folosind pragul optim de 0,3 – este 0.7922901.
Asigură-te că înțelegi dacă există supraajustare (overfitting).
Acest exercițiu face parte din cursul
Machine Learning pentru Analiză de Marketing în R
Instrucțiuni pentru exercițiu
Mai întâi, împarte setul de date aleatoriu în set de antrenament și set de testare. Setul de antrenament trebuie să conțină 2/3 din totalul datelor.
Apoi, rulează rapid modelul și numește-l
logitTrainNew. Folosește formula dată.Generează predicții pe setul de testare, apoi calculează acuratețea out-of-sample cu ajutorul unei matrice de confuzie. Reține că
SDMToolsnu mai poate fi descărcat din CRAN. Pe calculatorul personal, instalează-l prinremotes::install_version("SDMTools", "1.1-221.2").Compară acuratețea out-of-sample cu valoarea in-sample menționată mai sus.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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