Validação cruzada leave-one-out em r (com exemplos)
Para avaliar o desempenho de um modelo em um conjunto de dados, precisamos medir até que ponto as previsões feitas pelo modelo correspondem aos dados observados.
Um método comumente usado para fazer isso é conhecido como Leave-One-Out Cross-Validation (LOOCV) , que usa a seguinte abordagem:
1. Divida um conjunto de dados em um conjunto de treinamento e um conjunto de teste, usando todas as observações, exceto uma, como parte do conjunto de treinamento.
2. Crie um modelo usando apenas dados do conjunto de treinamento.
3. Use o modelo para prever o valor de resposta da observação excluída do modelo e calcular o erro quadrático médio (MSE).
4. Repita este processo n vezes. Calcule o MSE de teste como a média de todos os MSEs de teste.
A maneira mais fácil de executar LOOCV em R é usar a função trainControl() da biblioteca caret em R.
Este tutorial fornece um exemplo rápido de como usar esta função para executar LOOCV para um determinado modelo em R.
Exemplo: Validação Cruzada Leave-One-Out em R
Suponha que temos o seguinte conjunto de dados em 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
O código a seguir mostra como ajustar um modelo de regressão linear múltipla a este conjunto de dados em R e executar LOOCV para avaliar o desempenho do modelo:
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
Veja como interpretar o resultado:
- 10 amostras diferentes foram usadas para construir 10 modelos. Cada modelo utilizou 2 variáveis preditoras.
- Nenhum pré-processamento ocorreu. Ou seja, não dimensionamos os dados de forma alguma antes de ajustar os modelos.
- O método de reamostragem que usamos para gerar as 10 amostras foi a validação cruzada Leave-One-Out.
- O tamanho da amostra para cada conjunto de treinamento foi 9.
- RMSE: raiz do erro quadrático médio. Isso mede a diferença média entre as previsões feitas pelo modelo e as observações reais. Quanto menor o RMSE, mais precisamente um modelo pode prever as observações reais.
- Rquadrado: Esta é uma medida da correlação entre as previsões feitas pelo modelo e as observações reais. Quanto maior o R ao quadrado, mais precisamente um modelo pode prever as observações reais.
- MAE: O erro absoluto médio. Esta é a diferença média absoluta entre as previsões feitas pelo modelo e as observações reais. Quanto menor o MAE, mais precisamente um modelo pode prever as observações reais.
Cada uma das três medidas fornecidas no resultado (RMSE, R-quadrado e MAE) nos dá uma ideia do desempenho do modelo em dados não publicados.
Na prática, normalmente ajustamos vários modelos diferentes e comparamos as três métricas fornecidas pelos resultados aqui apresentados para decidir qual modelo produz as taxas de erro de teste mais baixas e é, portanto, o melhor modelo a ser usado.