Enfrenté a XGBoost contra la regresión logística en 358 coincidencias. Ganó el modelo aburrido.

Todos compartimos un nuevo problema de modelización: buscar el modelo que gana. Hoy en día eso es aumentar el gradiente, y el reflejo suele ser correcto: XGBoost se gana su reputación en una asombrosa variedad de problemas.

Entonces, cuando alineé cinco clasificadores en la misma tarea y el modelo lineal de una línea venció al campeón de Kaggle, el resultado fue del tipo que no sorprende a nadie que haya enviado modelos con datos reales, y casi todos siguen aprendiendo.

Cinco clasificadores, la misma tarea, las mismas características: predecir si un partido internacional termina con victoria local, empate o victoria visitante. Los contendientes corrieron desde una humilde regresión logística hasta un bosque aleatorio, KNN, una pequeña red neuronal y XGBoost.

Ganó el más sencillo. Más interesante que eso es por qué ganó, y el por qué es una de las ideas más útiles en el aprendizaje automático aplicado. Aquí está el experimento, el resultado y la teoría que lo revela.

la configuración

Esto surgió al construir un conjunto de once modelos de la Copa Mundial, donde necesitaba un clasificador de resultados y quería saber en qué familia confiar. Cada modelo vio las mismas tres características para 358 internacionales históricos: las Copas del Mundo de 2010-2022 más las Eurocopas de 2020 y 2024: la brecha de fuerza entre los equipos, su fuerza combinada y una bandera eliminatoria. El objetivo es el resultado triple.

Los califiqué con validación cruzada quíntuple y la métrica principal es la pérdida logarítmica, no la precisión. Esa elección funciona mucho en este artículo, por lo que vale la pena ser explícito al respecto desde el principio. La precisión sólo pregunta si la clase mejor clasificada era correcta. La pérdida logarítmica califica todo el vector de probabilidad y castiga duramente los errores confiados:

de sklearn.model_selection importar cross_val_predict de sklearn.metrics importar log_loss, precision_score proba = cross_val_predict(model, X, y, cv=5, método=”predict_proba”) print(log_loss(y, proba), precision_score(y, proba.argmax(1)))

Para un modelo de pronóstico cuyo trabajo completo es emitir probabilidades calibradas, la pérdida logarítmica es el cuadro de mando honesto y la precisión es una verificación de cordura. El número que debe guardar en su bolsillo es ln(3) ≈ 1,099: la pérdida logarítmica que obtendría al encogerse de hombros y predecir un 1/3 uniforme en las tres clases. Supera 1.099 y tu modelo sabrá algo. Si obtienes una puntuación superior, habría sido mejor que hubieras adivinado.

El resultado

Hay dos cosas en los resultados a continuación que deberían molestarle.

El primero es el podio: una simple regresión logística registró la mejor pérdida logarítmica, y XGBoost, el modelo que gana las competiciones de Kaggle, quedó en último lugar. El segundo es más extraño y fácil de pasar por alto. XGBoost no sólo perdió; obtuvo una puntuación superior a 1,099, la línea de base para adivinar el uniforme. Un modelo con una precisión aparentemente respetable del 48% era, según la métrica que realmente importa aquí, peor que una moneda con tres caras.

Pérdida logarítmica con validación cruzada por modelo. Imagen del autor
ModeloPérdida de registro de CV (cuanto menor, mejor)Precisión de CVRegresión logística1.00154%Bosque aleatorio1.01156%KNN1.01353%Red neuronal1.11552%XGBoost1.16948%

Ambos hechos tienen la misma causa raíz y es la idea más útil de todo este artículo.

Por qué ganó el modelo aburrido: sesgo y varianza

La forma más clara de pensar en esto es la descomposición sesgo-varianza. El error fuera de muestra esperado de un modelo se divide en tres partes:

Error = Sesgo² + Varianza + Ruido irreducible El sesgo es un error debido a suposiciones erróneas: un modelo demasiado rígido omite la estructura real de los datos. La varianza es un error de la sensibilidad a la muestra de entrenamiento particular: un modelo demasiado flexible se ajusta al ruido que no se repetirá la próxima vez. El ruido irreductible es la aleatoriedad genuina de lo que estás prediciendo. En el fútbol es enorme: un solo disparo desviado decide la eliminatoria. Ningún modelo toca este término, razón por la cual incluso el mejor clasificador aquí tiene una precisión cercana al 50%.

