Si Portal Inmobiliario usara Welokat

Mapoteca
5 min readJul 11, 2021
Imágen 1 (Fuente: Welokat 2020 ©)

En Mapoteca nos hemos dedicado un año completo al desarrollo de un algoritmo en particular: Welokat. Algo así como el Giuseppe de NotCo.
Lo que hace Welokat es tomar evidencia territorial (puntos coordenados X, Y), busca el patrón espacial predominante de esa evidencia, y luego encuentra sus similares en toda la ciudad (la que sea en cualquier País del mundo)

Este post es la continuación de un artículo anterior dedicado a OxxO. Esta vez, siguiendo el mismo estilo narrativo, vamos a hablar de Portal Inmobiliario. Junto con esto, esta pieza además está inspirada por lo que escribió mi socio Francisco Anguita sobre cómo Welokat es capaz de realizar transfer learning comparando barrios, tomando evidencias en Santiago y encontrando sus símiles en México, en ese caso. Manos al código.

Planteando el problema

Lo que quiero poner a prueba en esta ocasión es cómo nuestro algoritmo puede recomendar un lugar para vivir, basándonos solamente en la posición (coordendas lat, lon) de tres puntos en el territorio. Estos tres puntos son propiedades en arriendo, más en específico, departamentos.

imágen 2 (Fuente: Portal Inmobiliario, Junio 18 del 2020. De izquierda a derecha: Plaza La Alcaldesa, Plaza Las Lilas y Parque Inés de Suarez, Providencia, Santiago, Chile.)

La búsqueda la realicé en Portal Inmobiliario, que es el sitio de búsqueda de propiedades más grande de Chile, reforzando esta posición luego de ser adquirido por Mercado Libre el año 2014.

Busqué los barrios en los cuales me gustaría vivir según mi estilo burgués refinado. Dichos lugares están en la comuna de Providencia, en Santiago, Chile. Concretamente cerca de Plaza La Alcaldesa, Plaza Las Lilas y Parque Inés de Suarez (ver imágen 2). El valor de arriendo de dichas propiedades fluctúa entre los 690 a 790 mil pesos (USD$ 844 a USD$966). La superficie va desde los 95mts2 a los 123mts2. Todos con 3 dormitorios y 2 baños.

La razón por la cual escogí esos barrios es porque están cerca de la oficina (pre-Covid19); además hay áreas verdes cercanas en las cuáles mi perrito se entretiene y podríamos pasear con mi esposa junto a nuestro bebé, de tan solo 2 meses (awww).

A los datos, por favor!

Portal Inmobiliario nos entrega la dirección de las propiedades, las cuales podríamos geocodificar y obtener una coordenada, pero nadie quiere hacer eso. Por esto volvimos al web scraping, para ahora ‘escarbar’ en el JavaScript que se genera en dicho portal. En sitios que se generan de forma dinámica, hay que extremar recursos. La función hecha (por supuesto) en Python, es la siguiente:

import random
from bs4 import BeautifulSoup
import requests as req
import sys
def find_coordinates(u):
try:
# Making soup
uas = ("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1",
"Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36")
ua = uas[random.randrange(len(uas))]
headers = {'user-agent': ua}
resp = req.get(u, headers=headers)
c = resp.content
soup = BeautifulSoup(c, features='lxml')
# Finding coordinates on JS -- Not so elegant
s = str(soup.find_all('script'))
source = s.replace('\n', '').replace('\t', '').replace(' ', '')
string_to_find_coordinates = source.split('center=')
x_and_y = string_to_find_coordinates[1].split('&zoom')[0].split('%2C')
return x_and_y
except req.exceptions.HTTPError as e:
print(e)
sys.exit(1)

El parámetro ‘u’ es la url de una propiedad.

Con esta pequeña automatización obtenemos tres puntos coordenados para tres links a departamentos en arriendo:

-33.4376831,-70.6111298
-33.4271774,-70.5941162
-33.435359000000005,-70.599836

Ahora entra a la cancha Welokat

Como tenemos evidencia, aunque ésta sea escasa (tres puntos en el espacio), Welokat puede ir a dichas posiciones, reconocer todo lo que hay cerca, identificar un patrón espacial, y luego evaluar manzana a manzana (bloque a bloque) una ciudad completa, buscando similitudes territoriales.

Con esos tres humildes puntitos, Welokat entrega lo siguiente:

Imágen 3 (Fuente: Welokat 2020, elaborado con CARTO). Los puntos representan puntos en la ciudad con un índice Welokar entre 0 y 1.

Welokat arroja resultados que van de 0 a 1, siendo 1 lo más similar al patrón espacial de nuestra evidencia. Si filtramos los valores, para mostrar solamente aquellos que van desde 0.902 a 1 (muy similares), el mapa cambia radicalmente:

Imágen 4 (Fuente: Welokat 2020, elaborado con CARTO). Los puntos representan puntos en la ciudad con un índice Welokar igual o superior a 0.902.

Si movemos el histograma para dejar un rango de 0.949 a 1, la cosa si que es precisa:

Imágen 5 (Fuente: Welokat 2020, elaborado con CARTO). Los puntos representan localizaciones en la ciudad con un índice Welokar igual o superior a 0.949.

Hay un resultado fuera de Providencia en este rango, un punto en Santiago Centro. Cercano a Parque Bustamente. Not bad!

Pero queremos que nos recomiende propiedades!

Paciencia.

Ahora viene lo bueno, porque si tan solo tuviesemos las coordenadas de todas las propiedades publicadas en arriendo en Portal Inmobiliario, podriamos identificar qué propiedades reales son cercanas a nuestras preferencias.

Por suerte, las tenemos ;)

Esta vez ocupé otra herramienta de web scraping, llamada Scrapy. Es simple de configurar, me entrega datos formateados y más encima, le podemos insertar el pedacito de código que hicimos para extraer las coordenadas de una propiedad… greeeeeaaat!

Prefiero no publicar la aplicación de web scraping de Portal Inmobiliario, pero si quiere usted hablar del tema (you know what I mean), escríbame aquí: cris@mapoteca.co

Una vez que obtenemos todas las propiedades en arriendo en Santiago, el mapa se ve así:

Imágen 6 (Fuente: Welokat 2020, elaborado con CARTO). Los puntos celestes representan departamentos en arriendo en Santiago publicaod en portalinmobiliario.com, el día 18 de Junio del 2020.

Los Departamentos que están cercanos a mi elección

Finalmente, tenemos dos sets de datos que puedo comparar: (i) Por un lado, las recomendaciones Welokat, y por otro (ii) las propiedades en arriendo en Santiago, obtenidas desde Portal Inmobiliario.

Lo que hice finalmente fue aplicar un Nearest Analysis, encontrando los 5 puntos más cercanos a mis resultados Welokat en un rango de 0.949 y 1. Es decir, encuentro para cada punto, las 5 propiedades en Portal Inmobiliario más cercanas, en una distancia lineal. El mapa resultante es el siguiente (este es dinámico). Los invito a navegarlo y visitar las propiedades (click en los puntos lila):

Conclusión

Esta recomendación de Propiedades está basada solamente en variables territoriales e información pública. Esta recomendación está hecha sin rastreo de usuarios, sin saber mis gustos, ni mis preferencias.

Si Portal Inmobiliario usase nuestro algoritmo (call me baby!), podría añadir un layer adicional de inteligencia, y dar respuestas basadas en la configuración de la ciudad. Además, no tan solo en Santiago, sino que en la región completa, pensando en la escala continental de Mercado Libre. Los dejamos invitados a probarnos!

Fin.

--

--

Mapoteca

Global site location using AI and satellite images