En Machine Learning, la Generalización es la capacidad de obtener buenos resultados con datos nuevos. En este artículo vamos a hablar de por qué es tan importante la generalización y cómo medirla.

Intuición gráfica de la Generalización en Machine Learning

Para explicar el concepto de generalización, vamos a intentar usar un ejemplo gráfico y usar el error cuadrático medio. Una vez que tengamos la intuición gráfica, será más fácil describir matemáticamente cómo podemos medir la generalización.

He generado unos datos siguiendo una línea y les he añadido un poco de ruido. A continuación, he usado 2 modelos de regresión:

  • El de la izquierda es un modelo de regresión lineal. Tiene un Error Cuadrático Medio de 0.0491
  • El de la derecha es un modelo de regresión polinómica de grado 5. Tiene un Error Cuadrático Medio de 0.0387
Ejemplo de Regresión Lineal y Polinómica
Regresión Lineal y Polinómica: la regresión polinómica tiene un menor error que la regresión lineal

Así que como el error de la regresión polinómica es menor que el error de la regresión lineal … deberíamos usar la regresión polinómica, ¿no? Intuitivamente esto no parece lo más correcto.

Para entenderlo intuitivamente, vamos a ver cómo se comportan la regresión lineal y la regresión polinómica en un intervalo extendido. Es decir, vamos a visualizar las predicciones de estos dos modelos cuando tenemos datos nuevos.

Como veis, la regresión polinómica ¡es un desastre! Toma valores muy extremos para valores nuevos.

Generalización de las Regresiones Lineal y Polinómica
La regresión lineal generaliza mucho mejor que la regresión polinómica de grado 5

Espero que veais claro que construir un modelo de machine learning que se ajuste muy bien a los datos, no siempre garantiza que el modelo sea útil. Por eso buscamos un modelo que generalice bien. Con generalizar nos referimos a que el modelo funcione bien, no sólo con los datos con los que ha aprendido, sino también con los datos que obtendremos en el futuro.

¿Cómo podemos medir la Generalización de un modelo?

Hemos visto que si hacemos gráficos de los datos, podemos entender cuándo un modelo no está generalizando correctamente. Esto es fácil porque, en el ejemplo anterior, sólo teníamos una dimensión. Tenemos los siguientes casos:

  • Cuando tenemos una dimensión (x), podemos hacer un gráfico en 2 dimensiones y ver cómo se comporta el resultado (y)
  • Cuando tenemos 2 dimensiones, podemos hacer un gráfico en 3 dimensiones.
  • Pero cuando tenemos 3 o más dimensiones … ya no podemos visualizar cómo se comporta el modelo.

En machine learning, es muy común tener más de 3 dimensiones.  Por ejemplo, si queremos predecir si un cliente de un banco aceptará una oferta de un plazo fijo en una llamada promocional, podemos considerar: la edad (1), qué trabajo tiene (2), el balance de su cuenta (3), qué otros productos tiene ya (4), la ciudad (5), cuánto tiempo lleva siendo cliente del banco (6), estado civil (7), etc. Como veis, es muy muy fácil tener más 2 dimensiones.

Necesitamos una forma de medir la generalización que no necesite hacer gráficos. Hay varias formas de hacerlo. Vamos a explicar las dos técnicas más populares para medir la generalización:

  • Con conjuntos de entrenamiento y de testeo.
  • Con validación cruzada

Conjuntos de Entrenamiento y Testeo

Una forma de medir la generalización es la de dividir los datos que tengamos en dos conjuntos: el conjunto de entrenamiento y el conjunto de testeo.  En el gráfico, vemos los datos del conjunto de entrenamiento en azul, y en rosa los de testeo.

Separación de datos en los conjuntos de Entrenamiento y Testeo
Separación de datos en los conjuntos de Entrenamiento y Testeo

Conjunto de Entrenamiento

El conjunto de entrenamiento contiene los datos que el modelo de machine learning usará para aprender. El conjunto de entrenamiento es mayor que el conjunto de testeo, en el sentido de que contiene más datos.

Conjunto de Testeo

