Ir a Inicio

Colaboración entre individuos

Programa 11. Teniendo en cuenta el sobreajuste

El sobreajuste es un problema que aparece cuando se busca la mejor curva de tendencia que represente a una serie de datos. Visualmente es detectable cuando entre un punto y el siguiente en los datos de entrenamiento, la curva es radicalmente distinta a una recta o curva sencilla que une a esos dos puntos, presentando un dibujado con profundos valles o enormes crestas como se ve en el gráfico:

Una curva así no sirve para hacer interpolación, ni mucho menos extrapolación porque simplemente no logra generalizar el comportamiento de los datos.

¿Cómo detectarlo? Hay una solución clásica y es la siguiente:

1. Del conjunto de datos de entrenamiento, tomar el 80% al azar.

2. Con ese 80% se generan varias curvas de tendencia.

3. Cada curva se evalúa con el 20% restante (datos de evaluación) y se mide su ajuste.

4. La curva que tenga el mejor ajuste a esos datos de evaluación es la que se escoge.



Con los algoritmos evolutivos lo anterior se cumple generando varias poblaciones y cada población tendrá su mejor individuo. Luego cada uno de esos individuos se le calcula su ajuste con los datos de validación.

Con las redes neuronales, es crear una nueva red con pesos al inicio al azar y hacer el proceso de BackPropagation. Luego a cada red se le calcula su ajuste con los datos de validación.

Como el programa genera un dataset de una ecuación al azar, entonces se pueden generar 150 datos para entrenar y 150 datos para validar.

Descargar el código fuente desarrollado en C#. Probado en Microsoft Visual Studio 2022 Community Edition

Ejemplo de ejecución:

Las primeras pruebas, muestran que la red neuronal logra un mejor ajuste al dataset considerando la validación