A menudo en ingeniería, mejorar en una dimensión viene asociado a empeorar en otra. Por ejemplo, no podemos mejorar la resistencia de un puente sin un aumento del coste del material. La dificultad está en encontrar el balance adecuado entre prestaciones y coste. En el caso de problemas de machine learning, el precio que pagamos por mejorar el sesgo es un aumento de la varianza, y viceversa, como abordaremos en este artículo. La buena ingeniería es encontrar el balance adecuado.

Entrenar un modelo de machine learning es abstraer los datos que tenemos para generar predicciones sobre datos que el modelo no ha visto previamente. Esto es encontrar la distribución que se oculta tras los datos y usarla para generar predicciones.  El error del modelo es la diferencia entre estos dos valores y entender cómo minimizarlo nos ayuda a construir modelos más robustos y no caer en los problemas clásicos de overfitting o underfitting.

Este error se descompone en sesgo, varianza y ruido, como se demuestra en la figura 1. El componente de error debido al ruido es irreducible, luego nuestros esfuerzos deben ir orientados a reducir el sesgo y la varianza.

Cuando se habla de error, distinguimos entre el error de entrenamiento, aquel presente cuando evaluamos el modelo sobre los datos de entrenamiento que ya ha visto, y error de test, obtenido evaluando el modelo frente a datos no vistos previamente. El objetivo es un modelo que tenga un buen desempeño frente a datos nuevos, capaz de generar predicciones basadas en una correcta generalización a partir de los datos de entrenamiento.

Para medir este desempeño en la práctica, se divide el conjunto de datos disponible entre datos destinados al entrenamiento y datos de test. De esta manera, podremos calcular el error de manera justa evaluando el modelo con un conjunto de datos que no ha visto durante el entrenamiento. 

El sesgo (o bias) es la diferencia entre el valor medio predicho por el modelo y el valor medio real. Si la diferencia entre estas dos magnitudes es elevada, estamos ante un modelo demasiado simple que no ha aprendido las relaciones relevantes entre las variables disponibles y la variable a predecir. A este fenómeno se le llama underfitting o subajuste y los errores de entrenamiento y test serán altos. Un ejemplo de modelo demasiado simple sería ajustar un comportamiento complejo y no lineal a una línea recta (Fig. 3. a).

 

Dado que el modelo se entrena con unos datos que representan un subconjunto de todos los datos posibles, es esperable que para subconjuntos distintos el modelo resultante sea distinto. La diferencia entre los modelos resultantes es lo que mide la varianza. Una varianza alta significa que el modelo es demasiado complejo y presta atención en exceso a las peculiaridades del subconjunto empleado frente a los patrones generales. Estos modelos sufren de overfitting o sobreajuste y cuando son expuestos a datos no vistos, no proporcionan predicciones correctas (error de test alto). Un modelo sobreajustado sería una curva que pasa por todos los datos de entrenamiento (Fig. 3. c). 

En definitiva, lo que buscamos es un modelo que haya aprendido de los datos que se le han proporcionado (sesgo y error de entrenamiento bajos) y que sea capaz de generalizar ante nuevos datos (varianza y error de test bajos). Es decir, un modelo que no esté en régimen de overfitting ni de underfitting.

Figura 3. Evolución del sesgo, varianza y mse (error cuadrático medio) frente a la complejidad del modelo.

 

Como regla general, si intentamos disminuir el sesgo aumentando la complejidad del modelo, aumentará la varianza. Si por el contrario, intentamos minimizar la varianza disminuyendo la complejidad, aumentará el sesgo. Este es el dilema que describe la dicotomía del sesgo y la varianza: el reto de encontrar el punto adecuado de compromiso entre la complejidad del modelo y su generalidad.

Imagen cabecera: Rawpixel

Aquí os dejo una pequeña infografía a modo de resumen: