IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Adatta una regressione lineare per modellare price usando tutte le altre variabili del dataset diamonds come predittori. Usa la funzione train() e una cross-validation a 10 fold. (Nota: abbiamo preso un sottoinsieme del dataset completo diamonds per velocizzare l’operazione, ma si chiama comunque diamonds.)
  • 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
Modifica ed esegui il codice