App con Inteligencia Artificial para encontrar el mejor alojamiento

Ander Fernández Jauregui.

Ander Fernández Jauregui

Data Scientist y Business Intelligence.

Problema Inicial

Quieres irte de viaje, sabes a dónde, pero… ¿dónde me alojo? Hay muchas opciones, con muchos precios. Y claro, comparar  entre tantas opciones, es complicado.

¿No sería más fácil que una Inteligencia Artifical nos ayudase en la elección?

Cuestiones Involucradas

  • Machine Learning
    • Random  Forest
  • Business Intelligence
    • Shiny App
    • Web Scraping

Solución

He creado una app interactiva en la que puedes hacer una búsqueda como si de Booking se tratara (ciudad, tipo de alojamiento, nº de adultos y niños, etc.).

La app se encargará de extraer los datos y entrenar un modelo de inteligencia artificial que calculará cuánto debería valer cada alojamiento.

Comparando ese precio con el precio real, la app hará un ranking de alojamientos recomendados que podrás ver en un mapa filtrable o en modo de tabla.

Desarrollo del Proyecto

Share on linkedin
Share on twitter
Share on email
Share on linkedin
Share on twitter
Share on email

Cómo elegir el mejor lugar donde alojarse

Elegir el mejor lugar donde alojarse en unas vacaciones es muy complicado: hay muchas opciones (sobre todo si vas a una ciudad grande) y hay muchas variables en juego (nota, comentarios, distancia al centro, número de estrellas…).  Por eso mismo, elegir alojamiento es bastante complicado. Y por eso he creado esta aplicación.

La idea es sencilla: crear una Inteligencia Artificial que, mediante Machine Learning te ayude a elegir el mejor alojamiento en cuanto a calidad/precio. Pero… ¿cómo se hace eso?

 

Creando la App con Inteligencia Artificial para encontrar el mejor alojamiento

1. Extrayendo los datos de Booking.com

Lo primero de todo es obtener esos datos. Y la app debe ser interactiva, por lo que no sirve precargar un dataset. En su lugar, he creado un sistema de extracción de datos mediante web scraping.

Se trata de un sistema robusto y flexible, puesto que se puede usar para cualquier ciudad y fechas y la búsqueda permite los mismos criterios que los que permite Booking (número de habitaciones, número de adultos y niños y ciudad) y, además, he enriquecido la búsqueda con el tipo de alojamiento (Hotel, Apartamento u Hostales y Albergues), cosa que Booking no permite en su primera búsqueda.

Una vez hecho esto, se escraperán todos los resultados  de todas las páginas que Booking devuelve para la búsqueda que el usuario haya especificado.

Sin duda, este ha sido el paso más delicado por varios motivos: la estructura de URL para hacer el scraping no es nada intuitiva y crear un sistema de scrapeo robusto y rápido no ha sido sencillo. Al fin y al cabo, si la aplicación tarda mucho en funcionar, nadie la usará.

 

2. Limpieza de datos

Una vez se han extraído los datos, estos se deben tratar para que sean de utilidad. Además, este tratamiento debe dejar datos limpios para cualquier tipo de alojamiento o combinación de los mismos, lo cual tiene su truco. ¿Por qué? Porque los hoteles y hostales tienen estrellas, pero los apartamentos, por ejemplo no. Por tanto, la variable estrellas se deberá tener en cuenta, o no, en función de qué se haya elegido.

Si bien este paso no ha requerido tanto tiempo como el anterior, ha sido un paso delicado. Al fin y al cabo, la calidad del modelo y, por tanto, de la utilidad de la aplicación, depende de que el modelo de Machine Learning funcione bien y, el modelo, a su vez, depende de los datos con los que se entrene.

 

3. Creación del modelo

Para mi, ha sido el apartado más sencillo. Una vez tienes el dataset preparado, simplemente he creado un modelo de Random Forest que prediga el precio del alojamiento. ¿Por qué Random Forest? Por tres motivos:

  • Facilita el trabajo. No necesita que escalemos los datos para que funcione bien, por lo que nos ahorramos dos pasos (escalado y reconversión a datos no escalados para la interpretación).
  • La capacidad explicativa del modelo es buena. Al tratarse de un modelo de bagging, sus resultados suelen ser superiores que los de modelos simples.
  • Permite conocer la importancia de las variables en cuanto a la explicación del modelo, de modo que no solo sabemos el precio del alojamiento, sino que también sabemos qué es lo que más afecta en el mismo. Esto nos da una idea sobre el modelo, lo cual modelos de caja negra no te pueden ofrecer.

 

4. Visualización de los datos

El valor de la aplicación no es la predicción en sí, sino su usabilidad. Al fin y al cabo, con una tabla con todos los datos, nos perdemos una parte de la información importante: la espacial. Por eso, he creado importante crear un mapa interactivo.

Esto genera otro problema. La app debe ser útil, por lo que debe permitir varios tipos de filtrado (en mi caso he considerado que  los más importantes son el tipo si el alojamiento se recomienda o no, el rango de precio y el ranking de recomendación).

Además, este filtrado tiene que ser útil tanto en móviles como en ordenadores. Así, he tenido que jugar con funciones Javascript integradas en R y mucho CSS que permita una navegación fluida en cualquier dispositivo.

 

 

Y así es como he creado la App con Inteligencia Artificial para encontrar el mejor alojamiento. Espero te sea útil. ¡ cualquier pregunta o sugerencia, ¡no dudes en escribirme al email!;)