# machine-learning-clasico-con-python
Machine Learning con scikit-learn y XGBoost
Volver a la portada del cursoEl reto del bosón de Higgs y el origen de XGBoost
Sección 5 · Árboles, boosting con XGBoost y ajuste de hiperparámetros
Transcripción
En mayo de 2014, el experimento ATLAS del CERN hizo algo que nunca había hecho: publicó por primera vez una parte de los datos simulados que sus físicos usaban para optimizar la búsqueda del bosón de Higgs. Y no los publicó en una revista de física. Los subió a Kaggle, la plataforma de competencias de ciencia de datos, en forma de reto abierto a cualquiera, sin necesidad de saber física de partículas.
El contexto ayuda a entender la apuesta. El bosón de Higgs se había descubierto en 2012 en el Gran Colisionador de Hadrones, y el hallazgo había ganado el Premio Nobel de Física en 2013. Pero encontrar la señal del Higgs entre miles de millones de colisiones es, en el fondo, un problema de clasificación: cada colisión, cada evento, es señal o es ruido de fondo. Durante años, esa selección se diseñaba a mano, con cortes definidos por expertos. Luego llegaron métodos de clasificación multivariados. Los organizadores querían saber si la comunidad de aprendizaje automático podía hacerlo todavía mejor.
El reto se llamó Higgs Boson Machine Learning Challenge, y estuvo abierto del 12 de mayo al 15 de septiembre de 2014. Según el artículo que publicaron después los organizadores, atrajo un número de participantes sin precedentes y fue una de las competencias más populares de Kaggle. Al terminar, el conjunto completo, de ochocientos mil eventos simulados, quedó disponible para cualquiera en el portal de datos abiertos del CERN.
¿Quién ganó? Aquí conviene ser precisos, porque la historia se suele contar mal. El primer lugar fue para Gábor Melis, con un ensamble de redes neuronales profundas. Era un método costoso de calcular, pero superó al segundo lugar por un margen estadísticamente significativo, y los organizadores atribuyen buena parte de su éxito a una validación cruzada muy cuidadosa para no sobreajustar.
Pero hubo un premio especial, llamado Física de Altas Energías se encuentra con el Aprendizaje Automático. Fue para el equipo Crowwork, formado por Tianqi Chen y Tong He. Su puntaje fue un poco menor que el de los ganadores, pero los organizadores destacaron que su método de árboles de decisión con boosting era un buen equilibrio entre desempeño y simplicidad, y que podía mejorar las herramientas que ya usaban los físicos. Esa herramienta era XGBoost, la biblioteca que Tianqi Chen había empezado como proyecto de investigación en la Universidad de Washington.
Lo que pasó después explica por qué XGBoost está en este curso. En 2016, Chen y Carlos Guestrin publicaron el artículo XGBoost, un sistema escalable de boosting de árboles, en la conferencia KDD. Ahí reportan una cifra que vale la pena repetir con exactitud. De las veintinueve soluciones ganadoras de retos de Kaggle publicadas en el blog de la plataforma durante 2015, diecisiete usaron XGBoost. De esas, ocho usaron solo XGBoost para entrenar el modelo, y la mayoría de las demás lo combinaron con redes neuronales en ensambles. El segundo método más popular, las redes neuronales profundas, apareció en once soluciones. Y en la KDD Cup de 2015, todos los equipos del top diez usaron XGBoost.
¿Qué tenía de especial? El artículo lo explica en dos frentes. Por un lado, la parte estadística: XGBoost agrega un término de regularización a la función objetivo, que castiga la complejidad de cada árbol, y usa una aproximación de segundo orden con el gradiente y el hessiano de la pérdida para decidir los cortes. Por otro lado, la parte de ingeniería: maneja datos faltantes y dispersos de forma nativa, paraleliza la construcción de árboles y escala a miles de millones de ejemplos con muchos menos recursos que otros sistemas de su época.
Conéctalo con lo que estás haciendo en este módulo. En PyRitmo, un árbol de decisión solo es inestable y sobreajusta con facilidad. Random Forest reduce eso promediando muchos árboles independientes. El boosting hace otra cosa: construye árboles uno tras otro, y cada uno corrige los errores que dejó el anterior. XGBoost toma esa idea y la vuelve práctica para datos tabulares reales, con regularización, early stopping y parámetros como el learning rate y la profundidad máxima para controlar el sobreajuste. Por eso, cuando tienes una tabla con columnas numéricas y categóricas, como las canciones de PyRitmo, el boosting de árboles suele ser de lo primero que conviene probar.
Y la historia del reto deja una lección extra. El método ganador no fue XGBoost. Fue un ensamble de redes, más pesado y validado con muchísimo cuidado. XGBoost ganó otra cosa: la preferencia de la gente por una herramienta que daba resultados muy competitivos, rápido y con menos complejidad.
La idea con la que conviene quedarse es esta: en datos tabulares, el boosting de árboles es una línea de partida muy fuerte. Pero ningún algoritmo gana solo. Lo que separa un buen resultado de uno engañoso sigue siendo cómo validas.