Saltar al contenido

Cómo entrenar al conjunto de pruebas en el aprendizaje automático

24 de septiembre de 2020

El entrenamiento para el conjunto de pruebas es un tipo de sobreajuste en el que se prepara un modelo que intencionadamente logra un buen rendimiento en un conjunto de pruebas determinado a expensas de un mayor error de generalización.

Es un tipo de equipamiento que es común en las competiciones de aprendizaje de máquinas en las que se proporciona un conjunto de datos de entrenamiento completo y en las que sólo se proporciona la parte de entrada de un conjunto de pruebas. Un enfoque para entrenamiento para el conjunto de pruebas implica construir un conjunto de entrenamiento que se asemeje más al conjunto de pruebas y luego usarlo como base para entrenar un modelo. Se espera que el modelo tenga un mejor rendimiento en el conjunto de pruebas, pero lo más probable es que tenga un peor rendimiento en el conjunto de datos de entrenamiento y en cualquier dato nuevo en el futuro.

Aunque no es deseable que el equipo de pruebas se sobreajuste, puede ser interesante explorarlo como un experimento de pensamiento y proporcionar una mayor comprensión tanto de las competiciones de aprendizaje de la máquina como de evitar el sobreajuste en general.

En este tutorial, descubrirá cómo entrenar intencionadamente al conjunto de pruebas para los problemas de clasificación y regresión.

Después de completar este tutorial, lo sabrás:

  • El entrenamiento al equipo de prueba es un tipo de fuga de datos que puede ocurrir en las competiciones de aprendizaje de máquinas.
  • Un enfoque de la capacitación del conjunto de pruebas consiste en crear un conjunto de datos de capacitación que sea más similar al conjunto de pruebas suministrado.
  • Cómo usar un modelo KNN para construir un conjunto de datos de entrenamiento y entrenar al conjunto de pruebas con un conjunto de datos reales.

Ponga en marcha su proyecto con mi nuevo libro «Data Preparation for Machine Learning», que incluye tutoriales paso a paso y el El código fuente de Python archivos para todos los ejemplos.

Empecemos.

Cómo entrenar al conjunto de pruebas en el aprendizaje automático

Cómo entrenar al conjunto de pruebas en el aprendizaje automático
Foto de ND Strupler, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en tres partes; son:

  1. Entrena al equipo de pruebas
  2. Tren de pruebas para la clasificación
  3. Tren de pruebas para la regresión

Entrena al equipo de pruebas

En el aprendizaje aplicado de la máquina, buscamos un modelo que aprenda la relación entre las variables de entrada y salida utilizando el conjunto de datos de entrenamiento.

La esperanza y el objetivo es que aprendamos una relación que se generalice a nuevos ejemplos más allá del conjunto de datos de entrenamiento. Este objetivo motiva por qué utilizamos técnicas de remuestreo como la validación cruzada del pliegue k para estimar el rendimiento del modelo al hacer predicciones sobre datos no utilizados durante el entrenamiento.

En el caso de las competiciones de aprendizaje de máquinas, como las de Kaggle, se nos da acceso al conjunto de datos de entrenamiento completo y a las entradas del conjunto de datos de prueba y se nos pide que hagamos predicciones para el conjunto de datos de prueba.

Esto nos lleva a una posible situación en la que podemos accidentalmente o elegir entrenar a un modelo al conjunto de pruebas. Es decir, ajustar el comportamiento del modelo para lograr el mejor rendimiento en el conjunto de datos de la prueba en lugar de desarrollar un modelo que funcione bien en general, usando una técnica como la validación cruzada de pliegue k.

Otra vía más evidente de fuga de información, puede verse a veces en las competiciones de aprendizaje de máquinas, en las que los datos del entrenamiento y del conjunto de pruebas se dan al mismo tiempo.

– Página 56, Ingeniería y selección de características: Un enfoque práctico para los modelos de predicción, 2019.

El entrenamiento para el conjunto de pruebas es a menudo una mala idea.

Es un tipo explícito de fuga de datos. Sin embargo, es un interesante experimento de pensamiento.

Un enfoque para el entrenamiento del conjunto de pruebas es concebir un conjunto de datos de entrenamiento que sea más similar al conjunto de pruebas. Por ejemplo, podríamos descartar todas las filas del conjunto de entrenamiento que sean demasiado diferentes del conjunto de pruebas y sólo entrenar en aquellas filas del conjunto de entrenamiento que sean máximamente similares a las filas del conjunto de pruebas.

