Predicción de Clientes a Tiendas

Proyecto de predicción de clientes a tiendas a través de su ubicación

Alan Badillo Salas
Badillosoft Projects
5 min readSep 26, 2018

--

Este proyecto consiste en llevar un registro de las ubicaciones de clientes, para poder predecir las tiendas de su interés a través de preferencias.

Un Cliente se entiende por un identificador único al sistema (ID/Cliente), un conjunto de preferencias y un conjunto de ubicaciones. Una Preferencia es una etiqueta bien definida (ID/Preferencia) que representa el gusto de un cliente o la categoría de una tienda, por ejemplo, Comida, Ropa, Accesorios, Videojuegos, Música, etc. Una Ubicación es una posición geográfica (latitud/longitud) medida en un tiempo específico (ID/Ubicacion). Una Tienda se entiende por un identificador único al sistema (ID/Tienda), un conjunto de preferencias y un conjunto ubicaciones.

Las ubicaciones del cliente son actualizadas continua y asíncronamente. El sistema permite registrar una ubicación para un cliente específico cada instante. La entidad que lleva el registro de ubicaciones y clientes se conoce como RegistroUbicacionCliente la cual registra una ubicación para un cliente en frames de tiempo basados en la fecha y hora.

Cada día a una hora determinada (la de menor actividad) se realiza un proceso de reducción de datos dónde se compactan las ubicaciones basadas en sus frames de fechas y tiempo. El algoritmo guía la compactación de ubicaciones basado en la proximidad entre ubicaciones y crea ubicaciones claves para cada frame, por ejemplo, uno de los frames es el frame por hora, dicho frame acumula todas las ubicaciones en intervalos de una hora, por ejemplo, de 13:00 a 14:00 horas. El algoritmo entonces determina cuántas ubicaciones diferentes hay en cada clúster (crea un clúster de máximo k ubicaciones) y almacena la ubicación promedio de cada clúster, su radio y su peso, generando un mapa (escenario) que guarda la información que el cliente permaneció en cierto lugar durante el frame de tiempo indicado, entre menor peso tenga el clúster y menor sea su radio, significará que el usuario permaneció inmóvil (o casi inmóvil) en la ubicación promedio del clúster durante todo el frame. Entonces, frames del tamaño de 15 minutos, 30 minutos, 1 hora y 2 horas nos permitirán generar clústers (mapas/escenarios) de cómo el cliente se mueve y dónde se queda más fijo. Por el contrario, frames de una semana, un mes y un año nos permitirán ver el mapa de como el cliente se mueve a lo largo del año y los lugares que visita a lo largo de gran tiempo, para determinar incluso dónde vive o que lugares frecuenta más (debemos estar atentos a las políticas de privacidad para no infringir ninguna ley o convenio de privacidad con el usuario).

Una vez construido el clúster del cliente, se puede borrar la información repetida de las ubicaciones (o almacenarla) teniendo en cuenta el frame de mayor tiempo (no debemos borrar ubicaciones cuyo frame mayor aún no ha sido calculado). Esta limpieza se podría hacer anualmente por cliente.

El proceso siguiente una vez contruido los clústers (mapas del cliente), podemos relacionar las tiendas con clientes y viceversa. La idea es determinar por cliente qué tiendas concuerdan con su mapa, para poder agregarle al usuario las preferencias de la tienda cómo preferencias suyas pesadas por el radio/peso del clúster, es decir, en un porcentaje de 0% a 100% se deberá acumular una preferencia de la tienda dónde 0% es un radio/peso muy alto y 100% sería un radio/peso muy bajo.

Posible modelo para determinar el porcentaje de importancia radio/peso (P) dónde P es mayor o igual a cero. Cuándo P es cero el porcentaje es 100% y cuándo tiende a infinito el porcentaje es 0%

También podemos determinar cuántos clientes prefieren cada tienda y el peso con la que la frecuentan. Basado en esto hacer sugerencias entre usuarios (relacionados por tienda) y similitud entre tiendas (relacionadas por usuarios).

Pruebas Aleatorias

Generar Clientes, Tiendas y sus Preferencias aleatoriamente. Generar por Cliente Ubicaciones aleatorias en tiempos Aleatorios a lo largo de Frames aleatorios.

Similitud entre Ubicaciones por Frame

Algoritmo que determina si dos ubicaciones pertenecen al mismo Frame de tiempo.

Similitud entre Ubicaciones por Radio

Algoritmo que determina si una ubicación está a un radio máximo de otra.

Mapa de un Cliente en un Frame de tiempo

Algoritmo que crea un Mapa (clúster) de las ubicaciones basado en un Frame de tiempo dado (encontrar las diversas ubicaciones centrales y sus radios).

Asignación de Preferencias a Clientes basado en sus Mapas

Algoritmo que determina para un cliente dado según sus mapas, cuáles son las tiendas que visita y con qué peso, para agregar las preferencias de la tienda a las preferencias del cliente ponderadas por el radio/peso del clúster.

Cálculo de Clientes por Tienda

Algoritmo que determina por tienda, cuántos clientes frecuentan la tienda y con qué peso.

Similitud entre Clientes por Preferencias

Algoritmo que determina un grafo compelto de clientes, dónde los vértices son los clientes y las aristas que conectan a dos clientes es la similitud de preferencias entre los dos clientes.

Similitud entre Clientes por Tienda

Algoritmo que determina un grafo completo de clientes, dónde los vértices son los clientes y las aristas que conectan a dos clientes es la cantidad de tiendas que visitan ambos clientes.

Similitud entre Tiendas por Preferencias

Algoritmo que determina un grafo completo de tiendas, dónde los vértices son las tiendas y las aristas que conectan a dos tiendas es la similitud de preferencias entre las dos tiendas.

Similitud entre Tiendas por Cliente

Algoritmo que determina un grafo completo de tiendas, dónde los vértices son las tiendas y las aristas que conectan a dos tiendas es la cantidad de clientes que visita ambas tiendas.

Sugerencia de Clientes por Tienda

Algoritmo que determina basado en el grafo construido a partir de la similitud de clientes por tiendas y clientes por preferencia, los k vecinos potenciales de un cliente dado por la tienda (los clientes sugeridos podrían no haber visitado nunca la tienda, pero son vecinos del cliente que se sabe que si ha visitado la tienda).

Sugerencia de Tiendas por Cliente

Algoritmo que determina basado en el grafo construido a partir de la similitud de tiendas por clientes y tiendas por preferencia, los k vecinos potenciales de una tienda dada por el cliente (las tiendas sugeridas podrían no haber sido visitadas por el usuario, pero son vecinas de la tienda que se sabe que ya visitó el usuario).

Sugerencia de Tiendas por Ubicación

Algoritmo que determina basado en una ubicación, cuáles son los clientes que han pasado más cerca de la ubicación (según sus mapas), a partir de ahí se realiza un torneo para seleccionar las k tiendas más visitadas por todos los clientes que pasaron cerca de la ubicación específicada.

--

--

Alan Badillo Salas
Badillosoft Projects

L. Matemáticas Aplicadas UAM-Cuajimalpa. M. en Inteligencia Artificial IPN-CIDETEC. Desarrollador Full Stack MEAN/MERN. Data Scientist.