Todo el juego es el intercambio entre los dos primeros. Los modelos de alta capacidad, como los árboles potenciados o las redes neuronales, adquieren un sesgo bajo al ser lo suficientemente flexibles como para adaptarse a casi cualquier forma de los datos. La factura por esa flexibilidad es la variación, y sólo se paga cuando no se tienen datos suficientes para precisar el modelo.

Y esa es exactamente nuestra situación. Con 358 ejemplos divididos en un objetivo de tres vías, tienes aproximadamente 120 coincidencias por clase. Mientras tanto, un conjunto XGBoost tiene miles de parámetros efectivos repartidos en sus árboles. Simplemente no hay suficiente señal para disciplinarlos a todos, por lo que se aferran a peculiaridades que aparecen en un pliegue de validación cruzada y desaparecen en el siguiente. Eso es un sobreajuste de libro de texto, y explica la primera molestia: la validación cruzada está haciendo su trabajo al detectar los modelos flexibles con las manos en la masa sobre datos que no han visto.

Entonces, ¿por qué XGBoost cayó por debajo del azar en lugar de simplemente aterrizar en la mitad de la tabla? Aquí es donde vale la pena elegir la pérdida logarítmica. La penalización por un solo ejemplo es −ln(p_true_class), y es brutalmente convexa.

Prediga el resultado final con una cobertura de 0,5 y obtendrá −ln(0,5) = 0,69. Si lo predices con un 0,1 confiado pero equivocado, comerás −ln(0,1) = 2,30, más de tres veces el dolor por estar seguro y equivocado. Un modelo demasiado flexible sobre datos pequeños no sólo comete errores; los hace con convicción, emitiendo probabilidades precisas del 60-70% y acertando suficientes veces como para que la penalización convexa arrastre su promedio por debajo de la tímida línea de base de 1/3-1/3-1/3.

El nombre correcto para esta falla es mala calibración de confianza, y es la firma de demasiado modelo para muy pocos datos. La ventaja de precisión de XGBoost en alguna decisión audaz ocasional no pudo compensar lo que costó su exceso de confianza en otros lugares.

Por qué la regresión logística en particular

Saber que los modelos flexibles tendrían dificultades es sólo la mitad de la historia. El modelo lineal no sólo evitó la trampa: fue, para este problema, la herramienta correcta. Dos hechos estructurales lo confirman:

La verdadera relación es casi lineal en las probabilidades logarítmicas. La mayor parte de lo que predice un resultado es “qué tan grande es la brecha de fuerza”, y la probabilidad de ganar aumenta suave y monótonamente con ello, exactamente la forma funcional que asume la regresión logística. Cuando el sesgo inductivo de un modelo coincide con el proceso de generación de datos, se necesitan muchos menos datos para estimarlo bien. Los árboles, por el contrario, tienen que descubrir esa curva suave a partir de divisiones constantes por partes, gastando datos valiosos para aproximar algo que la regresión logística obtiene de forma gratuita. Tres características, interacciones débiles. Los árboles y las redes se ganan la vida buscando interacciones entre muchas características. Con solo tres características y poca interacción entre ellas, esa maquinaria no tiene nada que encontrar, por lo que agrega variación sin agregar ninguna señal que lo demuestre.

Hay una regla general de la estadística clásica que vale la pena tener en cuenta: se necesitan del orden de 10 a 20 observaciones por parámetro para obtener estimaciones estables.

La regresión logística estima un puñado de coeficientes frente a 358 partidos, cómodamente dentro de ese presupuesto. Un conjunto potenciado tiene órdenes de magnitud superiores a él. La falta de coincidencia se produjo antes de que se entrenara un solo modelo.

Cómo leer el marcador honestamente

Antes de sacar conclusiones de esa tabla, dos advertencias al leerla: porque el mismo pequeño conjunto de datos que hundió XGBoost también hace que los números sean más ruidosos de lo que parecen.

La primera es la propia varianza de la métrica. Con 358 partidos, cada uno de los cinco pliegues solo ofrece ~72 juegos, por lo que la puntuación CV se tambalea. Las brechas entre la regresión logística, el bosque aleatorio y KNN (1,001 frente a 1,011 frente a 1,013) están dentro de esa oscilación. Están efectivamente atados.

Lo que es robusto y repetible son los dos extremos de la tabla: el modelo lineal simple está confiablemente en la parte superior y los modelos más flexibles están confiablemente en la parte inferior. Lea el podio, no la foto final.

La segunda es la columna de precisión, que no debes sobreleer por completo. Los resultados de fútbol a tres bandas son intrínsecamente difíciles porque el empate es un tercer resultado real sin un predictor sólido: históricamente, alrededor del 27% de estos partidos empatan, y es casi imposible predecir los empates por adelantado basándose únicamente en la fuerza del equipo.

