Validación Cruzada en R

Definición

La validación cruzada o cross validation es una técnica utilizada para la evaluación de resultados de análisis estadísticos que garantiza la independencia entre el subconjunto de datos de entrenamiento y el de prueba.

La independencia es garantizada debido a la forma en que se construyen cada uno de los subconjuntos de datos de test y entrenamiento, ya que nunca se solapan resultados.

Una vez calculada la precisión de predicción de cada subconjunto de forma independiente se calcula la media de las previsiones y esa se utiliza como medida definitiva de la precisión del modelo estudiado.

En la siguiente figura se puede ver de forma visual como se forma cada subconjunto.

cross-validation

Muy utilizado para estimar la precisión de predicción de un modelo.

Ejemplo de validación cruzada

# Generar conjunto de datos
datos <- data.frame(num=1:100, letra=rep(c("A","B","C","D","E","F","G","H","I","J"),10))
# Barajear el conjunto de datos ordenando aleatoriamente
datos <- datos[sample(nrow(datos)),]

# Definir el número iteraciones a realizar
num_particiones <- 5

# Crear los N conjuntos del mismo tamaño
folds <- cut(seq(1,nrow(datos)),breaks=num_particiones,labels=FALSE)

# Realizar la validación cruzada N veces
for(i in 1:num_particiones){
  
  # Segmentar los datos cumpliendo con las particiones definidas 
  testIndexes <- which(folds==i,arr.ind=TRUE)
  
  # Generar datos de test
  testData <- datos[testIndexes, ]
  # Generar datos de entrenamiento
  trainData <- datos[-testIndexes, ]
  
  # Usar tanto los datos de test como de entrenamiento para probar diferentes modelos predictivos
  print(testData$num)
}
 63 57 69 72 67 88 58 39 23 17 34 80 38 99 91 71 59 50 43 82
 66 15 61 46  1 90 78 10 73 42 33 86 87 31  8 54 60 30 68 52
 20 13 27 6 100  5 70 41 32 36 55 40 22 19 21  2 65 24 83 29
 62 84 97 76 85 53 48 18 92 47 12 96 45 79 51 81 93 49 44 89
 11 77 75  3  9  7 94 56 26 28 25 64  4 98 14 35 16 95 37 74

Otros artículos que pueden ser de interés:

Autor: Diego Calvo