lección 3
Sobreajuste: el modelo que se lo aprendió de memoria
Un modelo que acierta todo en entrenamiento y falla con lo nuevo no es listo: se ha aprendido las respuestas de memoria. La brecha entre los dos aciertos mide cuánto.
⏱ 55 min
Todos conocemos al estudiante que se aprende de memoria los exámenes de años anteriores. Recita de carrerilla las respuestas de los modelos que cayeron antes, y si en el examen repiten una pregunta clavada, la borda. Pero el día que el profesor cambia los números o plantea el problema de otra forma, se queda en blanco: no aprendió a resolver, aprendió a repetir. Ha confundido memorizar los casos concretos con entender la regla que hay detrás. Un modelo puede caer exactamente en la misma trampa, y cuando lo hace tiene un nombre: sobreajuste.
Ya lo intuías. Viste un árbol de decisión sin límite de profundidad acertar el 100% sobre los datos con los que aprendió, y supiste que ese número no era de fiar. Y al partir los datos en montones y comparar profundidades lo volviste a ver: una profundidad grande iba peor en validación que una profundidad media, aunque fuera mejor sobre el entrenamiento. Eso que ocurría tiene explicación, señal y remedio, y es lo que toca desarrollar a fondo ahora. Porque reconocer el sobreajuste y saber controlarlo es, en el día a día, la mitad del trabajo de construir un modelo que de verdad sirva.
## Qué es, con precisión
Cuando un modelo aprende de unos datos, dentro de esos datos hay dos cosas mezcladas. Está la regla general, el patrón de verdad que quieres capturar: por ejemplo, que los clientes que gastan poco y llevan tiempo sin comprar tienden a irse. Y está el ruido: las casualidades concretas de esos ejemplos en particular, los accidentes que no se repetirán, el hecho de que precisamente este cliente de la muestra se fue aunque gastaba mucho, por motivos que no tienen nada que ver con el patrón. Sobreajustar es aprender el ruido junto con la regla, o incluso en lugar de ella: el modelo se ajusta tanto a los ejemplos concretos que vio que acaba memorizando sus accidentes, y confunde una casualidad de esos datos con una ley general.
El modelo sobreajustado no es tonto: dentro de su mundo, el de los datos que vio, es un genio. Los conoce uno a uno. El problema aparece cuando llega un dato nuevo, uno cuyos accidentes concretos son distintos. El modelo intenta aplicar lo que memorizó, pero lo que memorizó eran casualidades que ya no se cumplen, así que falla. Es el estudiante del principio delante de una pregunta reformulada: tenía las respuestas de los exámenes viejos, no la capacidad de resolver uno nuevo.
Hay una palabra para lo que de verdad quieres de un modelo, y es generalizar: capturar la regla de forma que funcione con ejemplos que no ha visto nunca. Generalizar es lo contrario de memorizar. Un modelo que generaliza bien se ha quedado con el patrón general y ha ignorado el ruido particular; un modelo que memoriza se ha quedado con todo, patrón y ruido mezclados, y no sabe distinguir lo uno de lo otro. Toda la dificultad de construir un buen modelo se puede resumir en esta tensión: quieres que aprenda lo suficiente para captar la regla, pero no tanto que acabe tragándose las casualidades. Ni corto ni pasado. El sobreajuste es el extremo del pasado, y es, con diferencia, el más frecuente de los dos, porque los modelos modernos son muy capaces y, si los dejas, memorizan con facilidad.
Esta tensión no es un detalle técnico menor: es el problema central de todo el aprendizaje a partir de datos, y lleva décadas en el corazón de la disciplina. Las herramientas han cambiado muchísimo con los años, pero el enemigo ha sido siempre el mismo. Da igual lo potente que sea el método que uses: si le das demasiada libertad para ajustarse a tus datos, memorizará, y su número sobre lo que ya vio será maravilloso y mentiroso. Por eso el reflejo de medir sobre datos nuevos y vigilar la brecha no pasa de moda: es independiente de la herramienta, porque el riesgo que vigila es independiente de la herramienta.
## La señal inequívoca: la brecha
El sobreajuste no se adivina mirando el modelo por dentro: se detecta con una señal muy concreta y muy fiable. Mides el acierto del modelo sobre los datos de entrenamiento y sobre los datos de prueba, los nuevos, y comparas los dos números. Si el acierto en entrenamiento es muy alto y el de prueba es claramente más bajo, tienes sobreajuste. La distancia entre esos dos aciertos se llama la brecha, y no es solo una señal de sí o no: es una medida de cuánto te has sobreajustado. Una brecha pequeña significa que el modelo se comporta casi igual con lo conocido y con lo nuevo, que es lo que quieres. Una brecha grande significa que va mucho mejor con lo que memorizó que con lo que no, el síntoma clásico del que se aprendió las respuestas.
Esta es la razón de fondo por la que se aparta un montón de datos para examinar. No es burocracia: es precisamente para poder medir esta brecha. Sin un montón de datos nuevos, solo verías el acierto en entrenamiento, que casi siempre es alto, y nunca sabrías si tu modelo entiende o solo memoriza. Los dos números juntos cuentan la historia que uno solo esconde: un modelo con 100% en entrenamiento y 70% en prueba y otro con 85% en entrenamiento y 83% en prueba pueden parecer, por el primer número, que el primero es mejor. Es al revés. El segundo entiende; el primero recita.
Entre dos modelos, no te quedes con el que más acierta en entrenamiento: quédate con el que mejor va con datos nuevos y tiene la brecha más pequeña. Un acierto de entrenamiento altísimo, lejos de ser buena señal, suele ser la primera pista de que el modelo está memorizando. El número que de verdad importa es siempre el de los datos que no vio.
## El mando de la complejidad
Si el sobreajuste consiste en que el modelo memoriza, ¿de qué depende que memorice más o menos? De su complejidad: de cuánta libertad le das para ajustarse a los datos. Un modelo muy simple tiene poca libertad, así que solo puede capturar patrones gruesos y no llega a memorizar los accidentes. Un modelo muy complejo tiene tanta libertad que puede dibujar una frontera que pasa exactamente por cada ejemplo, memorizando hasta el último accidente. La complejidad es un mando que puedes girar, y cada tipo de modelo tiene el suyo.
En un árbol de decisión, ese mando es la profundidad. Un árbol de profundidad 1 hace una sola pregunta y parte el mundo en dos: muy simple, poca libertad. Un árbol sin límite de profundidad sigue haciendo preguntas hasta aislar cada ejemplo en su propia ramita, con lo que acierta el 100% en entrenamiento porque, literalmente, tiene una regla para cada caso que vio. Girar el mando de la profundidad, de poco a mucho, es pasar de un modelo demasiado simple a uno que memoriza, y en algún punto intermedio está el bueno.
Imagina ese árbol creciendo pregunta a pregunta para entender por qué la profundidad es exactamente el mando de la memorización. Con una sola pregunta, el árbol divide a todos los clientes en dos grupos y para cada grupo da una respuesta única: es tosco, pero captura lo más gordo del patrón. Con dos preguntas, afina un poco más. Con muchas preguntas encadenadas, puede llegar a crear un camino tan específico que solo lo recorre un cliente concreto de los que vio, y le asigna justo su desenlace. En ese punto el árbol ha dejado de aprender reglas y ha empezado a construir una ficha por cliente: ya no dice «los que gastan poco y llevan tiempo sin comprar tienden a irse», dice «el cliente que tenía exactamente estos valores se fue». Esa ficha por cliente es inútil para uno nuevo, porque ningún cliente nuevo tendrá exactamente esos valores. Memorizar es, literalmente, cambiar reglas generales por fichas individuales, y la profundidad es cuánto dejas que eso ocurra.
Cada tipo de modelo tiene su propio mando de complejidad, aunque se llamen de formas distintas. En los árboles es la profundidad, o el número mínimo de ejemplos que exiges en cada rama antes de seguir dividiendo. En otros modelos será cuántas variables dejas que use, o lo grandes que permites que sean sus coeficientes. Hay incluso una familia de técnicas, que verás más adelante, cuyo único trabajo es ponerle un presupuesto al modelo para que no pueda gastarse toda su libertad en memorizar: se le pone un freno a propósito, igual que a un comprador compulsivo le ayuda tener un límite en la tarjeta. Lo que comparten todos esos mandos es el papel: regulan cuánta libertad tiene el modelo para ajustarse, y por tanto cuánto riesgo tiene de memorizar.
Este gráfico es el mapa de todo el problema, y conviene leerlo despacio. La curva verde, el error sobre los datos de entrenamiento, baja sin parar: cuanto más complejo haces el modelo, mejor se ajusta a lo que ya vio, hasta llegar a cero cuando lo memoriza entero. Si solo miraras esta curva, concluirías que más complejo es siempre mejor, y te equivocarías. La curva roja, el error sobre datos nuevos, cuenta la verdad: baja al principio, porque un modelo con algo más de libertad captura mejor el patrón, pero a partir de cierto punto se da la vuelta y empieza a subir, porque la libertad extra ya no sirve para aprender la regla, solo para memorizar ruido que no ayuda con lo nuevo. El punto donde la curva roja toca su mínimo es la zona dulce: la complejidad justa.
## El otro extremo: infraajuste
El sobreajuste tiene un hermano menos famoso pero igual de real, que vive en el extremo opuesto del mando: el infraajuste. Ocurre cuando el modelo es demasiado simple para capturar siquiera la regla general. No es que memorice el ruido; es que ni llega al patrón. Es la parte izquierda del gráfico, donde las dos curvas están altas: el modelo falla con los datos de entrenamiento y con los nuevos por igual, porque no ha aprendido lo suficiente ni de unos ni de otros. El estudiante infraajustado no es el que memoriza, es el que ni se presentó a estudiar: no sabe los exámenes viejos ni resuelve los nuevos.
La señal del infraajuste es distinta a la del sobreajuste, y por eso se distinguen bien. En el sobreajuste la brecha es grande: acierto alto en entrenamiento y bajo en prueba. En el infraajuste no hay brecha, pero los dos aciertos son bajos: el modelo va mal en todo, con lo conocido y con lo nuevo. Entre los dos extremos (demasiado simple, demasiado complejo) está el objetivo: un modelo con la complejidad justa para capturar la regla sin tragarse el ruido. Encontrar ese punto es para lo que sirve el montón de validación: pruebas varias complejidades, miras cuál va mejor con datos nuevos, y te quedas con la de la zona dulce.
Los dos errores tienen un origen opuesto, y verlo ayuda a decidir qué hacer en cada caso. El modelo infraajustado falla por rígido: es tan simple que no puede doblarse para seguir la forma del patrón, así que se queda corto en todo, como quien intenta dibujar una curva con una regla recta. El modelo sobreajustado falla por lo contrario, por nervioso: es tan flexible que persigue cada subida y bajada de los datos, incluidas las que son puro ruido, así que su predicción cambia muchísimo si le hubieran tocado otros ejemplos. Uno es demasiado cabezón para aprender; el otro, demasiado impresionable. El buen modelo está en el medio: lo bastante flexible para seguir la forma real del patrón, lo bastante firme para no dejarse arrastrar por el ruido. Casi todo el arte de ajustar un modelo consiste en moverse por ese eje hasta dar con el punto de equilibrio.
Y aquí hay una consecuencia práctica importante: el remedio del infraajuste y el del sobreajuste son opuestos, así que diagnosticar bien cuál tienes no es un lujo académico, es lo que te dice hacia dónde girar el mando. Si tienes infraajuste (los dos aciertos bajos), la solución es dar MÁS complejidad al modelo: más profundidad, más variables, más libertad para captar el patrón. Si tienes sobreajuste (brecha grande), la solución es la contraria, MENOS complejidad, o más datos para que la regla se imponga sobre el ruido. Confundir los dos lleva a girar el mando en la dirección equivocada y empeorar justo lo que querías arreglar. Por eso siempre se miran los dos números, nunca uno solo: son los dos números juntos los que te dicen en qué extremo estás y, por tanto, hacia dónde moverte.
No confundas un acierto de entrenamiento perfecto con un buen modelo. Un 100% en entrenamiento, por sí solo, no dice nada bueno: cualquier modelo lo bastante complejo lo consigue memorizando. Lo que distingue un modelo que sirve de uno que no es la brecha. Mientras no mires el acierto sobre datos nuevos, no sabes si tienes un modelo que entiende o un loro que repite.
Conviene también entender de dónde sale el ruido que el modelo memoriza, porque ayuda a ver por qué siempre está ahí. Ningún conjunto de datos reales es una copia limpia de la regla que buscas: siempre tiene medidas imprecisas, casos atípicos, excepciones que no se repetirán, errores de registro y simple variabilidad del mundo. Dos clientes idénticos sobre el papel pueden comportarse distinto por mil razones que no están en tus columnas. Ese es el ruido: la parte de los datos que no obedece a ningún patrón capturable, sino al azar y a lo que no mediste. Un modelo con poca libertad lo ignora porque no puede ajustarse a tanto detalle; uno con demasiada libertad lo persigue como si fuera señal, y ahí es donde se pierde. Como el ruido es inevitable, el riesgo de memorizarlo también lo es, y por eso vigilar la brecha no es algo que hagas de vez en cuando: es parte de construir cualquier modelo, siempre.
Hay una última cosa que conviene desmontar, porque es un error de principiante muy común: pensar que el objetivo es que no haya ninguna brecha. No lo es. Una brecha pequeña es normal y sana: casi siempre un modelo irá un poquito mejor con lo que vio que con lo nuevo, y eso no es sobreajuste, es la vida. Lo que vigilas no es que la brecha sea cero, sino que no sea grande. Perseguir una brecha de cero suele llevarte a modelos tan simples que infraajustan, sacrificando acierto real por una pureza que no sirve de nada. El objetivo nunca es que los dos números sean idénticos; es que los dos sean lo más altos posible, aceptando que una pequeña distancia entre ellos es el precio normal de aprender de datos con ruido.
Ya sabes reconocer el sobreajuste por su brecha y controlarlo con el mando de la complejidad, apoyándote en el montón de validación. Pero todo esto da por hecho que te sobran datos para partir en tres montones generosos. ¿Qué haces cuando tienes pocos, y apartar un 40% dejaría al modelo casi sin nada que aprender y a la validación con tan pocos ejemplos que su nota sería pura suerte del reparto? Hay una técnica para eso, y es lo siguiente.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...
Regístrate para guardar tu progreso.