Executando verificação de segurança...
5

🏦 Técnicas e estudos sobre prevenção de fraudes em instituições bancárias.

Técnicas e estudos sobre prevenção de fraudes em instituições bancárias.

Um título bem jornalístico, eu diria, mas de fato preciso de sua atenção, acredito que podemos aprender muito com esse "artigo"

Ontem recebi um email de uma das newsletters em que estou incrito com o seguinte título: "How Robinhood uses Graph Algorithms to prevent Fraud".

Para os interessados, esse é o link do artigo: https://blog.quastor.org/p/how-robinhood-uses-graph-algorithms-to-prevent-fraud

Logo de cara eu pensei, mas o que grafos têm haver com prevenção de fraudes.

Então, reconhecendo minha ignorância no assunto junto com meu desejo louco de aprender cada vez mais, cliquei no artigo para aprender mais um assunto interessante.

Comecei ler o artigo e confesso que a cada novo parágrafo que lia uma nova sinapse acontecia no meu cérebro, eu quase podia sentir a conexão de vários neurônios e seus
pulsos eletroquímicos sendo passados pelo canal axônio e enviando informações para outro neurônio.

Então, não podia reter esse conteúdo dentro da minha cabeça, então aqui estou eu e espero conseguir compartilhar conhecimento com vocês.

Tudo começa com uma necessidade.
Necessidade essa de previnir uma instituição bancária contra fraudes.

Logo de cara, temos 3 tipos comuns de fraudes:

  • 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)

Agora que temos um problema para resolver, precisamos pensar em uma solução e para isso vamos destacar alguns pontos importantes sobre fraudes.

Quando uma fraude acontece, normalmente involve múltiplas contas e é executada de maneira cordenada.
Devido essa cordenação, conta pertencentes aos atacantes frequentemente compartilham de alguns elementos em comun como, mesmo IP, endereço, conta bancária, etc.

Isso já nos traz uma luz sobre os algoritimos de grafo, pois se pensarmos um pouco iremos perceber que se temos atacantes (vertices) que compartilham de informações em comun (edges),
temos quase que uma estrutura de grafo abstrata.

A propósito, como iremos ver no decorrer do meu texto, os grafos são extremamente efetivos atacando esse tipo de fraude.

A instituição em questão também tem um post sobre isso bem completo: https://newsroom.aboutrobinhood.com/preventing-fraud-at-robinhood-using-graph-intelligence

Dois algoritimos foram utilizados pela instituição:

  • Vertex-centric
  • Graph-centric

Sendo que o algoritimo vertex-centric em tempo real e o graph-centric de forma offline e depois inserindo os resultados em uma base online para o uso.

O algorítimo vertex-centric nos ajuda a quantificar a probabilidade de um usuário ser um ator malicioso.
Nós iniciamos o algoritimo a partir de um seed (geralmente um ator malicioso já conhecido) e vamos expandindo no grafo a partir dele.
Dessa forma identificamos vizinhos potencialmente perigosos pois basicamente compartilham de muitas 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) pois 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.

Sendo assim muito interessante seu uso em tempo real, pois, supondo que recebemos uma transação de um usuário, podemos analisar o quanto essa transação se parece com uma transação maliciosa.
Além disso exitem outras técnicas como Temporal Motifis, que iremos ver um pouco logo mais.

O algoritimo graph-centric por sua vez, nos ajuda a encontrar clusteres (ou grupos) em um grafo que compartilham de comportamentos estranhos e potencialmente fraudulosos.
É como se pegassemos um grupo de pessoas e fossemos separando por histórico criminal, acredito que concordamos que uma pessoa que têm um histórico criminal extenso é mais
suscetível a cometer outro ato criminoso do que alguém com um histórico impecável (nesse exemplo estamos deixando de lado todos os outros fatores psicológicos, sociais, ...., alanisando apenas o histórico em si).
Dessa forma é possível identificar grupos potencialmente arriscados, onde devemos, durante uma transação, por exemplo, sermos mais cautelosos e talvez utilizar do algoritimo anterior para ter uma
resposta em probabilidade mais acertiva e usar essas duas técnicas junto de outros sinais para determinar se aquela é uma transação maliciosa ou não com base nos resultados.

