Entendiendo La Validación Cruzada | Cómo La Validación Cruzada Nos Ayuda A Evitar El Problema Del Sobreajuste

Tony Yiu
Jun 04, 2020

Contents Outline

Entendiendo La Validación Cruzada | Cómo La Validación Cruzada Nos Ayuda A Evitar El Problema Del Sobreajuste

Jun 04, 2020 8 minutes read

Recuerdo el primer modelo cuantitativo que construí. Era un modelo que cambiaba tácticamente el dinero entre las acciones de EE.UU. y las acciones de los mercados emergentes basado en varios factores económicos y de mercado que yo había investigado.

Pasé mucho tiempo diseñando (en realidad, sobreingeniería) mis parametros y realizando pruebas retrospectivas hasta que estuve seguro de que tenía un éxito mundial. Cuando mi modelo fue finalmente puesto en producción, pasó un año sin hacer básicamente nada. Al final, creo que produjo un rendimiento acumulado ligeramente negativo.

Photo by Sam Balye on Unsplash

Me considero afortunado. Pensando en el pasado, me doy cuenta de que mi modelo estaba exageradamente sobre ajustado y tengo la suerte de que las apuestas que recomendaba no explotaron y le costaron a mi empresa cantidades significativas de dinero.

Reconocer cuando un modelo está sobreajustado

Hoy discutiremos la validación cruzada, una técnica que nos ayuda a estimar el rendimiento de una muestra de nuestro modelo y a prevenir el sobreajuste. Pero primero, hablemos un poco sobre lo que es el sobreajuste y por qué ocurre.

El sobreajuste(Overfitting) es cuando entrenamos nuestro modelo tanto a los datos existentes que pierde la capacidad de generalizar. Los modelos que generalizan bien son los que pueden adaptarse razonablemente con éxito a nuevos datos, especialmente los que son diferentes a cualquiera de las observaciones que el modelo ha visto hasta ahora. Entonces si un modelo sobreajustado es incapaz de generalizar, entonces es muy probable que funcione erráticamente (y probablemente mal) cuando se ponga en producción y salga realmente de la muestra. Las causas más comunes de la sobreadaptación son:

  • Correlaciones espurias: si buscamos lo suficiente, encontraremos fuertes correlaciones. Por ejemplo, podríamos encontrar que el precio de Bitcoin está altamente correlacionado con el precio de la pizza en Zimbabwe. Pero eso se debe más bien al azar y a la casualidad, no a algo real, y sería una tontería apostar dinero por tal correlación. Si ajustamos nuestro modelo con un montón de factores que están espuriosamente correlacionados con lo que intentamos predecir, no se generalizará bien.

  • El uso excesivo del conjunto de pruebas: Este es realmente difícil de evitar por completo. Si un modelo no funciona bien en nuestro conjunto de pruebas (el conjunto de pruebas es la porción de nuestros datos que mantenemos para poder evaluar cómo el modelo generaliza con los nuevos datos), entonces lo ajustaremos hasta que encontremos una configuración que funcione bien tanto en el conjunto de pruebas como en el de entrenamiento. La implicación de hacerlo es que el conjunto de pruebas ya no es una estimación imparcial del rendimiento de nuestro modelo fuera de la muestra - después de todo, una vez que empecemos a tomar decisiones de modelación utilizando el conjunto reservado  (también conocido como el conjunto de pruebas), ¿podemos realmente considerar que todavía está reservado?

  • Un conjunto de entrenamiento sesgado: Nuestros datos de entrenamiento raramente serán verdaderamente representativos de la población que estamos tratando de modelar. Así que debemos ser conscientes de que con seguridad en algún momento vamos a dar con datos que nuestro modelo encuentra completamente desconocidos.Y aunque debemos hacer todo lo posible por ajustar las características de nuestra muestra a las de la población general, también debemos conocer las áreas en las que la muestra se queda corta. Porque son los datos de estas áreas los que representan el mayor riesgo para nuestro modelo. Si nuestra muestra es representativa sólo de una pequeña porción de nuestra población, entonces nuestro modelo funcionará mal en el tiempo.

Cómo ayuda la validación cruzada
La validación cruzada es una técnica que nos permite producir un conjunto de pruebas como métricas de puntuación usando el conjunto de entrenamiento. Es decir, nos permite simular los efectos de "salirse de la muestra" usando sólo nuestros datos de entrenamiento, para que podamos tener una idea de lo bien que nuestro modelo se generaliza.

Sin validación cruzada, el proceso de entrenamiento del modelo tradicional se ve así:

La división tradicional de la prueba de entrenamiento

Entrenamos en la parte azul hasta que sentimos que nuestra modelo está listo para enfrentarse a lo salvaje. Entonces lo puntuamos en el set de pruebas (la parte dorada). El inconveniente de la forma tradicional es que sólo tenemos una oportunidad para las cosas. 

En el momento en que probamos nuestro modelo en el set de prueba, hemos comprometido los datos de la prueba. Y si los resultados de nuestro test eran terribles, ¿entonces qué? ¿Estaríamos realmente de acuerdo en tirar todas esas horas de trabajo o sólo empezaríamos a optimizar nuestros resultados para el conjunto de pruebas?

