Dividir los datos en train y testing

Autor: | Última modificación: 21 de octubre de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

¿Sabías que se pueden dividir los datos en train y testing en una generalización estadística?

En el artículo sobre qué es una generalización estadística hablamos sobre la generalización estadística, que no es más que la habilidad de obtener un resultado en datos no observados y cuyo objetivo es encontrar el modelo que mejor encaje con los datos que se están observando. En este post, te enseñaremos a dividir esos datos observados en dos categorías: train y testing.

¿Cómo dividir los datos en train y testing?

El proceso de dividir lo datos en train y testing lo haremos para observar de forma aleatoria un conjunto de datos nuevos que ingresa y que va a ser percibido como un conjunto de entrenamiento que servirán para hacer validación cruzada. Analizaremos cómo se comporta nuestro modelo cuando se ingresen esos datos nuevos.

¿Y cuáles son esos datos nuevos? Lo que haremos será usar datos de entrenamiento y esos datos nuevos se incluirán en el dataset original.

Así pues, calcularemos un polinomio de grado 10 para poder dividir los datos en train y testing:

In [51]: model <- Im (y ~ poly (x, 10), data = train.df)

new.data.df <- data.frame (x = c(data.df$x, seq (-1, 3, length.out = 100)), y = NA, yp = NA)
new.data.df$yp <- predict (model, new.data.df)

data.dfsyp <- predict (model, data.df)

new.data.df <- rbind (new.data.df, data.df)
new.data.df$type <- "Training"

test.df$type <- "Testing"
test.df$yp <- predict (model, test.df)
new.data.df <- rbind (new.data.df, test.df)

ggplot (new.data.df, aes (x = x, y = y)) + geom_point (na.rm = TRUE, aes (color = type)) + geom_line (aes (y = yp), color = "blue") + theme_linedraw()
paste ("EL MSE training es:", calcmse (y_real = train.df$y, y_est = predict (model, train.df)))
paste ("EL MSE testing es:", calcmse (y_real = test.df$y, y = est = predict (model.test.df)))

El MSE training es: 0.357704820295634

El MSE testing es: 2.4286622507204

dividir los datos en train y testing: gráfica 1

Como podemos observar en este proceso de dividir los datos en train y testing, el MSE training es buenísimo, muy bajo. No obstante, el MSE testing no es tan bueno, ya que es 8 veces mayor de lo que esperábamos. Esto tiene que hacer saltar las alarmas. Si cambiamos el número 10 por un 4, por ejemplo, el resultado de dividir los datos en train y testing sería muy distinto

In [51]: model <- Im (y ~ poly (x, 4), data = train.df)

De modo que quedaría así:

‘El MSE training es: 0.764591924356294’

‘El MSE testing es: 0.268427809301663’

En el proceso de dividir los datos entre train y testing, el R2 de testing normalmente es más alto. En este caso, es más bajo por mera casualidad, pero casi siempre es más alto que el de testing.

Y la gráfica cambiaría:

dividir los datos en train y testing: gráfica 2

Si nos fijamos bien, los puntos azules se utilizan para generar el modelo y los puntos rojos los utiliza para calcular el error.

Si un modelo es demasiado simple, tanto el error de test como de entrenamiento serán altos en el proceso de dividir los datos en train y testing.

Regularización

A medida que el modelo es más complejo, el error disminuye.

Si el modelo es demasiado complejo, ocurre el sobreajuste, el modelo aprende sobre el ruido de nuestro modelo de entrenamiento y no es capaz de generalizar bien. Para evitar el sobreajuste (overfitting), se puede recurrir a simplificar el modelo o poner limitaciones sobre el mismo. Esto se conoce con el nombre de regularización.

Tipos de regularización

  • Regularización Ridge o L2: evita que los parámetros crezcan demasiado. Se añade la función de coste:
función de coste 1
  • Regularización Lasso o L: permite seleccionar los parámetros que más afectan al resultado. Se añade la función de coste:
función de coste 2

¿Qué sigue?

Dividir los datos en train y testing es un proceso muy útil en el análisis estadístico y en la analítica predictiva. si quieres seguir aprendiendo más sobre este tema y muchos otros, puedes seguir nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, en el cual te formarás en todas las herramientas necesarias para incursionar en el mercado laboral en muy poco tiempo. ¡Pide información y da el paso que impulsará tu futuro!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.