validación cruzada

Sobre el error de generalización (porque a veces se nos olvida)

Al construir modelos, queremos minimizar $$ l(\theta) = \int L(y, f_\theta(x)) dP(x,y),$$ donde $L$ es una determinada función de pérdida (y no, no me refiero exclusivamente a la que tiene un numerillo 2). Pero como de $latex P(x,y)$ solo conocemos una muestra $latex (x_i, y_i)$ (dejadme aprovechar la ocasión para utilizar una de mis palabras favoritas: $latex P(x,y)$ es incognoscible), hacemos uso de la aproximación $$ \int f(x) dP(x) \approx \frac{1}{N} \sum f(x_i)$$

¿Vale realmente el "bootstrap" para comparar modelos?

Es una pregunta legítima —en el sentido de que ignoro la respuesta— que tengo. Para plantearla en sus debidos términos: Contexto: Tenemos modelos y queremos compararlos. Queremos que funcionen en el universo, pero solo disponemos de él una muestra. Acto 1: Para desatascar el nudo lógico, recurrimos a técnicas como: Entrenamiento y validación,j jackknife y sobre todo, su popular evolución, la validación cruzada. Todas ellas bien sabidas y discutidas en todos los manuales.

Validación cruzada en R

Está de moda usar caret para estas cosas, pero yo estoy todavía acostumbrado a hacerlas a mano. Creo, además, que es poco instructivo ocultar estas cuestiones detrás de funciones de tipo caja-negra-maravillosa a quienes se inician en el mundo de la construcción y comparación de modelos. Muestro, por tanto, código bastante simple para la validación cruzada de un modelo con R: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # genero ids ids <- rep(1:10, length.

Validación cruzada en paralelo

r
Estoy sin tiempo, así que os suelto el código y me largo a casa a no cenar. Es así: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 library(parallel) cl <- makeCluster(8) # solo si hay aleatorización # clusterSetRNGStream(cl, 123) clusterEvalQ(cl, { # las librerías necesarias tienen que cargarse # en cada esclavo library(rpart) # en la práctica, hay que cargar los datos # (¿desde fichero?