24 · Intro a boosting: aprendizaje secuencial y AdaBoost
A diferencia del bagging, el boosting entrena modelos secuencialmente — cada nuevo aprendiz se enfoca en los ejemplos que los anteriores erraron, reduciendo sistemáticamente el sesgo.
El boosting entrena modelos SECUENCIALMENTE — cada nuevo aprendiz se enfoca en los ejemplos que los anteriores erraron.
Sin esto:
Sin boosting nunca llegarías a las máquinas de gradient boosting (XGBoost, LightGBM, CatBoost) que dominan el ML tabular hoy.
Bagging y boosting son ambos métodos ensemble, pero sus filosofías son opuestas:
| | Bagging | Boosting | |---|---|---| | Orden de entrenamiento | Paralelo (independiente) | Secuencial (dependiente) | | Calidad del aprendiz base | Ya buena (árboles profundos) | Débil (stumps, árboles poco profundos) | | Fuente de diversidad | Resampling bootstrap | Reponderación por errores | | Qué reduce | Varianza | Sesgo | | Riesgo | No puede sobreajustar con más árboles | PUEDE sobreajustar con datos ruidosos |
El algoritmo AdaBoost
AdaBoost (Adaptive Boosting, Freund & Schapire 1995) es el algoritmo de boosting original:
- Inicializa pesos de muestra: wᵢ = 1/n para todo i.
- Para t = 1, 2, ..., T: a. Entrena un aprendiz débil hₜ en el conjunto de entrenamiento PONDERADO. b. Calcula error ponderado: εₜ = Σ wᵢ · 𝟙[hₜ(xᵢ) ≠ yᵢ] / Σ wᵢ c. Calcula peso del aprendiz: αₜ = ½ · log((1 − εₜ) / εₜ) d. Actualiza pesos de muestra: wᵢ ← wᵢ · exp(−αₜ · yᵢ · hₜ(xᵢ)) e. Normaliza pesos para que Σ wᵢ = 1.
- Predicción final: sign(Σₜ αₜ · hₜ(x))
Interpretación
- Los ejemplos mal clasificados (yᵢ ≠ hₜ(xᵢ)) tienen su peso multiplicado por exp(αₜ) > 1 — MÁS PESADOS.
- Los ejemplos correctamente clasificados tienen su peso multiplicado por exp(−αₜ) < 1 — MÁS LIVIANOS.
- Cada stump posterior debe prestar más atención a los ejemplos difíciles.
- αₜ > 0 para cualquier aprendiz mejor que el azar (εₜ < 0.5); los aprendices casi perfectos obtienen α muy alto.
Python (in browser)
Un stump único de profundidad 1 apenas supera el azar en el dataset de lunas. La reponderación secuencial de AdaBoost convierte 50 de estos stumps débiles en un ensemble fuerte, cerrando la mayor parte de la brecha con la precisión del random forest. Esta conversión 'débil a fuerte' es la garantía teórica de AdaBoost (Schapire 1990).
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
La curva de aprendizaje de AdaBoost difiere de la del bagging: la precisión sube pero eventualmente puede caer en datos ruidosos. El boosting sigue ponderando más los ejemplos difíciles — y en datasets ruidosos, los ejemplos difíciles a menudo tienen etiquetas incorrectas, por lo que el algoritmo sobreajusta al ruido. Este es el riesgo fundamental que el bagging no comparte.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Cada stump de profundidad 1 solo puede dibujar una línea recta. AdaBoost une 50 de estos con pesos aprendidos αₜ, creando una frontera que parece casi suave pero en realidad es un mosaico de escalones. El enfoque secuencial en los ejemplos difíciles hace que la frontera siga la región de decisión verdadera más estrechamente que cualquier stump individual.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
La dualidad bagging/boosting es uno de los frameworks más útiles en el ML clásico. Siempre que un modelo sub- o sobreajuste, pregunta: ¿es el problema de varianza (→ bagging) o de sesgo (→ boosting)?
Bagging y boosting ambos construyen ensembles, pero difieren en...
- Bagging = paralelo + muestras bootstrap independientes → reduce varianza. Boosting = secuencial + repondera ejemplos mal clasificados → reduce sesgo.
- AdaBoost aumenta los pesos de muestra para los ejemplos mal clasificados (×exp(αₜ)) y los disminuye para los correctos (×exp(−αₜ)), forzando a cada aprendiz posterior a enfocarse en los casos difíciles.
- El boosting PUEDE sobreajustar en datos ruidosos — a diferencia del bagging, agregar más estimadores no siempre es seguro. Monitorea la precisión de validación y usa parada temprana.
- El peso del aprendiz de boosting αₜ = ½·log((1−εₜ)/εₜ) es positivo para cualquier aprendiz mejor que el azar, y grande para los aprendices casi perfectos — solo los stumps precisos obtienen votos altos.
- AdaBoost es la puerta conceptual a todas las máquinas modernas de gradient boosting (XGBoost, LightGBM, CatBoost) — que reencuadran el boosting como descenso de gradiente en el espacio de funciones.
Cada biblioteca de gradient boosting (XGBoost, LightGBM, CatBoost) desciende de este algoritmo. El propio AdaBoost rara vez se usa en producción hoy, pero es la puerta conceptual.
Si lo quitas: Perderías el paradigma de aprendizaje secuencial — y la intuición del gradient boosting sería opaca.