Home
Gostei da ideia no artigo, DevOne. Se você estruturá-lo um pouco melhor, trocando o uso do pronome de primeira pessoa pelo impessoal, consegue transmitir a ideia de maneira mais formal.
Mas, tranquilo! Entendo que foi um relato em que você mostrou a importância da interpretação de evidências usando uma abordagem mais adequada, explorando o potencial de uma dessas redes complexas, os grafos.
Se preferir uma ferramenta para ajudá-lo na composição, dê uma olhada nesse artigo aqui no Tabnews que sugere um editor markdown com alguma análise do seu texto em tempo real. Ainda não suporta equações e expressões avançadas para desenho.
Carregando seu texto nesse assistente simples, ele vai te revelar algumas sugestões de melhoria, como encurtar frases muito longas, por exemplo.
Técnicas e estudos sobre prevenção de fraudes em instituições bancárias
Aparentemente um título jornalístico, mas de fato sua atenção é bem vinda. Pode-se aprender muito com esse "artigo".
Ontem recebi um email de uma das newsletters em que estou incrito. Uma das chamadas possui o seguinte título: "How Robinhood uses Graph Algorithms to prevent Fraud". De início, duvida-se qual o potencial dos grafos na prevenção de fraudes. Para os interessados, este é o link do artigo.
Reconhecida a ignorância no assunto e o desejo de aprender além dos conceitos básicos do resumo, li o artigo. Percebia que, à cada novo parágrafo, uma nova sinapse ocorria no meu cérebro. Era quase possível sentir a conexão de vários neurônios e seus pulsos eletroquímicos. Pulsos passando pelo canal axiônico ao enviar informações para outro neurônio. Na dificuldade de reter esse conteúdo para fins próprios, a seguir encontra-se uma síntese do conhecimento adquirido neste estudo.
Finalidade
Tudo começa com uma necessidade. Uma necessidade de previnir fraudes contra uma instituição bancária. Classifica-se, neste caso, três tipos comuns:
- Identity Fraud (impersonar outro usuário)
- Account Takeover (tomar controle sobre uma conta e remover todo o recurso financeiro ali existente)
- First-Party fraud (um ótimo exemplo é fazer o famoso empréstimo, mas com intenções diretas em não pagar o recebido)
A partir de um problema, faz-se necessário pensar em uma solução. Para isso, destaca-se alguns pontos importantes sobre as fraudes:
- Quando uma fraude acontece, pode envolver múltiplas contas;
- É uma ação executada de maneira cordenada;
- Desta cordenação, contas pertencentes aos atacantes, com frequência compartilham alguns elementos em comum: IP, endereço, conta bancária, etc.
Esses pontos evidenciam o poder de empregar grafos para estruturar essas evidências. Nota-se que os atacantes (nós) que compartilham de informações em comun (arestas). Na teoria dos grafos, tais informações são consideradas edges, sendo possível construir uma estrutura de grafo abstrata. Como será visto no decorrer deste texto, os grafos são de extrema efetividade quando lidando com informações de fraude. A instituição em questão também tem um post [1] bem completo sobre o assunto.
Dois algoritimos foram utilizados pela instituição:
Vertex-centric
Graph-centric
O primeiro funciona em tempo real. Já o graph-centric de forma offline, depois inserindo os resultados em uma base online para o uso.
Algoritmo vertex-centric
O algorítimo vertex-centric ajuda a quantificar a probabilidade de um usuário ser um ator malicioso. Inicia-se o algoritimo a partir de um seed (geralmente um ator malicioso já conhecido). Depois, expandindo no grafo a partir dele. Desta forma identifica-se vizinhos com potecial perigoso. Tais elementos compartilham de informações do nosso ator malicioso usado como seed. Já os que ficam "mais distantes" têm uma menor probabilidade de serem atores maliciosos (com base nesse algoritimo). Não compartilham de muitas característica de nosso já conhecido atacante.
Combinado com outros sinais de fraude, esse algoritimo se torna muito efetivo em descobrir e mitigar ataques emergentes.A aplicação em tempo real é notável. Considere a ocasião em que se recebe uma transação de um usuário. Pode-se, então, analisar o quanto tal transação se parece com uma transação maliciosa. Exitem outras técnicas como Temporal Motifis, que são vistas mais adiante neste texto.
Algoritmo graph-centric
O algoritimo graph-centric, por sua vez, ajuda a encontrar clusteres (ou agrupamento) em um grafo. Tais agrupamentos compartilham comportamentos potenciais para uma dada finalidade, como fraudes. Semelhante a eleger um grupo de pessoas, separando-as por histórico criminal. Acredita-se que um indivíduo com histórico criminal extenso é mais propensa a cometer outro crime. É diferente de alguém com um histórico impecável. Deixa-se de lado, por enquanto, todos os outros fatores psicológicos, sociais e entre outros, analisando apenas o histórico em si.
Desta forma, é possível identificar grupos potenciais que exigem mais vigilância durante transações. Aplicando o algoritmo anterio, pode-se obter resposta com níveis de probabilidade. Combinando ambas as técnicas e sinais extras, auxiliam no crivo para apontar possíveis transações maliciosas.
Outros algoritimos dignos de nota são Connected Components e Page Rank. Dentre estes, o Page Rank executa a função de medir a importância ou influência de cada nó (node) dentro de um grafo. Para isso, baseia-se no número e qualidade das conexões. Assemelha-se ao processo natural de julgar a índole de um indivíduo com base nas sua amizades próximas. Considere o caso de uma conta receber transações de um ator malicioso. Mesmo não executando nenhuma das três fraudes citadas anteriormente, ela poderia ser considerada como um atacante "passivo" (nomenclatura minha)?
Para lidar com tais conjuntos de dados, deve-se bases de dados construídas para lidar com grafos. Dependendo da base de dados e do seu poder de controle monetário, é possível executar operações como 12,8 BILHÕES de hopes POR SEGUNDO [2].
Em outras palavras, a partir de um nó, pode-se acessar outros nós nesta velocidade. Este número é absurdamente grande. Resultados mais impressionantes podem ser conferidos em [3].Os grafos nativos usam a estratégia de pointer-hopping para acessar seus nós vizinhos. Nesta situação, cada nó tem um endereço físico na memória RAM, carregado durante o load e não durante uma query. Torna o processo mais efciente. Neste caso, o acesso direto aos nós se dá de maneira diferente de um banco de dados relacional como mySQL.
No banco de dado relacional é necessário realizar um row scan para encontrar o item com algum algoritmo de busca. Com essa informação, busca pela foreign key relacionada em uma "base de indices". Termina indicando o vizinho que se deseja buscar.
Por isso existem bancos de dados que são "grafos nativos" como por exemplo:
- Neo4J
- ArangoDB
- OrientDB (possuído agora pela SAS)
Tornam possível lidar com grafos de uma maneira eficiente. Mesmo não sendo tão trivial lidar com uma modelagem de dados em grafo de larga escala.
Além do mais eles costuma ter de forma integrada alguns algoritimos prontos como:
- Path finding
- Similarity
- Community Detection
- Entre outros
Outra técnica digna de nota é a Temporal Motif Network. Fica à cargo do leitor procurar mais detalhes em artigo [4]. Em resumo, a Temporal Motif Network é definida como um conjunto de nós que se interagem com os demais em um curto período de tempo.
No friendship detection (detecção de amizade), a técnica traz melhores resultados comparada a outras heurísticas gerais como por exemplo Jaccard e Adamic-Adar. É capaz de identificar vendors com uma alta taxa de acerto e observar padrões notáveis em Motifis raros, como ciclos temporais.
Esses chamados "ciclos temporais" são raros, segundo o estudo (A -> B -> C -> A). Em uma das análises foi encontrado um padrão relevante nas notas de pagamento, como pessoas jogando poker e trocando fundos.
Então é possível observar como a base é muito importante quando se fala em tecnologia.
Viu-se aqui alguns algoritimos e técnicas complexas. Quase todas se baseiam na estrutura de dados na forma de grafos. Viu-se também um pouco sobre técnicas que instituições financeiras utilizam para cada vez mais se proteger contra fraudes.
Uma coisa que percebo cada vez mais é que o termo Machine Learning tem sido cada vez mais "endeusado". Tudo não passa de um conjunto de técnicas, cálculos e algoritimos. No fim, retornam um resultado baseado no padrão encontrado nas entradas fornecidas.
Não digo que é simples, mas que é algo que precisa ser estudado com todo cuidado etapa por etapa. Como diz Pierluigi Piazzi:
Construir o prédio por etapas. Quando chegar no último andar não seja surpreendido com um alicerce ruim, que, por consequência, leve todo o prédio abaixo.
Espero, com isso, compartilhar um pouco do que aprendi sobre prevenção de fraudes em instituições financeiras.
Palavras-chave: #bank #graph #neo4j #algorithms #fraud prevention #financial instituition #programming #cs #computer science #keeplearning #cornell university #arxvi