BBVA AI Factory | Explorando la analítica de grafos con mercury-graph - BBVA AI Factory
EN
Open-source

Explorando la analítica de grafos con mercury-graph

20/01/2025
El análisis de grafos consiste en explorar las relaciones entre datos de manera estructurada. En BBVA hemos desarrollado una librería en Python diseñada para que los usuarios puedan aplicar algoritmos de grafos escalables sin depender de un framework específico.

La solución a los retos empresariales complejos no está en los datos aislados, sino en las conexiones que los relacionan. Tanto si se analizan redes sociales como patrones de comportamiento financiero, estas relaciones a menudo contienen los datos más relevantes. Al estudiar estas conexiones, emergen patrones y tendencias que no son visibles al examinar datos aislados.

Para descubrir estos patrones, recurrimos a la analítica de grafos. Mercury-graph es una librería de código abierto que simplifica y acelera dicho análisis. Ofrece una API que permite a los usuarios trabajar con algoritmos escalables sin estar atados a un framework específico.

Independientemente de que los datos estén en Pandas, PySpark, NetworkX o GraphFrames, mercury-graph abstrae las complejidades y proporciona una interfaz consistente, similar a la de Scikit-learn, que facilita el análisis.

Al unir la ciencia de datos con la teoría de grafos, mercury-graph permite a desarrolladores y analistas centrarse en extraer conocimiento valioso, sin preocuparse por los aspectos técnicos de los frameworks subyacentes.

¿Qué es la analítica de grafos?

El análisis de grafos se basa en examinar las relaciones entre puntos de datos, representados como nodos (entidades) y aristas (conexiones). Esta estructura ayuda a identificar patrones que el análisis de datos tabular tradicional no logra captar. Los grafos son herramientas potentes porque modelan redes complejas de una forma intuitiva y natural.

Figura 1. Los elementos que conforman a los grafos.
Figura 1. Los elementos que conforman a los grafos.

La representación de los datos en forma de grafos ayuda a las organizaciones a desvelar información relevante que no es evidente a simple vista. La analítica de grafos es ideal para responder preguntas como:

  • ¿Quiénes son los actores más influyentes en una red?
  • ¿Cuáles son los caminos más cortos entre nodos clave?
  • ¿Cómo se forman y evolucionan las comunidades?

¿Por qué usar mercury-graph?

Aunque el análisis de grafos tiene un gran potencial, las herramientas existentes presentan limitaciones. Cambiar entre frameworks como Pandas, NetworkX y PySpark puede ser ineficiente y complejo. Mercury-graph elimina estas barreras al automatizar las conversiones entre frameworks en segundo plano. Estas conversiones siguen siendo necesarias, pero mercury-graph las gestiona de manera invisible, permitiendo a los usuarios centrarse en sus análisis sin preocuparse por la gestión manual de datos en diferentes formatos.

Esto significa que, independientemente del formato del grafo de entrada, mercury-graph realiza las conversiones necesarias para aplicar algoritmos escalables optimizados para frameworks específicos. Por ejemplo, si un algoritmo está diseñado para PySpark pero el usuario proporciona un grafo en formato NetworkX, la herramienta se encargará automáticamente de esta transformación. Este enfoque mejora significativamente la experiencia del usuario, liberándolos de la carga técnica.

Mercury-graph destaca también por su API unificada, que permite cambiar entre representaciones de grafos y algoritmos sin reescribir el código. Su diseño agnóstico ofrece flexibilidad, ya que funciona con datos en Pandas, PySpark o NetworkX.

Además, sus algoritmos aprovechan tecnologías como Numba para cálculos rápidos y PySpark para procesamiento distribuido. Esta combinación simplifica los flujos de trabajo y hace que tanto principiantes como expertos puedan adoptar fácilmente la herramienta.

Para comenzar a usar mercury-graph, solo tienes que:

pip install mercury-graph

Submódulos de mercury-graph

Mercury-graph se organiza en cuatro submódulos clave:

Core

Este submódulo constituye la base de mercury-graph. Permite a los usuarios crear, importar y manipular grafos independientemente de la fuente de datos. Los grafos se pueden construir a partir de Pandas o PySpark DataFrames, o directamente a partir de objetos NetworkX o GraphFrames. Esta flexibilidad garantiza que los usuarios puedan pasar de un framework a otro sin necesidad de refactorizar su código.

from mercury.graph.core import Graph
g = Graph(data=df_edges, nodes=df_nodes)

Embeddings

El submódulo de embeddings se centra en generar representaciones vectoriales de los nodos de un grafo. Técnicas como Node2Vec permiten a los usuarios capturar la estructura relacional de los grafos, traduciéndolos a espacios de menor dimensión adecuados para tareas de aprendizaje automático. Estas representaciones pueden utilizarse para agrupar, clasificar o detectar similitudes.

from mercury.graph.embeddings import SparkNode2Vec
n2v = SparkNode2Vec(
dimension=100,
num_paths_per_node=4,
num_epochs=10,
w2v_max_iter=10,
w2v_min_count=1
)
n2v.fit(g)
# Show embeddings
n2v.embedding().show(5, truncate=False)

Aprendizaje automático (ML)

Este submódulo proporciona un conjunto de algoritmos de aprendizaje automático adaptados al análisis de grafos. Entre las principales implementaciones se incluyen la detección de comunidades de Louvain para dividir los grafos en comunidades, la agrupación espectral (spectral clustering en inglés) para agrupar nodos y los paseos aleatorios (random walks) para analizar cómo se propaga la información a través de una red.

from mercury.graph.ml import LouvainCommunities
lc = LouvainCommunities()
lc.fit(g)
# Get communities
lc_df = lc.labels_.toPandas()
lc_df

Visualización (Viz)

El submódulo de visualización, en el que destacan herramientas como Moebius, permite la exploración interactiva de grafos. Los grafos de gran tamaño pueden visualizarse y manipularse dinámicamente, lo que facilita la identificación de nodos, aristas y patrones clave dentro de redes complejas.

M = Moebius(g)
M.show('node_id')

El proyecto Mercury en BBVA

Mercury-graph forma parte de una iniciativa más amplia conocida como Mercury, desarrollada por BBVA AI Factory. Mercury es una librería colaborativa destinada a simplificar y acelerar los flujos de trabajo de ciencia de datos en toda la organización. Concebido inicialmente como un proyecto de código interno, Mercury ha evolucionado hasta convertirse en una solución de código abierto que democratiza el acceso a herramientas de analítica avanzada.

El ecosistema Mercury ofrece una serie de módulos de procesamiento de datos, aprendizaje automático y visualización, con mercury-graph como componente de análisis de grafos. BBVA empodera a los científicos de datos y desarrolladores de todo el mundo contribuyendo a la comunidad de código abierto, fomentando la innovación y la colaboración.

Para más información sobre el proyecto Mercury, visita la página de Mercury en BBVA AI Factory y el GitHub de BBVA.