Análisis de Errores en Machine Learning

El análisis de errores es una de las fases del proceso de machine learning más importantes. El análisis de errores nos va a permitir saber qué hacer para mejorar el rendimiento de un modelo de machine learning.

Para analizar errores, nos vamos a concentrar en los errores entrenamiento y los errores de generalización. En particular:

  • Nos aseguraremos que el modelo de machine learning sea capaz de aprender. Para ello procuraremos que el error de entrenamiento sea bajo.
  • Intentaremos que el modelo de aprendizaje automático sea capaz de generalizar. Para ello buscaremos que el error de generalización sea bajo.

Analizando los Errores de Entrenamiento

Si el error de entrenamiento es alto, el modelo de machine learning tiene problemas para aprender. Esto se denomina underfitting en inglés. En español se podría llamar infraajuste.

Causas del underfitting (infraajuste)

Modelo demasiado simple

En el gráfico a continuación podemos ver un ejemplo de underfitting. Los datos siguen una función polinómica de grado 2 (una parábola). Si intentamos usar un modelo de regresión lineal, veremos que el modelo no se ajusta bien a los datos. En otras palabras, el modelo es tan simple, que no es capaz de aprender la relación entre los datos de entrada y los de salida.

El alto error de entrenamiento indica que el modelo de machine learning es demasiado simple
El alto error de entrenamiento indica que el modelo de machine learning es demasiado simple. La regresión lineal no tiene capacidad para aprender los datos de una parábola.

Datos incompletos

Otro motivo para el underfitting (infraajuste) puede ser la falta de datos. Por ejemplo, si los resultados dependen de dos variables y = a + b. Si intentamos aprender sólo con uno de ellos (por ejemplo, predecir «y» sabiendo sólo «a»), habrá muchos casos en los que el rendimiento será malo.

Un ejemplo puede ser marketing. Si intentamos predecir quién comprará una crema «anti-arrugas» y olvidamos incluir la edad del cliente en la entrada del modelo.

Atributos relevantes (features) insuficientes

En ocasiones, tenemos todos los datos necesarios para un buen rendimiento del modelo de machine learning. Sin embargo, necesitamos transformar los datos para que el modelo pueda entender mejor la relación entre la entrada y la salida. En el caso de que tengamos pocos datos, la creación de atributos relevantes, es todavía más importante.

Por ejemplo, en un termómetro analógico, el dato sería cuánto se ha expandido tantos miligramos de mercurio. El atributo relevante sería cuántos grados Celsius marca el termómetro.

Al crear atributos relevantes estamos ayudando al modelo con nuestro conocimiento del problema.

Datos aleatorios, caóticos o con demasiado ruido

Una de las condiciones para que merezca la pena usar Machine Learning, es que debe haber un patrón entre los datos de entrada y los resultados. Así que no podemos usar machine learning para predecir datos aleatorios. Si lo intentamos, obtendremos un error de entrenamiento muy alto.

Si los datos son caóticos, también va a ser muy difícil obtener un error de entrenamiento bajo. Los sistemas caóticos son muy sensibles a las condiciones iniciales. Tanto es así que aunque el sistema sea determinista, pequeños cambios en la condiciones iniciales hacen que su comportamiento futuro sea tan diferente que sea impredecible. Por ejemplo, la bolsa de valores tiene un comportamiento caótico. A efectos prácticos de machine learning, podemos considerar los datos de sistemas caóticos como aleatorios.

Si los datos tienen mucho ruido las técnicas de machine learning van a tener problemas para aprender. Podemos intentar reducir el ruido, o aumentar la señal respecto al ruido. Si no lo conseguimos, el algoritmo de aprendizaje automático «pensará» que los datos son aleatorios.

Datos insuficientes

Otra de las condiciones para que merezca la pena usar Machine Learning, es que que la cantidad de datos debe ser suficiente. Si hay pocos datos, es difícil encontrar un patrón entre los datos de entrada y los resultados.

Buen error de entrenamiento

Cuando tenemos un buen error de entrenamiento, podemos decir que el modelo ha sido capaz de aprender la relación entre los datos de entrada y los resultados.

Para poder saber si el modelo ha aprendido correctamente tendremos que analizar el error de generalización.

Analizando los Errores de Generalización

En general, no merece la pena analizar los errores de generalización, hasta tener un buen error de entrenamiento

Si sólo tuviésemos en cuenta el error de entrenamiento no podríamos saber si el modelo ha aprendido «de memoria» o «entendiéndolo». Cuando digo «entendiéndolo» no quiero decir que el modelo «entienda» de la misma forma que nosotros los humanos entendemos. Quiero decir que en lugar de aprenderlo «de memoria», el modelo ha aprendido el patrón entre los datos de entrada y los resultados.

Decimos que el modelo de machine learning ha aprendido «de memoria» cuando:

  • el error de entrenamiento es bajo
  • el error de generalización es alto

El nombre técnico para «aprendizaje de memoria» es overfitting en inglés. En español podríamos llamarlo sobreajuste.

Causas del overfitting (sobreajuste)

Modelo demasiado complejo

Si el modelo es demasiado complejo, podrá aprender muchos de los datos de memoria. Para evitarlo, podemos usar un modelo más simple.

