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:
- Definición del problema
- Adquiriendo los datos (dataset)
- Configuración y requerimientos de la competición
- Elección de un modelo ganador
- Desplegar una API en producción
- 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:
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.
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)
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