Si bien los datos del conjunto de pruebas suelen tener los datos de los resultados cegados, es posible «entrenarse para la prueba» utilizando únicamente las muestras del conjunto de pruebas que son más similares a los datos del conjunto de pruebas. Esto puede muy bien mejorar los resultados del modelo para este conjunto de pruebas en particular, pero podría arruinar el modelo para predecir en un conjunto de datos más amplio.

– Página 56, Ingeniería y selección de características: Un enfoque práctico para los modelos de predicción, 2019.

Esperábamos que el modelo se adaptara al conjunto de pruebas, pero este es el objetivo de este experimento de pensamiento.

Vamos a explorar este enfoque de la formación para el conjunto de pruebas de este tutorial.

Podemos usar un modelo de vecino más cercano para seleccionar aquellas instancias del conjunto de entrenamiento que son más similares al conjunto de pruebas. Tanto el KNeighborsRegressor como el KNeighborsClassifier proporcionan la función kneighbors() que devolverá índices en el conjunto de datos de entrenamiento para las filas que son más similares a un dato dado, como el conjunto de pruebas.

Podríamos intentar eliminar los duplicados de los índices de las filas seleccionadas.

Podemos usar esos índices de fila para construir un conjunto de datos de entrenamiento personalizado y ajustar un modelo.

Recomendado:  Noticias de análisis en tiempo real para la semana que finaliza el 7 de enero

Dado que estamos utilizando un modelo KNN para construir el conjunto de entrenamiento a partir del conjunto de pruebas, también utilizaremos el mismo tipo de modelo para hacer predicciones sobre el conjunto de pruebas. Esto no es necesario, pero hace que los ejemplos sean más simples.

Usando este enfoque, ahora podemos experimentar con el entrenamiento para el conjunto de pruebas tanto para la clasificación como para los conjuntos de datos de regresión.

¿Quieres empezar a preparar los datos?

Toma mi curso intensivo gratuito de 7 días por correo electrónico ahora (con código de muestra).

Haga clic para inscribirse y también para obtener una versión gratuita del curso en formato PDF.

Descargue su minicurso GRATUITO

Tren de pruebas para la clasificación

Usaremos el conjunto de datos de la diabetes como base para explorar el entrenamiento para el conjunto de pruebas para los problemas de clasificación.

Cada registro describe los detalles médicos de una mujer y la predicción es la aparición de la diabetes en los próximos cinco años.

El conjunto de datos tiene ocho variables de entrada y 768 filas de datos; las variables de entrada son todas numéricas y el objetivo tiene dos etiquetas de clase, por ejemplo, es una tarea de clasificación binaria.

A continuación se presenta una muestra de las cinco primeras filas del conjunto de datos.

Primero, podemos cargar el conjunto de datos directamente desde el URL, dividirlo en elementos de entrada y salida, y luego dividir el conjunto de datos en trenes y conjuntos de pruebas, reteniendo el treinta por ciento para el conjunto de pruebas. Luego podemos evaluar un modelo KNN con hiperparámetros del modelo por defecto entrenándolo en el conjunto de entrenamiento y haciendo predicciones en el conjunto de pruebas.

El ejemplo completo figura a continuación.

Ejecutando el ejemplo primero se carga el conjunto de datos y se resume el número de filas y columnas, que coinciden con nuestras expectativas. Luego se informa la forma del tren y los conjuntos de prueba, mostrando que tenemos alrededor de 230 filas en el conjunto de prueba.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.

Finalmente, la precisión de la clasificación del modelo es de alrededor de 77,056 por ciento.

Ahora, veamos si podemos lograr un mejor rendimiento en el conjunto de pruebas preparando un modelo que esté entrenado directamente para ello.

Primero, construiremos un conjunto de datos de entrenamiento usando el ejemplo más simple en el conjunto de entrenamiento para cada fila del conjunto de pruebas.

A continuación, entrenaremos el modelo en este nuevo conjunto de datos y lo evaluaremos en el conjunto de pruebas como hicimos antes.

El ejemplo completo figura a continuación.

Al ejecutar el ejemplo, podemos ver que el tamaño reportado del nuevo conjunto de datos de entrenamiento es el mismo tamaño del conjunto de pruebas, como esperábamos.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.

Podemos ver que hemos logrado un aumento en el rendimiento al entrenar al conjunto de pruebas sobre el entrenamiento del modelo en todo el conjunto de datos de entrenamiento. En este caso, logramos una precisión de clasificación de alrededor del 79,654 por ciento en comparación con el 77,056 por ciento cuando se utiliza todo el conjunto de datos de entrenamiento.

Tal vez quieras intentar seleccionar diferentes números de vecinos del conjunto de entrenamiento para cada ejemplo del conjunto de pruebas para ver si puedes lograr un mejor rendimiento.

