App con Inteligencia Artificial para encontrar el mejor alojamiento
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
- Aplicación interactiva
- Machine Learning
- Cloud
Solución
Esta app te extrae los alojamientos del tipo indicado disponibles en el periodo que quieras y te indica, con toda su información (estrellas, reseñas, distancia al centro, servicios, etc.) cuáles son los hoteles que cuestan menos de lo que deberían y cuáles cuestan más.
Desarrollo del Proyecto App con Inteligencia Artificial para encontrar el mejor alojamiento
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!