El problema
Madrid tiene miles de alojamientos en Airbnb. La pregunta que me hice fue simple: ¿se puede predecir qué alojamientos son rentables antes de invertir en ellos?
No como ejercicio teórico. Como un sistema que funcione sobre datos nuevos, sin intervención manual.
El dataset
Datos públicos de Inside Airbnb — más de 30.000 registros de alojamientos en Madrid con información de precio, ubicación, tipo de propiedad, disponibilidad y reseñas.
El target: clasificación binaria. Alta rentabilidad vs baja rentabilidad, definida a partir de variables de precio y ocupación estimada.
El proceso
El pipeline completo está estructurado en notebooks numerados, desde el dato crudo hasta la predicción en producción:
1. Limpieza y calidad de datos
Variables con alto porcentaje de nulos, outliers en precio, registros duplicados. El dataset de Airbnb tiene bastante ruido — esta fase llevó más tiempo del esperado.
2. Ingeniería de variables
Transformaciones, encoding de variables categóricas (barrio, tipo de propiedad) y creación de nuevas features a partir de combinaciones existentes.
3. Preselección de variables
Con métodos estadísticos para reducir dimensionalidad antes de modelizar. No meter todo al modelo y esperar lo mejor.
4. Balanceo
El dataset estaba desbalanceado. Se aplicó undersampling para que el modelo no aprendiera solo la clase mayoritaria.
5. Modelización
Se testaron varios algoritmos con RandomizedSearchCV. El ganador: XGBoost con binary:logistic.
Resultado: AUC-ROC de 0.997 sobre el conjunto de validación.
6. Producción
El modelo está serializado en pipelines .pickle que se ejecutan directamente sobre nuevos datos sin reentrenar.
La visualización
Un mapa interactivo (Folium) muestra cada alojamiento coloreado según su potencial de rentabilidad, segmentado por barrios de Madrid. Permite identificar zonas de alta concentración de alojamientos rentables de un vistazo.
Lo que aprendí
- La calidad del dato importa más que el algoritmo. Con datos sucios, XGBoost no te salva.
- Definir bien el target es la decisión más importante del proyecto. Si el target está mal definido, todo lo demás está mal.
- Un AUC-ROC de 0.997 en validación es una señal de alerta antes de celebrarlo — hay que verificar que no haya data leakage.
Repositorio
Todo el código, notebooks y pipelines están disponibles en GitHub:
👉 github.com/OscarFraile/Proyecto-Master-DataScience-Evolve-OscarFraile
Si tienes alguna propuesta, coméntamela en Github y la haremos realidad!
Proyecto académico desarrollado durante el Master en Data Science de Evolve.

Top comments (0)