Coder Social home page Coder Social logo

marianopopov / google_yelp_recommend Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 306.62 MB

Proyecto Grupal - Google Maps & Yelp - Sistema de Reseñas y Recomendaciones en Google Cloud Platform - Deploy en Google Cloud Run

Home Page: https://datavision-hfdze4a6jq-uc.a.run.app/

License: MIT License

Jupyter Notebook 72.81% HTML 27.15% Python 0.03% CSS 0.01%
bigquery data data-analysis data-engineering data-science data-visualization etl-pipeline gcp-cloud-functions gcp-project knn-classification machine-learning python streamlit web docker powerbi slack

google_yelp_recommend's Introduction

Recomendación de negocios

Índice de Contenidos

Introducción

Como parte de una consultora de datos, hemos sido contratados para llevar a cabo un análisis del mercado estadounidense. Nuestro cliente forma parte de un conglomerado de empresas relacionadas con restaurantes relacionadas al rubro fast food, y buscan obtener un análisis detallado de las opiniones de los usuarios en Yelp y cruzarlas con las de Google Maps en relación a dicho rubro. Utilizando análisis de sentimientos, nuestro objetivo es prever si el rubro fast food experimentará un mayor crecimiento o declive.

Además nuestro cliente desea determinar estratégicamente la ubicación de nuevos locales de restaurantes, implementando un sistema de recomendación de restaurantes fast food para usuarios en ambas plataformas. Con nuestro producto los clientes podran identificar oportunidades de creación o compra de negocios.

Video

Descripción de la imagen

Contexto

La retroalimentación de los usuarios, cada vez más abundante gracias a plataformas de reseñas, es un recurso valioso para los negocios de comida rápida. Yelp y Google Maps son dos plataformas destacadas que ofrecen reseñas específicamente para este tipo de establecimientos. Los usuarios comparten sus experiencias, proporcionando a las empresas de comida rápida una visión detallada de cómo son percibidas por sus clientes. Esta información resulta esencial para evaluar el rendimiento, utilidad y áreas de mejora de los servicios ofrecidos por cada local de comida rápida. La capacidad de los usuarios para tomar decisiones basadas en estas reseñas subraya la importancia crítica de mantener una imagen positiva en estas plataformas para el éxito comercial en la industria de la comida rápida.

Alcance

El presente documento establece el alcance del proyecto de análisis de opiniones de usuarios

Flujo de Trabajo

 

Elegimos realizar la visualizacion e interaccion con los dos productos terminados que ofrecemos, hacerlo a traves de una web. Esta web permite interactuar con los dos grandes resultados de nuestro trabajo:

  • EL Dashboard
  • El modelo entrenado de ML

Pero para que la la interfaz web pueda mostrar los datos, se tuvieron que realizar varias elecciones y trabajos previos que a continuacion se detallan de manera general, asi como algunas de las justificaciones de esas selecciones y los trabajos previos necesarios.

La WEB:

Streamlit como front-end framework general:

Su simplicidad de uso permitio que nos centremos en los aspectos fundamentales del trabajo enconmendado: obtener informacion en base a los datos. Su simple API no requiere conocimientos avanzados de configuracion de rutas, escribir y correr el back-end, manejar consultas HTTP, conectar el front-end, escrbir HTML, CSS, JS, etc. Si bien no tiene un alto nivel de configuracion sin incorporacion de otras herramientas, cumple su cometido sin problemas.

Docker como plataforma para contenedorizar la interfaz web:

Docker es una plataforma para generar unidades auto contenidas que tiene todo lo que la app necesita para correr y ejecutar su funcionalidad. A Estas unidades se las denomina contenedores y tienen las siguientes caracteristicas:

  • Incluyen todas las dependencias: el codigo de la aplicacion, el runtime de ejecucion y las librerias se empaquetan juntas.
  • Cada contenedor corre independientemente del resto, compartiendo el Kernel del sistema operativo pero no recursos.
  • Son portables y pueden ser facilmente movidos entre diferentes entornos sin romper la aplicacion.
  • Son mas eficientes que las maquinas virtuales al compartir el kernel.

La interfaz web esta integremente empacada en un contenedor de Docker (un estandar internacional).

Algunas de las librerias que se estan incluidas en el contenedor de la app:

  • Python (3.9 Slim)
  • Streamlit
  • Pandas
  • Numpy
  • Slack
  • Folium
  • Google Cloud Bigquery y Google CLoud Storage

Google Cloud Run como servicio para realizar el deploy de la web:

Si bien Stremlit dispone de un servicio apto para realizar el deploy de manera simple y rapida (Streamlit Comunity Cloud), nos volcamos por realizarlo mediante Google Cloud Run porque:

  • Docker es una de las tecnologias soportadas por Cloud Run, la cual recomienda en su documentacion (si bien admite deploys no-contenedorizados como Node JS o Go).
  • Serverless: Cloud Run se encarga de la adminstracion e infraestrutura ante aumentos o disminuciones de trafico.
  • Cambiando streamlit como front-end framework (por ejemplo por React JS), el deploy en la nube previo creado el contenedor, es identico.

El proceso para disponibilizar un endpoint publico de la web fue:

  1. Localmente crear el contenedor con todas las dependencias
  2. Subirlo a Google Artifact Registry: un repositorio de contenedores (y mas) en la nube.
  3. Crear el servicio en Google Cloud Run: como resultado de la creacion, se disponibiliza un endpoint publico para su consumo.

El Dashboard y el modelo de ML:

