Seriam Grafos e Ciência de Dados uma Boa Combinação?

Carolina Dias
6 min readDec 23, 2021

--

Uma breve introdução sem códigos e sem cálculos mirabolantes sobre a aplicação de grafos na Ciência de Dados

Imagem por metamorworks em Getty Images

Antes de mais nada, o que é um grafo?

Por mais que você nunca tenha ouvido falar de grafos (isso mesmo, grafos, e não gráficos), eles estão presentes no nosso dia-a-dia, direta ou indiretamente. Quantas vezes já não vimos uma representação de uma rede social onde as pessoas são ligadas por linhas se elas forem amigas no Facebook, por exemplo?

Modelando Redes Sociais com Grafos (Imagem por vege em Getty Images)

Essa “network” é também a representação de um grafo. Formalmente falando, um grafo é formado por um conjunto de vértices e um conjunto de arestas que ligam esses vértices. Essas arestas podem ter algumas características como serem múltiplas ou terem algum tipo de orientação (representada por uma seta).

Esse objeto formado por esses conjuntos é também uma estrutura de dados poderosíssima, capaz de modelar os mais variados problemas do nosso cotidiano. Além do exemplo das redes sociais, a tarefa do Google Maps também pode ser modelada por meio de grafos, com os vértices representando cidades, por exemplo, e as arestas representando um possível caminho entre elas. Relacionado a isso existe o famoso Problema do Caixeiro-Viajante que busca encontrar a menor rota para percorrer uma série de cidades passando apenas uma vez por cada uma e retornando à cidade de origem.

Imagem por NirutiStock em Getty Images

No contexto atual da pandemia, podemos utilizar grafos para modelar a transmissão do vírus e calcular diversos parâmetros sobre isso, como a velocidade de transmissão da doença e seu alcance. Na verdade, é imensa a quantidade de problemas que podem ser representados por grafos e, muitas vezes, traduzi-los para essa linguagem mais visual traz um maior entendimento intuitivo para o ser humano, nos possibilitando encontrar padrões e relações em dados que não ficavam claros ao utilizarmos uma abordagem mais linear.

Sim, mas onde entra a ciência de dados nessa história?

Em um primeiro momento, é imediato pensar no apelo visual que os grafos trazem para problemas complexos, e como na ciência de dados não estamos interessados apenas em códigos, mas também em como transmitir uma história para um público diverso, os grafos podem ser uma poderosa ferramenta auxiliar para o storytelling, lembrando até um mind map mais complexo. Por exemplo, podemos querer mostrar certo um fluxo de informações que se interligam e usaríamos um grafo para isso!

Storytelling com Grafos (Imagem por DAPA Images)

Mas não só de aparências vivem os grafos. Existe toda uma área da matemática e computação, a Teoria dos Grafos, que se debruça em problemas bastante complexos os envolvendo. E é nesse contexto que podemos aliar à Machine Learning para obtermos uma ferramenta poderosa.

Na aprendizagem não-supervisionada em Machine Learning, quando necessitamos agrupar certos dados através de similaridades, podemos usar cálculos em grafos para facilitar a busca realizada pelo modelo. Podemos até mesmo encontrar as relações existentes em cada cluster de dados de uma forma mais direta e mais visualmente “palatável”.

No aprendizado supervisionado, como já sabemos o que cada dado deve significar, podemos utilizar os algoritmos de teoria dos grafos para encontrar as relações entre esses dados, nos auxiliando, até mesmo, no processo de criação de novas variáveis, o feature engineering.

Quem nunca, ao buscar algo sobre Deep Learning, não se deparou com a representação a seguir de uma Rede Neural? Mais uma vez temos um grafo em ação!

Representação Gráfica de uma Rede Neural Artificial (Icon por Flaticon)