Además, tal vez quieras intentar mantener índices de fila únicos en el conjunto de entrenamiento y ver si eso hace una diferencia.

Finalmente, podría ser interesante retener un conjunto de datos de validación final y comparar cuán diferentes son «train-to-the-test-set«Las técnicas afectan al rendimiento en el conjunto de datos de la retención. Por ejemplo, ver cómo el entrenamiento en el conjunto de pruebas impacta en el error de generalización.

Informe de sus hallazgos en los comentarios siguientes.

Ahora que sabemos cómo entrenar al conjunto de pruebas para la clasificación, veamos un ejemplo de regresión.

Tren de pruebas para la regresión

Usaremos el conjunto de datos de la vivienda como base para explorar el entrenamiento para el conjunto de pruebas para los problemas de regresión.

El conjunto de datos de la vivienda implica la predicción del precio de una casa en miles de dólares dados los detalles de la casa y su vecindario.

Es un problema de regresión, lo que significa que estamos prediciendo un valor numérico. Hay 506 observaciones con 13 variables de entrada y una de salida.

A continuación figura una muestra de las cinco primeras filas.

Primero, podemos cargar el conjunto de datos, dividirlo, y evaluar un modelo de KNN en él directamente usando todo el conjunto de datos de entrenamiento. Informaremos del rendimiento de esta clase de regresión utilizando el error medio absoluto (MAE).

El ejemplo completo figura a continuación.

Ejecutando el ejemplo primero se carga el conjunto de datos y se resume el número de filas y columnas, que coinciden con nuestras expectativas. Luego se informa la forma del tren y los conjuntos de prueba, mostrando que tenemos alrededor de 150 filas en el conjunto de prueba.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.

Finalmente, se informa que el MAE del modelo es de alrededor de 4.488.

Recomendado:  Las 10 ideas principales en estadísticas que han impulsado la revolución de la inteligencia artificial

Ahora, veamos si podemos lograr un mejor rendimiento en el conjunto de pruebas preparando un modelo que esté entrenado para ello.

Primero, construiremos un conjunto de datos de entrenamiento usando el ejemplo más simple en el conjunto de entrenamiento para cada fila del conjunto de pruebas.

A continuación, entrenaremos el modelo en este nuevo conjunto de datos y lo evaluaremos en el conjunto de pruebas como hicimos antes.

El ejemplo completo figura a continuación.

Al ejecutar el ejemplo, podemos ver que el tamaño reportado del nuevo conjunto de datos de entrenamiento es el mismo tamaño del conjunto de pruebas, como esperábamos.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.

Podemos ver que hemos logrado un aumento en el rendimiento al entrenar al conjunto de pruebas sobre el entrenamiento del modelo en todo el conjunto de datos de entrenamiento. En este caso, hemos logrado un MAE de alrededor de 4.433 comparado con 4.488 cuando se utiliza todo el conjunto de datos de entrenamiento.

Una vez más, tal vez quieras explorar el uso de un número diferente de vecinos cuando construyas el nuevo conjunto de entrenamiento y ver si mantener filas únicas en el conjunto de datos de entrenamiento hace una diferencia. Reporta tus hallazgos en los comentarios de abajo.

Más lecturas

Esta sección proporciona más recursos sobre el tema si desea profundizar en él.

Libros

APIs

Resumen

En este tutorial, descubriste cómo entrenar intencionalmente al conjunto de pruebas para los problemas de clasificación y regresión.

Específicamente, aprendiste:

  • El entrenamiento al equipo de prueba es un tipo de fuga de datos que puede ocurrir en las competiciones de aprendizaje de máquinas.
  • Un enfoque de la capacitación del conjunto de pruebas consiste en crear un conjunto de datos de capacitación que sea más similar al conjunto de pruebas suministrado.
  • Cómo usar un modelo KNN para construir un conjunto de datos de entrenamiento y entrenar al conjunto de pruebas con un conjunto de datos reales.

¿Tiene alguna pregunta?
Haga sus preguntas en los comentarios de abajo y haré lo posible por responder.

¡Controla la preparación de los datos modernos!

Preparación de datos para el aprendizaje automático

Prepare sus datos de aprendizaje de la máquina en minutos

…con sólo unas pocas líneas de código pitón…

Descubre cómo en mi nuevo Ebook:
Preparación de datos para el aprendizaje automático

Proporciona Tutoriales de auto-estudio con código de trabajo completo en:
Selección de características, RFE, Limpieza de datos, Transformaciones de datos, Escalado, Reducción de la dimensionalidad,
y mucho más…

Traer las modernas técnicas de preparación de datos a
Sus proyectos de aprendizaje de la máquina

Ver lo que hay dentro