Dividir los datos en train y testing

Autor: | Última modificación: 18 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post:

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿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:

#data.train
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)

#train test
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

#data train
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!

Posts Relacionados

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado