- 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.
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:
| Variable | Tipo | Descripción |
|---|---|---|
distancia_km | numérica | Distancia del trayecto en kilómetros (0.5 – 50 km) |
hora_dia | numérica (0–23) | Hora de inicio del viaje |
dia_semana | categórica (0–6) | Día de la semana (0 = lunes) |
clima | categórica | 0: soleado, 1: lluvia, 2: nieve |
congestion_esperada | numérica | Índice de congestión promedio (0–100) |
tiempo_viaje_min | numé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 R². Comparamos nuestro modelo contra una regresión lineal y un árbol de decisión simple. Resultados:
| Modelo | MAE (min) | R² |
|---|---|---|
| Regresión Lineal | 5.21 | 0.682 |
| Árbol de Decisión (prof. 5) | 4.15 | 0.801 |
| Gradient Boosting (propuesto) | 2.89 | 0.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:
- Distancia (km): 42% de importancia — lógico, a mayor distancia, mayor tiempo.
- Hora del día: 28% — las horas pico (7–9, 17–19) incrementan el tiempo.
- Congestión esperada: 18% — interactúa fuertemente con hora y clima.
- Clima: 8% — lluvia/nieve añaden entre 5–15% de tiempo extra.
- 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) | Hora | Clima | Tiempo real (min) | Tiempo predicho (min) | Error |
|---|---|---|---|---|---|---|
| 1 | 7.2 | 8 | 0 | 18.4 | 17.9 | -0.5 |
| 2 | 22.0 | 17 | 1 | 48.2 | 49.1 | +0.9 |
| 3 | 4.1 | 12 | 2 | 14.7 | 15.2 | +0.5 |
| 4 | 31.5 | 6 | 0 | 52.3 | 51.0 | -1.3 |
| 5 | 11.0 | 20 | 1 | 29.8 | 30.5 | +0.7 |
| 6 | 5.8 | 9 | 0 | 15.0 | 14.6 | -0.4 |
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.
No hay comentarios por ahora.
Compartir este contenido
Compartir enlace
Compartir en redes sociales
Compartir por correo electrónico
Please iniciar sesión para compartir esto Artículo por correo electrónico.