Além disso, outros algoritimos como:

  • Connected Components
  • Page Rank

São muito úteis também, apenas para destacar o Page Rank, esse algoritimo executa a função de medir a importância ou influência
de cada node dentro de um grafo baseado no número e qualidade da conexões dele.
É como se você julgasse a índole de alguém baseado nas suas amizades.

Pois, se uma pessoa recebe transações de um ator malicioso, mesmo essa pessoa não executando nenhuma das três fraudes citadas no começo ela pode ser considerada como
um atacante "passivo"? isso seria uma nomenclatura minha.

Para lidar com esse tipo de dados, temos que usar bases de dados feitas para podermos trabalhar diretamente com grafos, pois dependendo da base de dados e do seu poder monetário
é possível executar coisas como 12.8 BILHÕES de hopes POR SEGUNDO como diz esse artigo: https://dmccreary.medium.com/how-to-explain-index-free-adjacency-to-your-manager-1a8e68ec664a,
isso quer dizer que a partir de um node você pode acessar na casa de BILHÕES de outros nodes em um segundo, o que é assustadoramente absurdo.
Encontrei resultados ainda mais impressionantes aqui: https://graph500.org/.
Dado que os grafos nativos usam a estratégia de pointer-hopping para acessar seus nodes vizinhos, ou seja, cada node tem um endereço físico na memória RAM que é carregado durante o load e não durante uma query
para se tornar mais efciente. ou seja, você tem acesso direto aos nodes, diferentemente de um banco relacional como mysql, por exemplo, que utiliza de índices, então primeiramente você precisa fazer um row scan (mesmo usando
tecnicas com binary search) e então ao achar o item você usa uma foreign key para fazer um relacionamento que está em uma "base de indices" que por sua vez diz onde está o vizinho que você quer buscar.

Por isso temos bancos de dados que são "grafos nativos" como por exemplo:

  • Neo4J
  • ArangoDB
  • OrientDB (possuído agora pela SAS)

Esses bancos lhe dão a possibilidade de 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

Além disso, também há uma técnica muito interessante chamada de Temporal Motif Network.

Vou deixar aqui a referência de um artigo do arxiv: https://arxiv.org/abs/2301.07791

Uma Temporal Motif Network é definida como um set de nodes que interagem uns com os outros em um curto período de tempo.

Para friendship detection ("detecçã de amizade"), essa técnica traz melhores resultados que outra heurísticas gerais como por exemplo Jaccard e Adamic-Adar.
Também é capaz de identificar "vendors" com uma alta precisão e observar padrões interessantes em Motifis raros, como ciclos temporais.

Esses chamados "ciclos temporais" são raros, segundo o estudo (A -> B -> C -> A).
Mas, em uma das análises foi encontrado um padrão muito interessante 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.

Pois, vimos aqui alguns algoritimos e técnicas complexos mas que quase todos giram em torno da estrutura de dados em grafos.
Além disso aprendemos 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" quando tudo no final é um conjunto
de técnicas, cálculos e algoritimos que retornam um resultado baseado no padrão encontrado nas entradas fornecidas.
Não estou dizendo que é simples, mas que é algo que precisa ser estudado meticulosamente etapa por etapa, para assim, como diz Pierluigi Piazzi, construir o prédio por etapas para que quando chege no último
andar não esteja com um alicerce ruim e todo o prédio venha abaixo.

Espero ter compartilhado um pouco do que aprendi sobre prevenção de fraudes em instituições financeiras.

#bank #graph #neo4j #algorithms #fraudprevention #financialinstituition #programming #cs #computerscience #keeplearning #cornelluniversity #arxvi

Carregando publicação patrocinada...
1
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:

  1. Quando uma fraude acontece, pode envolver múltiplas contas;
  2. É uma ação executada de maneira cordenada;
  3. 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.

Fonte

Palavras-chave: #bank #graph #neo4j #algorithms #fraud prevention #financial instituition #programming #cs #computer science #keeplearning #cornell university #arxvi

0