Y si hubiera una manera de simular cómo nuestro modelo podría funcionar en el conjunto de pruebas sin usar realmente el conjunto de pruebas. ¡La hay! Y se llama validación cruzada.

Validación cruzada
Nos centraremos en un tipo específico de validación cruzada llamado K -folds (así que cuando digo simplemente validación cruzada, me refiero a validación cruzada k-submuestras). La validación cruzada de k-folds divide nuestros datos de entrenamiento en submuestras K (Submuestras = subsecciones). Luego entrenamos y probamos nuestro modelo K veces para que todos y cada una de las submuestras tengan la oportunidad de ser el pseudo conjunto de pruebas, que llamamos el conjunto de validación. Vamos a utilizar algunas imágenes para obtener una mejor comprensión de lo que está pasando:

Validación cruzada de 3 submuestras
Digamos que estamos desarrollando un modelo de regresión lineal predictiva y estamos usando R² como nuestra métrica de puntuación primaria. Tenemos algunos datos que hemos dividido en un conjunto de entrenamiento y un conjunto de pruebas. Nuestra principal preocupación es la exactitud de las predicciones como resultado de nuestro modelo (qué tan bien generaliza).  Por lo tanto, hemos decidido no mirar el conjunto de pruebas hasta el final (para poder dar a nuestro modelo una calificación intelectualmente honesta).

Pero a medida que ajustamos y refinamos nuestro modelo, todavía queremos tener una idea de cómo los cambios que estamos haciendo podrían afectar a su rendimiento fuera de la muestra. Así que hacemos una validación cruzada:

  • Decidimos hacer una validación cruzada triple, lo que significa que dividimos nuestros datos de entrenamiento en 3 submuestras de igual tamaño.
  • En la corrida 1 de nuestra validación cruzada, la submuestra 1 se mantiene (el rectángulo rosa etiquetado como Hold Out 1). Así que entrenamos con los datos de entrenamiento (rectángulo azul) que no están en la submuestra 1, y luego validamos en la submuestra 1. Esto significa que ajustamos nuestro modelo usando los datos de entrenamiento que no están en la submuestra 1, y luego calculamos y registramos qué tan bien predijimos las observaciones de la variable dependiente en an la submuestra1. Crucialmente, en la corrida 1 no utilizamos ninguno de los datos de la submuestra 1 durante el entrenamiento de nuestro modelo, por lo que el R² calculado usando la submuestra 1 es algo así como un R² fuera de la muestra.
  • En la corrida 2, la submuestra 2 se mantiene. Ahora la submuestra 1, que anteriormente era nuestro conjunto de validación, se ha convertido en parte de nuestro conjunto de entrenamiento. Ajustamos nuestro modelo usando los datos de la submuestra 1 y de la submuestra 3, y lo puntuamos usando la submuestra 2 (vía R²).
  • Después de que la corrida 3 concluye, ahora tenemos tres valores de R² (ya que cada submuestra tiene un turno para ser mantenido). El promedio de los tres R² nos da una estimación decente del R² de la muestra de nuestro modelo.

Lo más importante que hay que recordar sobre cómo funciona la validación cruzada es que en cada corrida, las métricas de puntuación que reporta se calculan sólo en la submuestra que se mantuvo.

Conclusión
Algunos consejos para emplear la validación cruzada:
  1. Es importante tener en cuenta que la puntuación de la validación cruzada (como R²) de nuestro modelo es, en el mejor de los casos, una estimación optimista de su rendimiento en el conjunto de pruebas. Al igual que el rendimiento en el conjunto de pruebas es, en el mejor de los casos, una estimación optimista de la verdadera capacidad del modelo para generalizar.
  2. Si un cambio que hicimos en el modelo aumenta la puntuación de entrenamiento (que se estima en la muestra) pero disminuye la puntuación de validación cruzada, entonces es una buena señal de que estamos sobreajustando el modelo.
  3. Tener muy pocas submuestras afecta el modelo - esto es porque demasiados datos de entrenamiento se mantienen en cada validación cruzada. Por ejemplo, con dos submuestras, la mitad de los datos de entrenamiento se retienen, lo que significa que el modelo sólo se ajusta a la mitad restante (lo que da como resultado una puntuación inferior a la que debería tener). Un modelo subajustado generaliza tan mal como uno con ajuste excesivo.
  4. Es una buena práctica mezclar los datos antes de hacer la partición de los datos de entrenamiento caso de que los datos estuvieran ordenados. Si estos estuvieran ordenados y de alguna manera nos olvidáramos de mezclarlos, entonces nuestra división de datos de prueba proporcionaría conjuntos de datos sesgados, en los que ninguno de ellos sería una buena representación de la población real.
  5. Una vez que terminemos de refinar el modelo mediante la validación cruzada, deberíamos reajustar el modelo en todo el conjunto de entrenamiento antes de probarlo en el conjunto de prueba.
Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!