O campo de Processamento de Linguagem Natural é outro que se beneficia imensamente ao utilizar uma abordagem com grafos. Em uma determinada frase podemos enxergar as palavras como os vértices e as relações semânticas entre elas como as arestas. Esse tipo de grafo também é conhecido como “knowledge graph”, ou grafo de conhecimento, que mostra uma relação existente entre itens diversos com o objetivo de extrair a maior quantidade de informação possível.

Cada unidade semântica pode ser vista como um vértice e os relacionamentos entre essas palavras como as arestas de um grafo

Até já existe toda uma abordagem à Ciência de Dados chamada Graph Data Science que busca extrair os insights dos dados através de suas relações e ligações entre si, auxiliando nas previsões realizadas. A principal ferramenta técnica utilizada nesse approach é o Neo4j, que é um poderoso software de base de dados orientada a grafos, um tipo de banco de dados não-relacional. Ele é utilizado nos mais variados tipos de análises em dados estruturados em grafos e auxilia em algoritmos de Machine Learning para esses dados.

A abordagem da Graph Data Science ainda é pouco explorada se comparada a outras técnicas em Ciência de Dados, ainda com poucos artigos na área, porém com enorme potencial. Cada vez mais esse universo de aplicações dos grafos vêm crescendo e se desenvolvendo amplamente, e para cada um dos exemplos acima já existem técnicas e algoritmos próprios para sua resolução.

Exemplo de Uso de Graph Data Science: Detecção de Fraude

É estimado que só no Brasil a fraude em cartões de crédito gere um prejuízo de R$ 1,8 bilhão por ano. E cada vez mais as pessoas que cometem a fraude estão ficando mais difíceis de se detectar, com crimes cada vez mais sofisticados e que ficam difíceis de se diferenciar das transações legítimas. Mas mesmo que essas transações se pareçam com transações verdadeiras, podemos olhar pras relações entre os dados de quem realizou a fraude para decidir se eles estão ou não associados a atividades criminosas. É aí que entra uma análise orientada a grafos utilizando bancos de dados de grafos. Mas como isso é feito?

Colocamos todos os dados que usamos normalmente só que agora em um banco de dados orientado a grafos. Informações como o id do cliente, o nome, endereço, e etc. Com isso, podemos ter alguns parâmetros básicos para identificar o que se parece com fraude, como e-mails ou números de telefones duplicados, por exemplo. Mas isso é mais útil quando os fraudadores deixam essas pistas para trás, o que não ocorre sempre.

Agora podemos fazer queries, ou seja, buscas nos grafos usando esses atributos dados para investigar. O algoritmo irá nos retornar alguns grupos ou clusters de clientes ou transações que estão muito próximas e que interagem umas com as outras, podendo assim, classificar tal grupo como fraudulento. Com isso, os cientistas de dados podem determinar certos scores nesses grafos que irão classificar se tal transação é ou não fraudulenta, podendo, assim, automatizar todo esse processo e impedir em tempo real que a fraude ocorra.

Imagem adaptada do Neo4j Blog

Para isso podem ser usados bancos de dados como o Amazon Neptune da AWS. Essa abordagem pode ser muito interessante para instituições financeiras e que lidam com pagamentos em geral, que são as que mais sofrem prejuízos anuais com as fraudes. E de acordo com uma pesquisa da Forbes de 2017, bancos de dados orientados a grafos reduzem a quantidade de erros, tanto evitando de marcar fraude onde não tem como não deixando passar fraudes, facilitam o achado das fraudes e diminuem os custos gerais desta investigação de fraudes, fazendo com que isso seja uma ótima solução paras as empresas.

Espero que essa introdução tenha atiçado sua curiosidade sobre o fascinante universo dos grafos! É evidente que esse é um tema bastante profundo e que merece ser explorado e mais difundido entre os entusiastas de Ciência de Dados.

Qualquer dúvida, dica ou sugestão ficarei feliz em recebê-las!

--

--

Carolina Dias

A machine learning engineer learning how machines learn and a mathematician bad at math