Cross-validation a 10 fold
Come hai visto nel video, un approccio migliore per validare i modelli è usare più insiemi di test sistematici, invece di un singolo train/test split casuale. Per fortuna, il pacchetto caret rende tutto questo molto semplice:
model <- train(y ~ ., my_data)
caret supporta molti tipi di cross-validation, e puoi specificare quale tipo di cross-validation e il numero di fold di cross-validation con la funzione trainControl(), che passi all’argomento trControl in train():
model <- train(
y ~ .,
my_data,
method = "lm",
trControl = trainControl(
method = "cv",
number = 10,
verboseIter = TRUE
)
)
È importante notare che passi il metodo per il modeling alla funzione principale train() e il metodo per la cross-validation alla funzione trainControl().
Questo esercizio fa parte del corso
Machine Learning con caret in R
Istruzioni dell'esercizio
- Adatta una regressione lineare per modellare
priceusando tutte le altre variabili del datasetdiamondscome predittori. Usa la funzionetrain()e una cross-validation a 10 fold. (Nota: abbiamo preso un sottoinsieme del dataset completodiamondsper velocizzare l’operazione, ma si chiama comunquediamonds.) - Stampa il modello nella console ed esamina i risultati.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Fit lm model using 10-fold CV: model
model <- train(
___,
___,
method = "lm",
trControl = trainControl(
method = "cv",
number = ___,
verboseIter = TRUE
)
)
# Print model to console