Caso de Estudio en Data Science - Predicción De Precios De Apartamentos En Argentina y Colombia

Daniel Morales
Apr 17, 2021

Contents Outline

Caso de Estudio en Data Science - Predicción De Precios De Apartamentos En Argentina y Colombia

Apr 17, 2021 6 minutes read



Predecir o estimar el precio de venta de una vivienda puede ser de gran ayuda a la hora  de tomar decisiones importantes tales como la adquisición de casa propia o de  un bien raíz como vehículo de inversión. También puede ser una herramienta importante para una agencia de venta de propiedades, ya que le permitirá estimar el valor de venta de los inmuebles que para ellos en este caso son activos. 

Tener una estimación del valor de la vivienda permite aumentar la capacidad  de negociación, tanto para el comprador como para el vendedor. Además, tener este conocimiento sirve como herramienta comparativa para evaluar  proyecciones de crecimiento en diferentes sectores residenciales.

En DataSource.ai hemos realizado una competición en data science donde los participantes podían descargar un dataset con información acerca de ventas que se han hecho en el pasado, y tratar de estimar el valor de un nuevo inmueble para la venta.

El objetivo de esta competencia fue crear un modelo de aprendizaje automático que permita predecir el precio de los apartamentos para Argentina y Colombia, pero puede aplicarse estos mismos modelos para otros países o incluso ciudades, dadas las principales variables que describen estas propiedades, como lo son: el área, la cantidad de baños, la ubicación, etc.

En esta caso de estudio iremos por los siguientes puntos:

  1. Definición del problema
  2. Adquiriendo los datos (dataset)
  3. Configuración y requerimientos de la competición
  4. Elección de un modelo ganador
  5. Desplegar una API en producción 
  6. Desplegar el modelo en una app visual (Streamlit)

Definición del problema
Dad la introducción anterior, donde hablábamos de la importancia de poder predecir los precios de un inmueble, y las ventajas competitivas que esto nos da, el problema que queremos afrontar en este caso es una tarea de Regresión, donde tenemos un listado de inmuebles que se han vendido en el pasado, con las características que lo definen, tales como: el área, la cantidad de baños, la ubicación, etc. Así que debemos predecir un valor continuo

Adquiriendo los datos
El conjunto principal de datos contiene información de los departamentos/apartamentos en venta en Argentina y Colombia durante el periodo 2019 – 2020. “datos provistos por properati” 

Si deseas ver los datasets que esta plataforma proporciona puedes encontrarlos aqui:
https://www.properati.com.co/data/, estos datos son abiertos, por lo cual agradecemos a Properati por tomarse el trabajo de abrir sus datos!

DataSource.ai hizo una limpieza y preparación previa de los datos necesarios para la competición.

Definimos las siguientes características:

Id  = Identificador único del inmueble
pais  = Pais donde se encuentra el inmueble
ciudad  = Ciudad donde se encuentra el inmueble
provincia_departamento = provincia o departamento donde se encuentra el inmueble
property_type = Tipo de propiedad (En nuestro caso solo es Apartamento)
operation_type  = Tipo de negocio (venta)
rooms  = Número de ambientes (salas)
bedrooms = Número de habitaciones
surface_total  = Area total en m2
currency = moneda en dolares
price = precio del inmueble

Nota: Para Colombia se aplicó una TRM de $3.633 COP para calcular el precio en USD

El dataset se dividió de la siguiente manera:

train_apartmentos.csv corresponde al 80% de los datos, con este conjunto entrenaras el modelo de machine learning. 

test_aparmentos.csv corresponde al 20% de los datos, con este conjunto de datos vas a predecir la columna price. A diferencia del conjunto Train, el dataset Test no contiene los datos de la columna price, estos los debes predecir con tu modelo.


Configuración y requerimientos de la competición

Para poder configurar las competiciones, necesitaremos los siguientes lineamientos:
  • Fecha de inicio de la competición
  • Fecha de finalización de la fase pública: en este periodo evaluamos los modelos basados en una primera subdivisión de los datos
  • Fecha de finalización de la fase privada: en este periodo evaluamos los modelos basados en una segunda y última subdivisión de los datos que permite evitar el overfitting
  • La descripción de los detalles de la competición
  • Las reglas de la competición
  • La métrica de evaluación de los modelos. Esta métrica está sujeta al tipo de problema que se va a resolver
  • Los premios a entregar a los competidores que logren los mejore puntajes
  • Los datos en formato csv y con las correspondientes subdivisiones


Elección de un modelo ganador
Una vez finalizada la competición estos han sido los 5 primeros lugares


Cada uno de ellos nos ha enviado el código fuente con sus respectivas soluciones, y hemos elegido uno de ellos para desplegarlo en producción. 

Desplegar una API en producción 

Este es un screenshot del código que usamos para desplegar una API en nuestros propios servidores, y poder atender peticiones vía HTTP


Probablemente no entiendas mucho al respecto, no te preocupes, tenemos los ingenieros para realizar todo este proceso de deployment a producción de los modelos ganadores. Lo importante es lo que viene a continuación. 

Digamos que hipotéticamente tu empresa tiene una plataforma web, a la cual quieres conectar estas predicciones, y cada vez que necesites hacer una predicción solo debes ingresar las características del inmueble rellenando un formulario, y que obtenga dichas predicciones. Pues bien, esa es la intención de esta API, que el formulario que rellenas en tu página web se comunique automáticamente y vía API con nuestro servidor, e inmediatamente devolver el precio de predicción de venta. 

Vamos a realizar la simulación usando Postman


Aqui podemos ver que en la parte superior estamos enviando los datos a una URL con la siguiente estructura: https://mlendpoints.com/real-state-price-forecast/predict

Este es el endpoint en el que hemos subido el código mostrado anteriormente. Luego en el Body estamos enviando unas características acerca del inmueble al que le queremos predecir el valor final, o precio de venta. El cual está ubicado en Argentina, tiene un total de 4 habitaciones, 2 habitaciones y 3 baños, y tiene una superficie de 137 mts2. Dadas estas características y usando uno de los modelos ganadores, el resultado lo obtenemos en la parte inferior, con un valor estimado de venta de $402.473 usd. 

Aquí es donde radica el poder de Machine Learning con un modelo desplegado a producción, podemos hacer predicciones sobre la marcha!


Desplegar el modelo en una app visual (Streamlit)

Como paso final y adicional, podemos simular una plataforma visual, donde por medio de un formulario se obtienen los resultados de la predicción. En este caso estamos usando Streamlit. Veamos el resultado: Puedes acceder al siguiente link y jugar un poco con los parámetros de predicción



En la barra izquierda tenemos los parámetros del modelo, para poder hacer las predicciones. Tales como pais, rooms, bethrooms, etc. Y en la parte central tenemos el Score del modelo, los parámetros especificados en la izquierda y el resultado de la predicción del precio. Para estas características, por ejemplo, el precio final es de $314.011 usd (son parámetros diferentes al anterior, por ello el precio cambio)

Conclusion

Como puedes ver, con las competiciones abarcamos todo el proceso de machine learning, y lo hacemos de la mano contigo tratando de solucionar un problema específico con data science. Si quieres aprender más sobre las competiciones, puedes leer este artículo, y también puedes agendar una consulta gratis con nuestros expertos en data science

Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!