A principios de este año Gartner ha publicado cuales son las tendencias top 10 de 2019 en el ámbito de Data y Analytics, una de ellas es la denominada Graph.

La define como set de técnicas analíticas que permite la exploración de las relaciones entre diferentes entidades de un modelo.

Según Gartner este tipo de sistemas con procesamiento gráfico duplicarán su crecimiento anualmente hasta 2022 permitiendo analíticas más complejas y dando respuesta a preguntas que no solo pueden resolverse vía SQL. Si echamos un vistazo a la página DB-rank se observa el crecimiento de este tipo de sistemas, sobre todo en los 2 últimos años donde prácticamente se ha duplicado.

Fuente: https://db-engines.com/en/ranking_categories

En que Consiste un Graph

Los objetos que componen un graph son los nodos (nodes) o vértices (vertex) que representan las diferentes entidades del modelo y las relaciones entre ellos (edges).

Los Graphs algorithms permiten analizar relaciones y como los datos interactúan entre sí. Redes sociales, redes eléctricas, POS (Point of Sale) en retail, etc. son solo algunos ejemplos. En definitiva, este tipo de análisis permite explorar y encontrar patrones en grandes cantidades de información a través de las relaciones entre los objetos.

Aplicando esto a un ejemplo un poco más práctico relativo a datos de ventas de productos a clientes.

En nuestro ejemplo tenemos como dimensiones:

  • Fecha.
  • Cliente.
  • Producto.
  • Tienda.

Como ratios:

  • Cantidad.
  • Importe.
  • Precio Medio.
  • Nº de Transacciones

Si esta información tabular la visualizamos en un Graph Analysis, quedaría de la siguiente manera:

Tenemos nodos de tipo cliente que han realizado la compra de un mismo producto. Las relaciones entre los nodos muestran el numero de transacciones o compras realizadas por cada uno.

Cada uno de los nodos tiene una serie de atributos o características que lo describen, en nuestro ejemplo los clientes están clasificados con una segmentación RFM.

Las relaciones entre los nodos también contienen información que indica el sentido, ponderación, etc.

Viendo esto en perspectiva y aumentando el volumen de datos analizados, el aspecto es más o menos el siguiente:

Aquí vemos como multitud de clientes compran multitud de productos y como métricas como cantidad, número de pedidos, devoluciones, etc. marcarán patrones y relaciones.

A partir de aquí podemos identificar una gran variedad de tipos de Graph y de estructuras: Simple, multi, random, connected, disconnected, etc. Al final del post os dejaré algunos links interesantes por si queréis profundizar.

Pattern Matching

Dentro de este concepto encontramos todo aquello que realicemos para la búsqueda de patrones subgráficos, formas, filtros, etc.

Se basa principalmente en las posibilidades que nos ofrece el lenguaje Cypher (desarrollado por Neo4j) o la versión opensource del mismo (OpenCypher).

Algunos productos y fabricantes que soportan Opencypher.

Graph Analysis

Se refiere al conjunto de algoritmos que podemos aplicar en Graph analysis, algunos de ellos son los siguientes:

  • Neighborhood Search: Proporciona los ID’s de los nodos que son alcanzables desde un nodo inicial y con una profundidad determinada.
  • Shortest Path: Proporciona el camino más corto desde un nodo inicial al resto de nodos. Tiene la variante one to one y one to all.
  • Strongly Connected Components: Permite determinar que nodos de un graph están conectados entre si y con que peso, para ello analiza si desde un nodo se alcanzan todos los demás nodos y en base al resultado categoriza la intensidad de la conexión de cada nodo.

Para las próximas entrada del blog os enseñaré en SAP Hana Graph:

  • Un ejemplo con opencypher de una recomendación de producto. (Pattern Matching)
  • Un ejemplo de graph analysis empleando algoritmos.

Os dejo algunos links interesantes.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.