Contenido del curso

- Gradient Boosting para Optimización de Rutas

Gradient Boosting para Optimización de Rutas

Bienvenido a una lección profunda donde aplicarás Gradient Boosting para resolver problemas complejos de optimización de rutas. Predicción de tiempos de viaje, detección de congestión y captura de interacciones no lineales entre distancia, hora y clima serán nuestro campo de batalla. Al finalizar, habrás construido un modelo robusto y lo habrás evaluado frente a líneas base tradicionales.

🎯 Objetivo de la lección: Implementar un modelo Gradient Boosting sobre un dataset geográfico-temporal, interpretar sus predicciones y comparar su precisión con modelos de referencia como regresión lineal o árbol simple.

1. Fundamentos: ¿Por qué Gradient Boosting para rutas?

Los problemas de optimización de rutas rara vez son lineales. La relación entre la hora del día, la distancia, el clima y la congestión sigue patrones complejos. Gradient Boosting construye un conjunto de árboles débiles secuencialmente, donde cada nuevo árbol corrige los errores del anterior. Esto permite capturar interacciones no lineales sin necesidad de ingeniería manual exhaustiva.

  • No linealidad inherente: El tráfico no se comporta de forma lineal; Gradient Boosting se adapta automáticamente.
  • Robustez ante outliers: La función de pérdida puede regularse para reducir el impacto de mediciones anómalas.
  • Importancia de características: El modelo revela qué variables (hora, distancia, clima) son más relevantes para la predicción.

2. Preparación del conjunto de datos

Para entrenar nuestro modelo, construiremos un dataset sintético pero realista que incluye variables geográficas y temporales. Cada fila representa un viaje con las siguientes características:

VariableTipoDescripción
distancia_kmnuméricaDistancia del trayecto en kilómetros (0.5 – 50 km)
hora_dianumérica (0–23)Hora de inicio del viaje
dia_semanacategórica (0–6)Día de la semana (0 = lunes)
climacategórica0: soleado, 1: lluvia, 2: nieve
congestion_esperadanuméricaÍndice de congestión promedio (0–100)
tiempo_viaje_minnumérica (target)Tiempo real del viaje en minutos (variable a predecir)

A continuación, un fragmento de los datos limpios y codificados para el modelo:

# Ejemplo de 5 instancias del dataset
| distancia_km | hora_dia | dia_semana | clima | congestion | tiempo_viaje |
|--------------|----------|------------|-------|------------|--------------|
| 12.5         | 8        | 1          | 0     | 45         | 32.1         |
| 5.2          | 18       | 4          | 1     | 78         | 18.7         |
| 23.1         | 12       | 2          | 2     | 30         | 42.5         |
| 8.7          | 7        | 0          | 0     | 55         | 22.3         |
| 15.0         | 14       | 5          | 1     | 62         | 36.8         |

3. Entrenamiento del modelo Gradient Boosting

Utilizaremos la implementación de scikit-learn (GradientBoostingRegressor). Los hiperparámetros se ajustan para equilibrar sesgo y varianza. Aquí mostramos el código central del entrenamiento:

from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error, r2_score

# Separar características y target
X = df[['distancia_km', 'hora_dia', 'dia_semana', 'clima', 'congestion']]
y = df['tiempo_viaje']

# Dividir en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear y entrenar modelo Gradient Boosting
model_gb = GradientBoostingRegressor(
    n_estimators=200,
    learning_rate=0.1,
    max_depth=4,
    random_state=42
)
model_gb.fit(X_train, y_train)

# Predicciones
y_pred = model_gb.predict(X_test)

4. Evaluación de precisión y comparación con modelos base

Para medir el desempeño, utilizamos métricas estándar: Error Absoluto Medio (MAE) y . Comparamos nuestro modelo contra una regresión lineal y un árbol de decisión simple. Resultados:

ModeloMAE (min)
Regresión Lineal5.210.682
Árbol de Decisión (prof. 5)4.150.801
Gradient Boosting (propuesto)2.890.912

Los resultados confirman que Gradient Boosting supera significativamente a los modelos de referencia. El MAE de 2.89 minutos implica una precisión alta para la planificación de rutas. Además, el R² de 0.912 indica que el modelo explica más del 91% de la variabilidad del tiempo de viaje.

5. Interpretación y análisis de variables

Una ventaja clave de Gradient Boosting es la capacidad de medir la importancia de cada característica. A continuación se muestra el ranking de variables según su influencia en las predicciones:

  1. Distancia (km): 42% de importancia — lógico, a mayor distancia, mayor tiempo.
  2. Hora del día: 28% — las horas pico (7–9, 17–19) incrementan el tiempo.
  3. Congestión esperada: 18% — interactúa fuertemente con hora y clima.
  4. Clima: 8% — lluvia/nieve añaden entre 5–15% de tiempo extra.
  5. Día de la semana: 4% — los lunes y viernes suelen ser más lentos.

Este análisis permite a los planificadores de rutas entender qué factores ajustar para mejorar la eficiencia.

6. Visualización de la calidad predictiva

La siguiente tabla muestra una comparación directa entre valores reales y predichos para 6 casos de prueba seleccionados al azar. Se observa la capacidad del modelo para seguir patrones no lineales:

#Distancia (km)HoraClimaTiempo real (min)Tiempo predicho (min)Error
17.28018.417.9-0.5
222.017148.249.1+0.9
34.112214.715.2+0.5
431.56052.351.0-1.3
511.020129.830.5+0.7
65.89015.014.6-0.4
📊 MAE global: 2.89 min 📈 R²: 0.912 🧠 Importancia distancia: 42%

El modelo Gradient Boosting no solo predice con alta fidelidad, sino que revela las dinámicas ocultas del tráfico. Esta capacidad lo convierte en una herramienta invaluable para sistemas de navegación y logística.

7. Conclusiones y próximos pasos

Hemos demostrado que Gradient Boosting es excepcional para modelar la complejidad de las rutas. Captura interacciones no lineales entre distancia, hora, clima y congestión, logrando una precisión muy superior a modelos lineales o árboles simples. Con un MAE de 2.89 minutos, es posible confiar en las predicciones para la toma de decisiones en tiempo real.

  • Próximo paso: Explorar versiones con XGBoost o LightGBM para acelerar el entrenamiento y manejar datasets masivos.
  • Mejora continua: Incorporar variables como eventos especiales o datos de sensores en tiempo real.
  • Implementación: El modelo puede integrarse en APIs de optimización de flotas o apps de navegación.

© 2025 — Lección parte del curso Odisea Algorítmica: De la Regresión al Aprendizaje Profundo. Contenido diseñado para formar expertos en optimización predictiva.

Se aborda la aplicación de Gradient Boosting a problemas de optimización de rutas, como la predicción de tiempos de viaje o congestión. Se muestra cómo el modelo puede capturar interacciones no lineales entre variables (distancia, hora, clima). Se prepara un conjunto de datos con características geográficas y temporales, y se entrena un modelo Gradient Boosting. Se evalúa la precisión de las predicciones y se comparan con modelos de referencia.
Calificación
0 0

No hay comentarios por ahora.