lección 5
El 0,58 era de un solo reparto
El descubrimiento: la validación cruzada da 0,60, lejísimos del casi perfecto 0,9465 de entrenamiento. Ese acierto era memoria, no virtud.
⏱ 55 min
## Jueves, 10:05. La pregunta que lo cambia todo
Ayer te fuiste a casa con un modelo que parecía un éxito: 0,9465 de acierto en entrenamiento, 0,5752 en la prueba, y un número altísimo para el jugador de Chus. Hoy, antes de que mandes nada, Gorka se sienta contigo y te hace una pregunta que parece inocente y no lo es.
1Gorka 10:052Antes de celebrar nada: ese 0,58 es de UN solo reparto. Con otro reparto te saldría otro número.3Pásale una validación cruzada de 5 repartos y dame la media del R² y la de cada reparto por separado.45Tú 10:206...uf. La media del R² en validación cruzada es 0,60, no 0,58. El reparto único de ayer cayó un pelín por7debajo de la media. Los cinco repartos dan 0,569, 0,541, 0,632, 0,611 y 0,624.89Gorka 10:2310Lo esperable: un único reparto es ruidoso, te da un número que puede caer por encima o por debajo del real11según a quién le toque la prueba. Ayer te cayó por debajo, hoy promediamos cinco y sale 0,60. Pero ese baile12de 0,58 a 0,60 es lo de menos. Lo gordo es que los DOS están lejísimos del 0,9465 de entrenamiento.
El chat del jueves por la mañana. El 0,58 que viste ayer era de un solo reparto, y cayó un pelín por debajo de la media honesta (0,60): un único reparto es un estimador ruidoso, ni al alza ni a la baja de forma fiable. Lo que importa no es ese pequeño baile, sino el abismo de los dos con el 0,9465 de entrenamiento.
## Qué es la validación cruzada, y por qué un solo reparto engaña
Cuando partes los datos una sola vez en entrenamiento y prueba, el acierto que mides depende de a quién le tocó estar en la prueba. Si por azar cayeron jugadores fáciles de estimar, sale un número bonito; si cayeron casos raros, sale uno feo. Con un solo reparto no sabes en cuál de los dos estás. Es como juzgar a un estudiante por un único examen: puede haber tenido suerte con las preguntas, o mala suerte. Para saber lo que de verdad sabe, le pones varios exámenes y miras la media.
Eso es la validación cruzada (en inglés, cross-validation). Se parten los datos en cinco trozos (los folds, los «pliegues»). Se entrena el modelo cinco veces: cada vez con cuatro trozos, y se mide con el quinto, el que no vio. Así cada jugador acaba estando en la prueba exactamente una vez, y obtienes cinco medidas de acierto en vez de una. La media de las cinco es el rendimiento honesto del modelo, mucho más fiable que el de un reparto único, porque promedia sobre varios repartos y no depende de un sorteo afortunado.
Fíjate en una cosa importante para no sacar la conclusión equivocada: los cinco folds están bastante juntos (entre 0,541 y 0,632). El modelo no es inestable de un reparto a otro: con miles de jugadores y un bosque que promedia muchos árboles, la validación cruzada sale razonablemente estable. El problema no es que los folds bailen muchísimo. Y tampoco es ese pequeño baile entre el reparto único (0,5752) y la media honesta (0,5956): un único reparto es un estimador ruidoso que puede caer un poco por encima o un poco por debajo del valor real según a quién le toque la prueba, y aquí cayó justo por debajo. Eso es lo de menos. El problema de verdad, el que grita, es que los dos están lejísimos del 0,9465 de entrenamiento. Ese abismo es la historia de hoy.
## El abismo: 0,9465 contra 0,5956
Pon los tres números en fila: 0,9465 en entrenamiento, 0,5752 en el reparto único de ayer, 0,5956 de media en validación cruzada. El dato que grita no es la diferencia entre 0,5752 y 0,5956, que es pequeña (y encima el reparto único quedó por debajo de la media, no por encima: un solo split es ruidoso en cualquier dirección). Es la diferencia entre 0,9465 y 0,5956: un abismo de 0,35. El modelo acierta casi perfecto sobre los jugadores que vio y mucho peor sobre los que no vio. Eso tiene un nombre, y es el villano de la semana: sobreajuste. El modelo se ha aprendido de memoria los jugadores de entrenamiento —gracias, entre otras cosas, a esas features de ruido que te chirriaban ayer— en vez de aprender el patrón que hace valioso a un jugador.
No confundas los dos problemas que la validación cruzada destapa a la vez. Uno: un único reparto es ruidoso y te puede dar un número por encima o por debajo del real (aquí, el 0,5752 cayó un pelín por debajo del 0,5956 honesto, pero igual podría haber salido por encima). Dos, el grande: el acierto de entrenamiento (0,9465) está muy por encima del honesto, y eso es sobreajuste. El primero se arregla midiendo con validación cruzada en vez de con un reparto. El segundo se arregla cambiando el modelo, y eso es lo de la próxima lección.
Consejo de senior: nunca des un número de rendimiento con un solo reparto. Ni para ti, ni para un informe. Un train_test_split único vale para montar el código rápido, pero el número que enseñas y en el que basas una decisión sale de validación cruzada, con su media. Es una línea más de código (cross_val_score en vez de .score) y te ahorra presentar un acierto que no se repite. Gorka lo resume así: «un solo reparto es una anécdota; cinco son un dato».
## 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.