Está en la página 1de 2

La evaluación del modelo nos dice cómo funciona nuestro modelo en el mundo real.

En
el módulo anterior, hablamos de la evaluación en muestra. La evaluación en la
muestra nos dice qué tan bien nuestro modelo se ajusta a los datos ya dados para
entrenarlo. No nos da una estimación de lo bien que el modelo de tren puede
predecir nuevos datos. La solución es dividir nuestros datos, utilizar los datos de
muestra o los datos de entrenamiento para entrenar el modelo. El resto de los
datos, llamados Datos de prueba, se utiliza como datos fuera de muestra. Estos
datos se utilizan entonces para aproximar el rendimiento del modelo en el mundo
real. La separación de datos en conjuntos de entrenamiento y pruebas es una parte
importante de la evaluación del modelo. Utilizamos los datos de prueba para tener
una idea de cómo funcionará nuestro modelo en el mundo real. Cuando dividimos un
conjunto de datos, generalmente la mayor parte de los datos se utiliza para el
entrenamiento y una parte más pequeña se utiliza para las pruebas. Por ejemplo,
podemos usar el 70 por ciento de los datos para el entrenamiento. Luego usamos el
30 por ciento para las pruebas. Utilizamos el conjunto de entrenamiento para
construir un modelo y descubrir relaciones predictivas. A continuación, utilizamos
un conjunto de pruebas para evaluar el rendimiento del modelo. Cuando hayamos
terminado de probar nuestro modelo, deberíamos usar todos los datos para entrenar
el modelo. Una función popular, en el paquete scikit-learn para conjuntos de datos
de división, es la función de división de pruebas de tren. Esta función divide
aleatoriamente un conjunto de datos en subconjuntos de entrenamiento y pruebas. Del
fragmento de código de ejemplo, este método se importa desde sklearn.cross-
validation. Los parámetros de entrada y_data es la variable de destino. En el
ejemplo de evaluación de automóviles, sería el precio y x_data, la lista de
variables predictivas. En este caso, serían todas las demás variables en el
conjunto de datos de automóviles que estamos utilizando para tratar de predecir el
precio. La salida es una matriz. x_train y y_train los subconjuntos para el
entrenamiento. x_test y y_test los subconjuntos para pruebas. En este caso, el
tamaño de la prueba es un porcentaje de los datos para el conjunto de pruebas.
Aquí, es el 30 por ciento. El estado aleatorio es una semilla aleatoria para la
división de conjuntos de datos aleatorios. El error de generalización es una medida
de lo bien que hacen nuestros datos al predecir datos previamente no vistos. El
error que obtenemos usando nuestros datos de prueba es una aproximación a este
error. Esta figura muestra la distribución de los valores reales en rojo comparado
con los valores predichos de una regresión lineal en azul. Vemos que las
distribuciones son algo similares. Si generamos el mismo diagrama usando los datos
de prueba, vemos que las distribuciones son relativamente diferentes. La diferencia
se debe a un error de generalización y representa lo que vemos en el mundo real.
Usar una gran cantidad de datos para el entrenamiento nos da un medio preciso para
determinar qué tan bien funcionará nuestro modelo en el mundo real. Pero la
precisión del rendimiento será baja. Vamos a aclarar esto con un ejemplo. El centro
de este ojo de toro representa el error de generalización correcto. Supongamos que
tomamos una muestra aleatoria de los datos usando 90 por ciento de los datos para
entrenamiento y 10 por ciento para pruebas. La primera vez que experimentamos,
obtenemos una buena estimación de los datos de entrenamiento. Si experimentamos de
nuevo entrenando el modelo con una combinación diferente de muestras, también
obtenemos un buen resultado. Pero, los resultados serán diferentes en relación con
la primera vez que ejecutamos el experimento. Repetiendo el experimento de nuevo
con una combinación diferente de entrenamiento y pruebas de muestras, los
resultados son relativamente cercanos al error de generalización, pero distintos
unos de otros. Repitiendo el proceso, obtenemos una buena aproximación del error de
generalización, pero la precisión es pobre, es decir, todos los resultados son
extremadamente diferentes entre sí. Si usamos menos puntos de datos para entrenar
el modelo y más para probar el modelo, la precisión del rendimiento de
generalización será menos, pero el modelo tendrá una buena precisión. La figura
anterior lo demuestra. Todas nuestras estimaciones de errores son relativamente
cercanas, , pero están más lejos del verdadero rendimiento de generalización. Para
superar este problema, utilizamos la validación cruzada. Una de las métricas de
evaluación de muestras más comunes es la validación cruzada. En este método, el
conjunto de datos se divide en K grupos iguales. Cada grupo se conoce como un
pliegue. Por ejemplo, cuatro pliegues. Algunos de los pliegues se pueden utilizar
como un conjunto de entrenamiento que usamos para entrenar el modelo y las partes
restantes se utilizan como un conjunto de prueba, que usamos para probar el modelo.
Por ejemplo, podemos usar tres pliegues para entrenar, y luego usar un pliegue para
probar. Esto se repite hasta que cada partición se utiliza tanto para entrenamiento
como para pruebas. Al final, usamos los resultados promedio como la estimación del
error fuera de muestra. La métrica de evaluación depende del modelo, por ejemplo,
el r cuadrado. La forma más sencilla de aplicar la validación cruzada es llamar a
la función cross_val_score, , que realiza múltiples evaluaciones fuera de muestra.
Este método se importa del paquete de selección de modelo de sklearn. Luego usamos
la función cross_val_score. Los primeros parámetros de entrada, el tipo de modelo
que estamos utilizando para hacer la validación cruzada. En este ejemplo,
inicializamos un modelo de regresión lineal u objeto lr que pasamos la función
cross_val_score. Los otros parámetros son x_data, los datos de la variable
predictiva, y y_data, los datos de la variable objetivo. Podemos gestionar el
número de particiones con el parámetro cv. Aquí, cv es igual a tres, lo que
significa que el conjunto de datos se divide en tres particiones iguales. La
función devuelve una matriz de puntuaciones, una para cada partición que se eligió
como el conjunto de pruebas. Podemos promediar el resultado juntos para estimar de
muestra r al cuadrado usando la función media NNUMPi. Vamos a ver una animación,
vamos a ver el resultado de la matriz de puntuación en la última diapositiva.
Primero, dividimos los datos en tres pliegues. Utilizamos dos pliegues para el
entrenamiento, el pliegue restante para la prueba. El modelo producirá una salida.
Vamos a utilizar la salida para calcular una puntuación. En el caso del coeficiente
de determinación r cuadrado es decir , almacenaremos ese valor en una matriz.
Repetiremos el proceso usando dos pliegues para entrenar y uno para probar. Guarde
la puntuación, luego use una combinación diferente para el entrenamiento y el
pliegue restante para las pruebas. Almacenamos el resultado final. La función
cross_val_score devuelve un valor de puntuación para indicarnos el resultado de la
validación cruzada. ¿Y si queremos un poco más de información? ¿Qué pasa si
queremos conocer los valores predichos reales suministrados por nuestro modelo
antes de que se calculen los valores r cuadrados? Para ello, utilizamos la función
cross_ val_predict. Los parámetros de entrada son exactamente los mismos que la
función cross_val_score, pero la salida es una predicción. Vamos a ilustrar el
proceso. Primero, dividimos los datos en tres pliegues. Utilizamos dos pliegues
para el entrenamiento, el pliegue restante para la prueba. El modelo producirá una
salida, y la almacenaremos en una matriz. Repetiremos el proceso usando dos
pliegues para entrenar uno para probar. El modelo produce una salida de nuevo. Por
último, utilizamos los dos últimos pliegues para el entrenamiento. Luego usamos los
datos de prueba. Este pliegue final de prueba produce una salida. Estas
predicciones se almacenan en una matriz.

También podría gustarte