Convalida incrociata leave-one-out in r (con esempi)


Per valutare le prestazioni di un modello su un set di dati, dobbiamo misurare quanto bene le previsioni fatte dal modello corrispondono ai dati osservati.

Un metodo comunemente utilizzato per eseguire questa operazione è noto come Leave-One-Out Cross-Validation (LOOCV) , che utilizza il seguente approccio:

1. Suddividere un set di dati in un set di training e in un set di test, utilizzando tutte le osservazioni tranne una come parte del set di training.

2. Crea un modello utilizzando solo i dati del set di training.

3. Utilizzare il modello per prevedere il valore di risposta dell’osservazione esclusa dal modello e calcolare l’errore quadratico medio (MSE).

4. Ripeti questo processo n volte. Calcolare l’MSE del test come media di tutti gli MSE del test.

Il modo più semplice per eseguire LOOCV in R è utilizzare la funzione trainControl() dalla libreria caret in R.

Questo tutorial fornisce un rapido esempio di come utilizzare questa funzione per eseguire LOOCV per un determinato modello in R.

Esempio: convalida incrociata Leave-One-Out in R

Supponiamo di avere il seguente set di dati in R:

 #create data frame
df <- data.frame(y=c(6, 8, 12, 14, 14, 15, 17, 22, 24, 23),
                 x1=c(2, 5, 4, 3, 4, 6, 7, 5, 8, 9),
                 x2=c(14, 12, 12, 13, 7, 8, 7, 4, 6, 5))

#view data frame
df

y x1 x2
6 2 14
8 5 12
12 4 12
14 3 13
14 4 7
15 6 8
17 7 7
22 5 4
24 8 6
23 9 5

Il codice seguente mostra come adattare un modello di regressione lineare multipla a questo set di dati in R ed eseguire LOOCV per valutare le prestazioni del modello:

 library (caret)

#specify the cross-validation method
ctrl <- trainControl(method = " LOOCV ")

#fit a regression model and use LOOCV to evaluate performance
model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl)

#view summary of LOOCV               
print(model)

Linear Regression 

10 samples
 2 predictors

No pre-processing
Resampling: Leave-One-Out Cross-Validation 
Summary of sample sizes: 9, 9, 9, 9, 9, 9, ... 
Resampling results:

  RMSE Rsquared MAE     
  3.619456 0.6186766 3.146155

Tuning parameter 'intercept' was held constant at a value of TRUE

Ecco come interpretare il risultato:

  • 10 campioni diversi sono stati utilizzati per costruire 10 modelli. Ciascun modello utilizzava 2 variabili predittive.
  • Non è stata effettuata alcuna preelaborazione. Cioè, non abbiamo ridimensionato i dati in alcun modo prima di adattarli ai modelli.
  • Il metodo di ricampionamento utilizzato per generare i 10 campioni è stato la convalida incrociata Leave-One-Out.
  • La dimensione del campione per ciascun set di formazione era di 9.
  • RMSE: errore quadratico medio. Questo misura la differenza media tra le previsioni fatte dal modello e le osservazioni effettive. Più basso è l’RMSE, più accuratamente un modello può prevedere le osservazioni effettive.
  • Rsquared: questa è una misura della correlazione tra le previsioni fatte dal modello e le osservazioni effettive. Quanto più alto è l’R quadrato, tanto più accuratamente un modello può prevedere le osservazioni reali.
  • MAE: L’errore medio assoluto. Questa è la differenza media assoluta tra le previsioni fatte dal modello e le osservazioni effettive. Più basso è il MAE, più accuratamente un modello può prevedere le osservazioni effettive.

Ognuna delle tre misurazioni fornite nel risultato (RMSE, R-quadrato e MAE) ci dà un’idea della performance del modello su dati non pubblicati.

In pratica, in genere adattiamo diversi modelli diversi e confrontiamo i tre parametri forniti dai risultati qui presentati per decidere quale modello produce i tassi di errore di test più bassi ed è quindi il modello migliore da utilizzare.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *