El documento describe cómo el análisis de gráficos puede usarse para detectar fraude de manera más efectiva que los métodos tradicionales. Explica cómo modelar transacciones fraudulentas, usuarios y sus conexiones como un grafo para revelar patrones sospechosos como anillos de fraude y usuarios vinculados. También presenta algoritmos gráficos como Union Find que pueden utilizarse para encontrar conjuntos de nodos conectados y posibles redes de fraude.
2. github.com/maxdemarzi
About 200 public repositories
Max De Marzi
Neo4j Field Engineer
Sobre
Mi !
01
02
03
04
maxdemarzi.com
@maxdemarzi
About 160 blog posts
5. Tipos de fraude
• Fraude de Tarjeta de Credito
• Fraude de Comerciantes
• Anillos de Fraude
• Fraude de Seguro
• Fraude de Comercio Electrónico
• Fraude que aún no conocemos…
6. “No considere la tecnología
tradicional adecuada para
mantenerse al día con las
tendencias criminales.”
Market Guide for Online Fraud Detection, April 27, 2015
9. Análisis del
comportamiento de
navegación y patrones
sospechosos.
Centrado en el
Dispositivo
Análisis de los usuarios
y sus dispositivos
1.
Centrado en la
Navegación
2.
Centric en la
Identidad
Análisis del
comportamiento de
anomalías por canal.
3.
Computadora,
Teléfonos Móviles
Direcciones IP
y ID del
Usuario
Transacción Comparativa
Verificación de Identidad
Métodos Tradicionales de
Detección de Fraude
10. Incapaz de detectar:
• Anillos de Fraude
• Direcciones IP falsas
• Dispositivos
secuestrados
• Identidades Sintéticas
• Identidades Robadas
• Y más…
Debilidades
ANÁLISIS DISCRETO
Métodos Tradicionales de
Detección de Fraude
Centrado en el
Dispositivo
Análisis de los usuarios
y sus dispositivos
1.
Centrado en la
Navegación
Análisis del
comportamiento de
navegación y patrones
sospechosos.
2.
Centric en la
Identidad
Análisis del
comportamiento de
anomalías por canal.
3.
11. ANÁLISIS CONECTADOANÁLISIS DISCRETO
Entre Canales
Análisis del
comportamiento de
anomalías
correlacionado entre
canales.
4.
Enlace de
Entidades
Análisis de las
relaciones para detectar
el crimen organizado y
la colusión.
5.
Detección de Fraude Aumentada
Centrado en el
Dispositivo
Análisis de los usuarios
y sus dispositivos
1.
Centrado en la
Navegación
Análisis del
comportamiento de
navegación y patrones
sospechosos.
2.
Centric en la
Identidad
Análisis del
comportamiento de
anomalías por canal.
3.
15. Patrones de Subgrapho
Ni: numero de vecinos de un nodo
Ei: numero de relaciones en un subgrapho
Wi: “peso” total the una subgrapho
λw,i: mayor variabilidad de los "pesos" de
un subgrafo
29. John y Sheila están compartiendo un
número de teléfono
CREATE (phone1:Phone {number:"312-876-5309"})
CREATE (john)-[:HAS_PHONE]->(phone1)
CREATE (sheila)-[:HAS_PHONE]->(phone1)
30. John y Karen comparten un número
de identificación
CREATE (ssn1:Identification {number:"000-91-7434", type:"SSN"})
CREATE (john)-[:HAS_ID]->(ssn1)
CREATE (karen)-[:HAS_ID]->(ssn1)
31. Todos comparten la misma dirección
CREATE (ad:Address {line1:"175 N. Harbor Drive",
city:"Chicago", state:"IL", zip:”60601"})
CREATE (john)-[:HAS_ADDRESS]->(ad)
CREATE (karen)-[:HAS_ADDRESS]->(ad)
CREATE (sheila)-[:HAS_ADDRESS]->(ad)
35. Algoritmo de grafico
Union Find
Encuentra conjuntos donde todos los nodos
pueden llegar a todos los demás nodos
•Detección de fraude
•Deduplicación
•Resolución de la entidad
Consulte la publicación del blog
“The Real Property Graph”
36. Algoritmo de grafico
Union Find
CALL algo.unionFind.stream(
'MATCH (p:User) RETURN id(p) as id',
'MATCH (p1:User)-->()<--(p2:User)
RETURN id(p1) as source, id(p2) as target',
{graph:'cypher'}
) YIELD nodeId, setId
RETURN algo.asNode(nodeId).name AS user, setId
40. Llamaron desde el mismo número
MATCH (john:User {name:"John"}),
(sheila:User {name:"Sheila"})
CREATE (ani:ANI {number:"312-666-1234"})
CREATE (ani)-[:CALLED]->(john)
CREATE (ani)-[:CALLED]->(sheila)
41. Ingresaron usando el mismo
navegador
MATCH (john:User {name:”John"}),
(robert:User {name:”Robert"})
CREATE (fg:Browser {fingerprint:”asdf7373jsdf3rw"})
CREATE (fg)-[:ACCESSED]->(john)
CREATE (fg)-[:ACCESSED]->(robert)
43. Algoritmo de grafico Union Find otra vez
CALL algo.unionFind.stream(
'MATCH (p:User) RETURN id(p) as id',
'MATCH (p1:User)<-[:ACCESSED]-()-[:ACCESSED]->(p2:User)
RETURN id(p1) as source, id(p2) as target',
{graph:'cypher'}
) YIELD nodeId, setId
RETURN algo.asNode(nodeId).name AS user, setId
47. Almacene los resultados de Union Find
CALL algo.unionFind(
'MATCH (p:User) RETURN id(p) as id',
'MATCH (p1:User)--()--(p2:User)
RETURN id(p1) as source, id(p2) as target',
{graph:'cypher'}
) YIELD setCount
48. Veamos estas particiones
MATCH (n:User)
RETURN n.partition, COUNT(*) AS members,
COLLECT(n.name) AS names
ORDER BY members DESC
56. // The last week of John's transactions
MATCH p = (n:User {name:"John"})-[:MAKES]->(tx)
WHERE tx.date > datetime() - duration('P7D')
RETURN p
Transacciones de John la semana pasada
58. Transacciones con tarjeta de crédito como
una lista
MATCH (u:User)
WHERE SIZE((u)-[:PREV_TX]->()) = 0 AND SIZE((u)-[:MAKES]->()) > 0
WITH u
LIMIT 100
MATCH (u)-[r:MAKES]->(tx)
WITH u, tx ORDER BY tx.date DESC
WITH u, COLLECT(tx) AS transactions, HEAD(COLLECT(tx)) AS last
CREATE (u)-[:PREV_TX]->(last)
FOREACH (n IN RANGE(0, SIZE(transactions)-2) |
FOREACH (next IN [transactions[n]] |
FOREACH (prev IN [transactions[n+1]] |
CREATE (next)-[:PREV_TX]->(prev)
)))
59. // The last week of John's transactions
MATCH p = (n:User {name:"John"})-[:PREV_TX*]->(tx)
WHERE NONE (tx IN tail(nodes(p))
WHERE tx.date <= datetime() - duration('P7D'))
RETURN p
Transacciones de John la semana pasada
66. Siguiendo los pasos en la arena
// All the transactions marked fraudulent in the last week
// and the transactions that came before them
// up to two weeks ago.
MATCH p = (fraud:Fraudulent)-[:PREV_TX*]->(tx)
WHERE fraud.date > datetime() - duration('P7D')
AND NONE (tx IN tail(nodes(p))
WHERE tx.date <= datetime() - duration('P14D'))
RETURN p
71. Encuentra a los comerciantes sospechosos
// Top 5 common merchants from fraudulent transaction chains
up to two weeks ago.
MATCH p = (fraud:Fraudulent)-[:PREV_TX*]->(tx)
WHERE fraud.date > datetime() - duration('P7D')
AND NONE (tx IN tail(nodes(p))
WHERE tx.date <= datetime() - duration('P14D'))
WITH nodes(p) AS transactions
UNWIND transactions AS tx
WITH DISTINCT tx
MATCH (tx)-[:AT_MERCHANT]->(merchant)
RETURN merchant.name, COUNT(*) AS txCount
ORDER BY txCount DESC
LIMIT 5
75. Transferencia
de Dinero
Compras Servicios
Bancarios Base de Datos
Relacional
Desarrollar Patrones
Equipo de Ciencia de Datos
+ Bueno para análisis discreto
– Sin visión holística de las relaciones de datos
– Velocidad de consulta lenta para conexiones
76. Transferencia
de Dinero
Compras Servicios
Bancarios Base de Datos
Relacional
Lago de
Datos
+ Bueno para “Map Reduce”
+ Bueno para cargas de trabajo analíticas
– Sin visión holística
– Cargas de trabajo no operacionales
– Procesos de semanas a meses
Desarrollar Patrones
Equipo de Ciencia de Datos
Datos del
comerciante
Datos
de
Crédito
Otra
Información
77. Transferencia
de Dinero
Compras Servicios
Bancarios
Tiempo Real
Neo4j
Cluster
DETECTAR
Flujo de Transacciones
RESPONDER
Alertas y
Notificaciones
CARGAR DATOS RELEVANTES
Base de Datos
Relacional
Lago de
Datos
Visualización
Patrones de Ajuste
Fino
Desarrollar Patrones
Equipo de Ciencia de Datos
Datos del
comerciante
Datos
de
Crédito
Otra
Información
78. Transferencia
de Dinero
Compras Servicios
Bancarios
Tiempo Real
Neo4j
Cluster
DETECTAR
Flujo de Transacciones
RESPONDER
Alertas y
Notificaciones
CARGAR DATOS RELEVANTES
Base de Datos
Relacional
Lago de
Datos
Visualización
Patrones de Ajuste
Fino
Desarrollar Patrones
Equipo de Ciencia de Datos
Datos del
comerciante
Datos
de
Crédito
Otra
Información
Conjunto de
datos
utilizado para
explorar
nuevas ideas
80. Nosotros hablamos acerca de…
Los Estafadores de Hoy
Ejemplos:
Anillos de fraude
Prueba de Tarjeta de Crédito
Origen del Fraude
Cómo Neo4j encaja en una Arquitectura
81. Detectar y prevenir fraudes en tiempo real
Análisis y transacciones de riesgo
crediticio más rápidos
Reduce las devoluciones de cargo
Adaptarse rápidamente a nuevos métodos
de fraude
¿Por qué Neo4j? ¿Quién lo está usando?
Las Instituciones Financieras usan Neo4j para:
FINANCE
Empresas de
Tarjetas de Crédito
Comerciantes
83. Registros de tamaño fijo en
dos formaciones
“Uniones” desde la creación
A través de esta estructura
de datos
Acceso directo en lugar de
búsquedas1
2
3
4
La Receta Secreta de Neo4j
Saltamos de la colección de nodos a la
colección de relaciones y otra vez a nodos