Saltar al contenido

lección 4

El primer modelo (y la euforia)

Entrenar un bosque potente con todas las features: acierto espectacular y un valor altísimo para Olarra. Gorka te dice que esperes a mañana.

⏱ 50 min

## Miércoles, 10:00. El modelo potente por defecto

Ya sabes construir features justas. Ahora toca el momento que estabas esperando: entrenar el modelo. Vas a usar un bosque aleatorio de regresión (RandomForestRegressor), que es el modelo potente por defecto para datos en tabla como estos. Un bosque aleatorio es un conjunto de muchos árboles de decisión: cada árbol aprende reglas del tipo «si goles_90 > 0,8 y edad < 24, el valor sube», y el bosque promedia las predicciones de todos. Es flexible, capta relaciones no lineales, y funciona bien sin apenas ajustes. Por eso es el primero que casi todo el mundo prueba.

El flujo es el que ya conoces de la regresión: separas las features (X) del target (y), partes los datos en entrenamiento y prueba con train_test_split, entrenas el modelo con la parte de entrenamiento y mides cómo de bien lo hace. Como medida vas a usar el R² (R cuadrado, el coeficiente de determinación): va de 0 a 1 y dice qué fracción de la variación del valor explica el modelo. Un R² de 1 sería predicción perfecta; un R² de 0, no explicar nada más que la media. Es la métrica habitual de regresión y la que Gorka te va a pedir.

Y vas a hacer lo natural, lo que haría casi cualquiera el primer día: meter todas las features que tienes. Todas las stats por 90, la edad, los minutos, la posición, el valor actual… y también el dorsal, el día de la semana del último partido, el id de ficha interno y esas métricas raras del proveedor. «Cuantas más features, más información, mejor», piensas. Y entrenas un bosque sin ponerle límite de profundidad, para que aprenda todo lo que pueda. Es el camino natural. Guárdate esa frase, porque el camino natural es justo el que te va a meter en el problema.

El reparto único del miércoles. Se entrena con el 80% y se mide con el 20% que el modelo no vio. Es correcto y es lo que haría cualquiera. El problema, que verás mañana, no es el reparto en sí: es fiarte de UN solo reparto.

## El resultado: euforia

Entrenas y mides. El modelo da un R² de 0,9465 sobre los datos de entrenamiento: casi perfecto. Y sobre la parte de prueba, los jugadores que no vio al entrenar, da 0,5752: muy bueno para estimar algo tan ruidoso como el valor futuro de un jugador. Pasas la fila de Dani Olarra por el modelo y sale un valor altísimo para la temporada que viene, justo lo que Chus esperaba oír: su crack de 20 años va a multiplicar su precio. Todo encaja. Estás a punto de mandar el número.

1Tú 12:35
2Gorka!! El modelo da 0,9465 de R² en entrenamiento y 0,58 en la prueba 🎉
3Y a Olarra le sale un valor altísimo para el año que viene, justo lo que Chus esperaba
4Chus, creo que ya tengo tu número 🙌
5
6Chus 12:37
7BIEN!!! lo sabía, es un crack. ¿Me lo pasas hoy que preparo la reunión? 🙏
8
9Gorka 12:39
10Enhorabuena por el primer modelo entrenado. Pero no mandes nada todavía.
11Mañana a primera hora quiero que miremos ese 0,58 juntos. Y ese 0,9465 me da bastante que pensar.
12Tengo una pregunta para ti.

El chat del miércoles. La euforia es real y es comprensible: el modelo parece bueno. Pero fíjate en qué le llama la atención a Gorka: no el 0,58 de la prueba, sino el 0,9465 de entrenamiento. Un acierto casi perfecto sobre los datos que vio no le parece una buena noticia. Le parece una señal de alarma.

¿Por qué a Gorka le preocupa un acierto casi perfecto? Porque conoce el techo del problema. Estimar el valor futuro de un jugador es predecir algo que depende de cosas impredecibles: lesiones, suerte, cómo se mueva el mercado, si cambia de entrenador. Hay una parte del valor futuro que no se puede predecir con las estadísticas de este año, por bueno que sea el modelo. Eso significa que ningún modelo honesto puede acercarse a un acierto perfecto. Un 0,9465 sobre los datos de entrenamiento no es que el modelo sea genial: es que ha hecho algo que no debería poder hacer, y la única forma de lograrlo es memorizando.

Un acierto casi perfecto sobre los datos de entrenamiento casi nunca es una buena noticia en un problema del mundo real. El mundo real tiene ruido irreducible —cosas que de verdad no se pueden predecir—, así que un modelo que lo «explica» todo no ha entendido el patrón: se ha aprendido los datos de memoria, ruido incluido. Cuando veas un R² de entrenamiento pegado a 1, no lo celebres: sospecha. Es la lección que Gorka lleva grabada desde que recomendó un fichaje con un 0,94 que no se sostuvo.

## La pista que dejas pasar

Antes de cerrar el día, sacas la importancia de las features: cuánto usa el modelo cada columna para decidir. Arriba, como esperabas, aparecen el valor actual, los minutos, los goles por 90, las asistencias. Tiene sentido futbolístico. Pero si miras más abajo, notas algo raro sin darle importancia todavía: el id de ficha interno puntúa. El dorsal puntúa. El día de la semana del último partido puntúa. Columnas que no tienen ningún sentido en el valor de un jugador están aportando al modelo. «Las usará por algo», piensas, y lo dejas pasar. Mañana esa pista va a resultar ser la clave de todo.

Consejo de senior: cuando una feature que no tiene ningún sentido en tu problema aparece puntuando en la importancia, no la ignores con un «la usará por algo». Pregúntate por qué. Casi siempre la respuesta es incómoda: el modelo la está usando no porque signifique algo, sino porque le sirve para identificar y memorizar casos concretos. Una columna sin sentido que pesa es humo. Mañana vas a buscar el fuego.

Regístrate para guardar tu progreso.