Para ambos, si bien responden a origenes de datos y objetivos diferentes, comparten el mismo camino en la nube:

  1. Los datos crudos provenentes de la informacion suministrada y alguna adicional que se sumo, se suben a Google Cloud Storage.
  2. Una funcion creada en Google Cloud Functions se gatilla cada vez que un Storage es actualizado tanto la primera vez, como toda vez que se agreguen datos nuevos.
  3. Esta funcion envia trabajos (Jobs) a Google Cloud DataProc para realizar tanto el ETL automatizado como para obtener el modelo de ML entrenado. Siempre se tienen en cuenta los datos nuevos, obteniendo nuevas versiones actualizadas de los datos.
  4. Algunas notificaciones son enviadas por Slack a medida que los procesos se cumplen satisfactoriamente.
  5. Los archivos con los trabajos terminados se guardan nuevamente en Google Cloud Storage para ser consumidos tanto por PowerBI (Dashborad) como por el front-end.

Este flujo de trabajo garantiza una correcta actualizacion y permanente disponibilidad de datos actualizados para la toma de decisiones.

Nota con respecto a la visualizacion de los mapas en el modelo de ML:

Para mantener el trafico de datos liviano entre los ordenadores que realizan las consultas y la nube en cuanto a la visualizacion de los puntos de interes en los mapas, se realizan internamente dos requests HTTP.

  • request 1: se envian los parametos seleccionados al modelo de ML entrenado que reside en la nube. Esta primera request devuelve solo entre 5 y 15 indices, correpondientes a la identificacion de los comercios relevantes de acuerdo al modelo elegido.

  • request 2: los indices son enviados nuevamente a la nube, de manera que la la busqueda y devolucion de los datos relevantes para ser representados son solo los que se dibujan. Esto hace que el trafico si bien se realiza dos veces, el volumen de datos es despreciable.

Cronograma

El proyecto se desarrollará en un período de 6 semanas, con tres sprint que son los siguientes:

  • Sprint 1: Puesta en macha del proyecto. 2 Semanas

    • Inicialización del proyecto realizando mineria de datos y documentación del datawarehouse.
    • Establecimiento del stack tecnologica que utilzaremos durante el proyecto.
    • Implementamos la metodología SCRUM realizando daylis, para optimizar la producción.
    • Realización de tareas puntuales como EDA, KPI's y diagrama de Gantt.
    • Equipo de trabajo, Roles y responsabilidades.
  • Sprint 2: Data Engineering. 2 Semanas

    • Realización de extracción transformación y carga de la data.
    • Creación de un flujo automatizado anual, en el que nuestro cliente podra estar actualizado de forma automatica.
    • Durante la creación del flujo automatico se nos notificará via el slack de la empresa las valizaciones de la tarea de manera automatica.
    • Documentación: Diagrama entidad relación, Diccionario de datos, Workflow y tecnologías.
    • MVP/ Proof of Concept de producto de ML ó MVP/ Proof of Concept de Dashboard.
  • Sprint 3: Data Analitics y Machine learning. 2 Semanas.

    • Diseño de Dashboard realizado en power BI, vizualizado en la página web de la empresa.
    • Creación de un modelo de recomendación para nuestro cliente y puesta en producción en la página web.
    • Documentación: selección del modelo, feature engineering, informe de análisis.
    • Video del proyecto realizado, para ser votado y, en caso de ganar, ser presentado en la graduación final.

Diagramas entidad relación

Diagrama de Gantt

El proyecto seguirá una metodología de trabajo en equipo que incluye las siguientes etapas:

Sprint 1
Sprint 2
Sprint 3

KPIs

Objetivo: Aumentar las respuestas de negocios en un 45% respecto al año anterior.

Objetivo: Aumentar un 10% las reviews positivas comparadas con el año anterior.

(Una review positiva es cuando recibe 4 o 5 estrellas)

Objetivo: Aumentar un 5% los reviews de sentimientos positivos respecto

al total de reviews comparados con el año anterior.

Restricciones y Limitaciones

El proyecto se limita al análisis de datos disponibles en Yelp y Google Maps para el mercado estadounidense. La disponibilidad y calidad de los datos pueden afectar los resultados del análisis. El alcance del proyecto no incluye la implementación de sistemas en producción, sino la entrega de modelos y recomendaciones listos para su implementación.

(ir arriba)

Deploy en Google Cloud Run

Realizamos una página web interactiva a través de la herramienta streamlit mediante el cual presentamos nuestros productos desarrollados como son un dashboard y un modelo de recomendación.

Link Página web

Dashboard Interactivo

Desarrollamos un dashboard interactivo que brinda información gráfica y detallada de nuestros análisis que permite visualizar de manera clara y concisa los insights obtenidos durante el proceso de análisis de mercado.

Modelo de recomendación

Nuestro modelo predictivo de machine learning con base en la proximidad geográfica, la evaluación de usuarios y la oferta de servicios, devuelve recomendaciones valiosas acerca de los negocios de comida rápida en Estados unidos.

Fuentes de datos

Fuentes de datos obligatorias

Acerca de nosotros

Marcelo Ortiz Belén Viglioglia Becker Alejandro Ramírez Mariano Popov Martín Riveros
Data Analyst Data Analyst Data Engineer Data Engineer Data Science

(ir arriba)

Stack tecnológico

Visual Studio Code Jupyter Pandas Matplotlib Seaborn Folium scikit-learn Streamlit Apache Spark GitHub Git Power BI Google Cloud Platform

google_yelp_recommend's People

Contributors

belenvbecker avatar dalejandroramirez avatar marceloortizz avatar marianopopov avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.