Predicción de precio inmobiliario: por qué un ensemble GBM + red neuronal bate a cualquiera por separado
El gradient boosting captura las reglas; la red neuronal, las interacciones suaves. Combinándolos en un ensemble llegué a explicar el ~90% de la varianza del precio (R²) con un error medio de ±$62K.
El precio de una vivienda depende de factores que se comportan de formas muy distintas. Algunos son cuasi-reglas ("más de 3 baños dispara el precio en esta zona"); otros son interacciones suaves y continuas (la relación entre metros, antigüedad y barrio). Ningún tipo de modelo captura bien ambas cosas a la vez. Por eso usé un ensemble.
El problema
Estimar el precio de mercado de una vivienda a partir de sus características, con un error lo bastante bajo como para ser útil en una valoración real, y exponerlo como una API de predicción en tiempo real.
Los dos modelos del ensemble
- Gradient Boosting Machine: excelente capturando relaciones no lineales y "reglas" abruptas sobre datos tabulares. Es el caballo de batalla de los datos estructurados.
- Perceptrón multicapa (MLP): una red neuronal que modela bien las interacciones suaves y continuas entre variables, algo donde los árboles, por su naturaleza escalonada, son más toscos.
Las predicciones de ambos se combinan. El ensemble funciona porque sus errores están poco correlacionados: donde uno falla por su sesgo, el otro tiende a compensar.
Decisiones técnicas
El preprocesado trató con cuidado las variables sesgadas (el precio y la superficie se distribuyen log-normalmente, no normalmente) y las categóricas de localización. El stack es scikit-learn para el GBM y PyTorch para el MLP, servido todo con FastAPI.
Resultados
- R² ≈ 0.90: el modelo explica alrededor del 90% de la varianza del precio.
- MAE ≈ ±$62K: error medio absoluto.
- ~11% de error porcentual relativo.
Qué aprendí
Que el ensembling no es hacer trampa: es reconocer que distintos modelos tienen distintos puntos ciegos, y que combinarlos es casi siempre más robusto que pelearse por exprimir el último 0,5% de un único modelo.
Sobre este proyecto
Predicción de Precio Inmobiliario
Mejoras en la arquitectura del proyecto: conexión de router y endpoint de ejemplo en utils.py. (156)