El conjunto de testeo no se usa en el aprendizaje. Usaremos el conjunto de testeo para saber cómo se comporta el modelo con datos nuevos.

No son nuevos realmente, porque ya teníamos estos datos. Pero son «nuevos» para el modelo porque nos hemos asegurado de ocultárselos durante el aprendizaje.

Debemos evitar que el modelo use estos datos en el aprendizaje. Cuando esto sucede accidentalmente, recibe el nombre de «fuga de datos». El efecto que tiene es que podemos pensar que nuestro modelo es mejor de lo que en realidad es.

Medición de la capacidad de generalización con conjuntos de entrenamiento y testeo

Para medir la generalización, medimos el error del modelo en el conjunto de testeo. Es decir, usamos los datos de entrenamiento para que el modelo aprenda y luego le pedimos al modelo que nos de los resultados correspondientes a los datos de testeo. Como sabemos los resultados que esperamos de los datos de testeo, podemos medir el error de predicción. Para medir el error podemos usar el error cuadrático medio (MSE por sus siglas en inglés), u otra medida apropiada al problema.

Medimos la Generalización con el Error en el Conjunto de Testeo
Medimos la Generalización con el Error en el Conjunto de Testeo

Así podemos ver que en el caso de la regresión lineal, tanto el error de entrenamiento (0.0514) como el de testeo (0.0444), son pequeños y similares. Sin embargo, en el caso de la regresión polinómica de grado 5, el error de testeo (148.2934) es muy grande en comparación al error de entrenamiento (0.0367).

Podemos estimar el error de generalización midiendo el error en el conjunto de testeo.

Midiendo el error en el conjunto de testeo, podemos estimar cuál es el rendimiento del modelo en datos nuevos. Esto nos permite experimentar con varios modelos y elegir el que mejor generaliza. Para esto ya veremos que es mejor usar 3 conjuntos de datos: entrenamiento, validación y testeo.  Hablaremos del conjunto de validación en otro artículo.

Validación cruzada

La validación cruzada estima el error de generalización de forma más robusta. Cuando usamos los conjuntos de entrenamiento y de testeo, hay una parte aleatoria que puede influir los resultados. Dependiendo cómo dividamos los datos en estos dos conjuntos tendremos una estimación diferente del error de generalización. En unos casos pensaremos que el modelo generaliza mejor y en otros peor.

Para combatir este problema, la validación cruzada propone crear los conjuntos de entrenamiento y testeo varias veces, cada vez con una separación diferente. De esta forma obtendremos estimaciones diferentes. La media aritmética de todos los errores de testeo se considera la estimación del error de generalización.

Es una estimación más robusta. El inconveniente es que es computacionalmente más costoso. La solución de compromiso es usar validación cruzada pero limitar el número de veces que la hacemos. Típicamente es 5 veces.

Recursos

  • [vídeo] introductorio a la Inteligencia Artificial y al Aprendizaje Automático (en inglés)

Suscríbete a IArtificial.net

Generalización en Machine Learning

2
Deja un comentario

avatar
1 Hilos de comentario
1 Respuestas de hilo
1 Seguidores
 
Comentario más reaccionado
El hilo de comentarios más caliente
2 Autores de comentarios
Jose Martinez Herassant Autores de comentarios recientes
  Suscribir  
el más nuevo el más antiguo el más votado
Notificar de
sant
Invitado
sant

Hola Jose, Me surge una duda con respecto al apartado de validación cruzada. Hasta donde he leído yo (por ejemplo en el libro de http://www-bcf.usc.edu/~gareth/ISL/ An Introduction to Statistical Learning de Robert Tibshirani) y estoy viendo en un curso/bootcamp que estoy haciendo, la primera división de los datos se suelen denominar entrenamiento y test, (se suele usar train_test_split en sklearn). Luego el conjunto de entrenamiento se puede dividir a su vez en entrenamiento y validación, es decir, se divide no sobre el total de las muestras, sino sobre las muestras del «conjunto entrenamiento» resultante de aplicar train_test_split. Un proceso más… Leer más »