Un modelo que conociera la verdadera probabilidad de ganar de cada equipo aún no podría llevar la precisión mucho más allá de los 50, porque el término de ruido irreducible es muy grande. Visto de esa manera, el 54% de la regresión logística no es mediocre: está cerca del límite práctico para este conjunto de características. El verdadero diferenciador entre los modelos nunca fue la frecuencia con la que elegían al ganador; fue la calibración, que es precisamente lo que ocultan las medidas de pérdida de registros y la precisión. Entonces: lidere con la regla de puntuación adecuada; mantenga la precisión como un control visceral.

¿Se podrían rescatar los árboles? Con disciplina, sí.

Nada de esto es una acusación contra XGBoost. Es una declaración sobre la configuración relativa al tamaño de los datos, y el mismo algoritmo, manejado de manera diferente, podría cerrar la mayor parte de la brecha. La palanca es la regularización: intercambiar una pequeña variación por un poco de sesgo.

Para XGBoost: árboles menos profundos (máx_profundidad = 2–3), min_child_weight, subsample y colsample_bytree más fuertes por debajo de 1, una penalización L2 (lambda), una tasa de aprendizaje baja con parada temprana en un pliegue de validación y menos rondas. Para la regresión logística: la penalización L2 (C) ya está realizando una regularización silenciosa en segundo plano, parte de por qué es tan estable desde el primer momento.

Si se ajusta lo suficiente, un modelo regularizado de aumento de gradiente probablemente coincidiría con la regresión logística en este caso. Pero observe que “hacer coincidir la frase después de un cuidadoso ajuste” es en sí misma la lección, no un contraejemplo.

(La advertencia en la otra dirección: los modelos muy grandes y sobreparametrizados pueden volver a entrar en un régimen de “doble descenso” donde el error vuelve a caer más allá del umbral de interpolación, pero eso persiste en escalas de datos y parámetros mucho más allá de 358 coincidencias).

Entonces, ¿cómo se puede saber, empíricamente, cuándo los árboles finalmente valen la pena? Trazar una curva de aprendizaje: pérdida logarítmica sostenida frente al tamaño del conjunto de entrenamiento, para cada modelo.

Dos patrones son diagnósticos. Un modelo de alto sesgo como el de la regresión logística se estabiliza temprano; más datos apenas ayudan, porque domina el piso de sesgo. Un modelo de alta varianza como XGBoost comienza peor, pero sigue mejorando a medida que crecen los datos, porque los ejemplos adicionales son exactamente los que controlan su varianza. El punto donde se cruzan las dos curvas es el presupuesto de datos en el que el modelo flexible empieza a ganar.

En 358 partidos internacionales estamos claramente a la izquierda de ese cruce. Alimente el mismo XGBoost con decenas de miles de partidos de clubes con características más ricas (xG, días de descanso, alineaciones) y muy probablemente lo superará. Mismo algoritmo, diferente régimen de datos, conclusión opuesta. Esa contingencia es el punto.

El resultado final: elige el modelo con tus datos

La complejidad del modelo debe coincidir con los datos, no con las exageraciones. En problemas grandes, complicados y ricos en funciones, el aumento de gradiente y las redes profundas dominan habitualmente; por eso son famosos y por eso el reflejo de alcanzarlos suele ser bueno.

Pero en un problema pequeño, limpio y de baja dimensión como este, el reflejo es erróneo y la disciplina es comenzar de manera simple, establecer una línea de base sólida, medir con una regla de puntuación adecuada y agregar complejidad sólo cuando los datos disponibles dicen que se ganó su lugar. La regresión logística no es el premio de consolación aquí. Teniendo en cuenta los datos, es la respuesta correcta.

Esta disciplina (comience de manera simple, valide honestamente con pérdida de registros y calibración, escale la complejidad deliberadamente) recorre los capítulos de modelado de Soccer Analytics with Machine Learning (O’Reilly, 2026, ¡recién salido de la prensa!): regresión logística y clasificación en el Capítulo 5, los métodos basados ​​en árboles (incluido XGBoost) y exactamente cuándo su potencia de fuego adicional vale la pena en el Capítulo 6.

Entonces, antes de elegir el modelo más grande para su próximo proyecto, haga dos preguntas: ¿cuántos datos tiene realmente y cómo sabrá si la complejidad ayudó? A veces, la línea de mejor ajuste es también la línea de meta.