🧮 Computational Mathematics

Inicio · Parte 14 — Matemática de Machine Learning

293 — Boosting y descenso funcional

ml-avanzado clase 13 de 20 4 horas demostración boosting

Boosting es descenso de gradiente en el espacio de funciones: cada modelo ajusta el residuo.

Fórmulas

F_m(x) = F_{m−1}(x) + ν·h_m(x)
h_m ajusta el residuo: y − F_{m−1}(x)
ν = learning rate, típicamente 0,01 a 0,3

Desarrollo

El boosting construye el modelo por acumulación secuencial: se empieza con una predicción constante y en cada ronda se entrena un aprendiz débil sobre lo que el conjunto actual todavía no explica. El resultado final es la suma de todos ellos.

La interpretación moderna, debida a Friedman, es que se trata de descenso de gradiente en el espacio de funciones. El residuo y − F(x) es, para la pérdida cuadrática, el gradiente negativo respecto de la predicción, y cada nuevo modelo da un paso en esa dirección. Esa lectura permite sustituir el residuo por el gradiente de cualquier pérdida diferenciable, que es lo que hace general al método.

La diferencia con el bagging es de objetivo. Bagging reduce varianza promediando modelos independientes; boosting reduce sesgo encadenando modelos dependientes. Por eso bagging usa árboles profundos y boosting usa árboles muy superficiales, a menudo de profundidad 3 o menos.

El learning rate ν controla cuánto se incorpora de cada modelo nuevo. Valores pequeños necesitan más rondas pero generalizan mejor, y la práctica establecida es usar ν bajo con muchas rondas y parada temprana. XGBoost, LightGBM y CatBoost son implementaciones de esta idea y siguen siendo lo mejor disponible en datos tabulares, por encima de las redes profundas.

Ejemplo trabajado

Cuarenta observaciones ajustadas por tocones sucesivos.

aprendiz débil: tocón de decisión (un solo corte)
learning rate: 0,3

MSE inicial (predicción constante): 2,46596

ronda    MSE
  1     1,53420
  5     0,35558
 10     0,12xxx
 20     0,05xxx

El error baja monótonamente ronda tras ronda.

Cada tocón por separado es apenas mejor que el azar;
la suma de veinte ajusta bien la función.

Con ν = 0,3, cada modelo aporta solo el 30 % de su
corrección: más rondas, mejor generalización.

Qué calcula el laboratorio

Boosting: cada modelo corrige el residuo del anterior (descenso funcional).

python classes/part-14-matematica-de-machine-learning/293-boosting-y-descenso-funcional/lab.py
compmath run 293

Salidas del laboratorio (8)

Muestra de la ejecución real

{
  "observaciones": 40,
  "aprendiz_debil": "tocón de decisión (1 corte)",
  "learning_rate": 0.3,
  "historial": [
    {
      "ronda": 1,
      "MSE": 1.53419714
    },
    {
      "ronda": 5,
      "MSE": 0.3555785
    },
    {
      "ronda": 10,
      "MSE": 0.11821224
    },
    {
      "ronda": 20,
      "MSE": 0.07355704
    }
  ],
  "MSE_inicial": 2.46596391,
  "el_error_baja_monotonamente": true
}

Errores comunes

Dónde se usa

XGBoost y LightGBM en competiciones y producción, modelos de riesgo, ranking de búsqueda y predicción sobre datos tabulares.

Idea rectora de la parte

El kernel trick evita construir el espacio de características explícitamente.

Error a evitar

No estandarizar antes de aplicar regularización o k-NN.

Conexión con IA

Estos algoritmos siguen siendo la línea base honesta contra la que se debe comparar cualquier modelo profundo.

Bibliografía de la clase

Archivos de la clase