El gráfico muestra los mismos datos usando dos modelos diferentes: una regresión lineal y una regresión polinómica de grado 5. La regresión polinómica es un modelo muy complejo para el problema que tenemos. Por eso, el error de entrenamiento es bajo y el error de generalización es tan alto. Por otra parte, la regresión lineal tiene un error bajo tanto de aprendizaje como de generalización.

Al medir los errores de generalización podemos distinguir si el modelo ha aprendido los datos
Al medir los errores de generalización podemos distinguir si el modelo ha aprendido los datos «de memoria» o encontrando un patrón entre los datos de entrada y los resultados
Regularización

Otra opción a la hora de hacer un modelo más simple, es usar un modelo complejo y usar regularización. La regularización, en machine learning, es el proceso de limitar, a propósito, la capacidad del modelo. La regularización es una forma de conseguir hacer más simple un modelo complejo.

Demasiados pocos datos

Si la técnica de aprendizaje automático ha aprendido con pocos datos, es más fácil que haya aprendido qué resultado va con cada dato de entrada de memoria. Tener más datos, hace más difícil que se pase el filtro de tener un error de aprendizaje bajo.

Los datos nuevos proceden de otra distribución

También puede ocurrir, que estemos intentando medir la generalización con datos que venga de otra distribución.

Por ejemplo, supongamos que estamos haciendo un modelo para estimar la probabilidad de que un cliente cancele un contrato. Para estimar el error de generalización, podemos dividir los datos en los conjuntos de entrenamiento y testeo. Para tener una mejor idea del rendimiento real, deberemos asegurarnos de que están bien distribuidos.

Una mala distribución sería construir el modelo con datos de los clientes de Francia, Alemania, Bélgica y Holanda; y usar los clientes de España para estimar la generalización. Una mejor partición sería elegir un 80% de los clientes de todos los países, y estimar la generalización con el 20% restante.

Buen error de generalización

Cuando tenemos un buen error de generalización, podemos decir que el modelo de machine learning ha aprendido el patrón que hay entre los datos de entrada y los resultados. También podemos confiar en que el modelo va a funcionar bien con datos nuevos. Al menos, siempre que los datos nuevos vengan de una distribución similar.

Conjunto de validación

Hasta ahora hemos medido el error de entrenamiento y el error de generalización con los conjuntos de entrenamiento y de testeo. Hemos usado el error de generalización para saber si el modelo estaba aprendiendo de memoria o realmente encontrando el patrón entre los datos de entrada y los resultados. Analizando los datos de generalización, podemos decidir que es mejor usar un modelo más complejo, o más simple (ya sea regularizando un modelo complejo o usando uno más simple).

El problema es que estamos haciendo una pequeña «trampa». Si alguien nos pregunta, ¿cuál es el error de generalización del modelo de aprendizaje automático? … realmente no lo sabemos. No lo sabemos, porque hemos usado el conjunto de testeo para decidir con qué modelo nos quedamos. En otras palabras, nos hemos quedado con el modelo que menor error de generalización tenía en el conjunto de testeo. Es decir, si diéramos una estimación del error, la estimación sería muy optimista.

Nueva partición del conjunto de datos

Para solventar este problema, en vez de dividir los datos solo en los conjuntos de entrenamiento y testeo, vamos a dividirlos en tres conjuntos:

  • Entrenamiento: el modelo de machine learning aprenderá exclusivamente usando los datos de entrenamiento
  • Validación: usaremos los datos de validación para elegir qué modelo funciona mejor con los datos, para configurar los hiperparámetros (regularización), etc.
  • Testeo: usaremos el conjunto de testeo al final del todo, una vez que el modelo y la regularización estén elegidos. El conjunto de testeo nos permitirá estimar el error de generalización de cara a un uso real.

¿Cómo analizar errores en Machine Learning?

Aquí tienes una guía rápida que resume cómo analizar los errores en el proceso de Machine Learning y qué hacer en cada caso.

Asegúrate que el error de entrenamiento es bajo

Si el error de entrenamiento es alto, significa que el modelo no puede aprender la relación entre los datos de entrada y los resultados.

Si el error de entrenamiento es alto, mejora la calidad de los datos

Intenta conseguir más datos y añade atributos relevantes (features). Comprueba que los datos nos sean aleatorios.

Si el error de entrenamiento sigue siendo alto, usa un modelo de machine learning más complejo.

Puede ser que el patrón entre los datos de entrada y los resultados, sólo pueda aprenderse con un modelo más complejo

Comprueba que el modelo sea capaz de generalizar

Para que el modelo de machine learning sea útil, debe funcionar bien con datos nuevos. Usamos el conjunto de validación para estimar la capacidad de generalización.

Si el error de generalización es alto prueba con un modelo más simple

Un error de entrenamiento bajo y un error de generalización alto indica que el modelo ha aprendido los datos «de memoria». Usa un modelo más simple para forzar a la inteligencia artificial a «entender» lo que está haciendo.

Usa el conjunto de testeo para estimar el error del modelo de machine learning

Para estimar el error de generalización en los pasos 4 y 5, hemos usado el conjunto de validación. Reservamos el conjunto de testeo para estimar de una forma más realista cómo se comportará el modelo de machine learning aprendido con datos nuevo.

Recursos

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

1 comentario en «Análisis de Errores en Machine Learning»

Deja un comentario