SlideShare una empresa de Scribd logo
Detenga el fraude
complejo con Neo4j
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
¿Quiénes son los estafadores
de hoy?
Organizado en grupos
Identidades Sintéticas Identidades Robadas
Dispositivos secuestrados
¿Quiénes son los estafadores
de hoy?
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…
“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
Detenga el fraude complejo con Neo4j
Detección de Fraude
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
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.
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.
INVESTIGAR
Deuda Rotatoria
Numero de Cuentas
INVESTIGAR
Comportamiento Normal
Detección de Fraude con 

Análisis Discreto
Deuda Rotatoria
Numero de Cuentas
Comportamiento Normal
Patrón Fraudulento
Detección de fraude con 

Análisis Conectado
Detección de fraude con Graphos
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
Power Law Densidad
slope=2
slope=1
slope=1.35
Power Law Peso
Power Law Variabilidad de Peso
•Influencia
•Poder
•Posición Social
•Control
•Independencia
•Información
¿Qué nodos son importantes?
Famoso en el Grapho
•PageRank
•ArticleRank
•Betweenness Centrality
•Closeness Centrality
•Eigenvector Centrality
•Degree Centrality
•Harmonic Centrality
Centralidad
Agregue funciones gráficas a sus modelos
de detección de fraude existentes
Account ID Community
Size
Degree PageRank
1 31 15 10.7
3 4 12 3.4
5 98 9 11.2
•Influencia
•Relaciones
•Comunidades
Anillos de Fraude
Vamos a crear algunos usuarios
CREATE (john:User {name:"John"})

CREATE (sheila:User {name:"Sheila"})

CREATE (karen:User {name:"Karen"})
Sheila
Modelando un anillo de fraude como
un gráfico
John
Karen
John tiene algunas cuentas
CREATE (cc1:Card {number:"4012888888881881", balance: 493.23})
CREATE (ba1:Account {number:"85474584", balance:1322.30, type:”Checking"})
CREATE (us1:Loan {number:"63493639", balance:5000.00, type:"Loan”})
CREATE (john)-[:HAS_ACCOUNT]->(cc1)
CREATE (john)-[:HAS_ACCOUNT]->(ba1)
CREATE (john)-[:HAS_ACCOUNT]->(us1)
Sheila también tiene un número de
identificación
CREATE (ba2:Account {number:"25384738", balance:2983.99, type:"Checking"})
CREATE (cc2:Card {number:"5105105105105100", balance: 893.11})
CREATE (ssn2:Identification {number:"000-42-4329", type:”SSN"})
CREATE (sheila)-[:HAS_ACCOUNT]->(ba2)
CREATE (sheila)-[:HAS_ACCOUNT]->(cc2)
CREATE (sheila)-[:HAS_ID]->(ssn2)
Karen tiene un número de teléfono
CREATE (ba3:Account {number:"63493639", balance:3204.83, type:"Checking"})
CREATE (us2:Loan {number:"28372342", balance:5000.00, type:"Loan"})
CREATE (phone2:Phone {number:”312-606-0842"})
CREATE (karen)-[:HAS_ACCOUNT]->(ba3)
CREATE (karen)-[:HAS_ACCOUNT]->(us2)
CREATE (karen)-[:HAS_PHONE]->(phone2)
Sheila
John
Karen
TARJETA
DE
CRÉDITO
CUENTA
DE
CHEQUES
CUENTA
DE
CHEQUES
NÚMERO
DE
TELÉFONO
PRESTAMO NO
ASEGURADO
SSN 2
PRESTAMO NO
ASEGURADO
Nada sospechoso todavía
TARJETA
DE
CRÉDITO
CUENTA
DE
CHEQUES
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)
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)
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)
Sheila
John
Karen
TARJETA
DE
CRÉDITO
CUENTA
DE
CHEQUES
CUENTA
DE
CHEQUES
NÚMERO
DE
TELÉFONO
PRESTAMO NO
ASEGURADO
SSN 2
PRESTAMO NO
ASEGURADO
Comenzando a conectar los puntos ...
TARJETA
DE
CRÉDITO
CUENTA
DE
CHEQUES
DIRECCION
NÚMERO
DE
TELÉFONO
SSN 1
Agreguemos a Robert
CREATE (robert:User {name:"Robert"})
CREATE (ba4:Account {number:"8374927", balance:1273.39, type:"Checking"})
CREATE (cc3:Card {number:"378282246310005", balance: 134.72})
CREATE (robert)-[:HAS_ACCOUNT]->(ba4)
CREATE (robert)-[:HAS_ACCOUNT]->(cc3)
• Triangle Count
• Clustering Coefficients
• Connected Components (Union Find)
• Strongly Connected Components
• Label Propagation
• Louvain Modularity
• Balanced Triad (identification)
Community
Detection
• Degree Centrality
• Closeness Centrality
• CC Variations: Harmonic, Dangalchev,
Wasserman & Faust
• Betweenness Centrality
• Approximate Betweenness Centrality
• PageRank
• Personalized PageRank
• ArticleRank
• Eigenvector Centrality
• Euclidean Distance
• Cosine Similarity
• Jaccard Similarity
• Overlap Similarity
• Pearson Similarity
Centrality /
Importance
Similarity
Link
Prediction
• Adamic Adar
• Common Neighbors
• Preferential Attachment
• Resource Allocations
• Same Community
• Total Neighbors
Algoritmos Gráficos
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”
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
Algoritmo de grafico Union Find
Componentes Conectados
Conjunto
3
Conjunto
0
Sheila
John
Karen
TARJETA
DE
CRÉDITO
CUENTA
DE
CHEQUES
CUENTA
DE
CHEQUES
NÚMERO
DE
TELÉFONO
PRESTAMO NO
ASEGURADO
SSN 2
PRESTAMO NO
ASEGURADO
Supongamos que no son tan estúpidos
TARJETA
DE
CRÉDITO
CUENTA
DE
CHEQUES
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)
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)
Sheila
John
Robert
TARJETA
DE
CRÉDITO
CUENTA
DE
CHEQUES
CUENTA
DE
CHEQUES
NÚMERO
DE
TELÉFONO
PRESTAMO NO
ASEGURADO
SSN 2
PRESTAMO NO
ASEGURADO
Conectados por sus "conexiones"
TARJETA
DE
CRÉDITO
CUENTA
DE
CHEQUES
BROWSER
ANI
NUMBER
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
Algoritmo de grafico Union Find
Componentes Conectados
Conjunto 0
Conjunto 2
Detenga el fraude complejo con Neo4j
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
Veamos estas particiones
MATCH (n:User)
RETURN n.partition, COUNT(*) AS members,
COLLECT(n.name) AS names
ORDER BY members DESC
Nuestros estafadores están todos
conectados
Nuestros estafadores están todos
conectados
Fraude de Tarjeta de Credito
De un Cajero
Automático
Violaciones de Datos Sofisticadas
Recopilación de información de Tarjeta de Crédito
Comerciante
Fraudulento
UTILIZA
EMITE
Terminal
ATM Violacíon de
Datos
Titular de la tarjeta
Banco
Estafador
UTILIZA $5HACE
$1
0
HACE
$2
HACE
HACE $4000
CON
Pruebas
Comerciantes
CON
HACE Tx
Transacciones con tarjeta de crédito como
un gráfico
CREATE (john:User {name:"John"})
CREATE (m1:Merchant {name:"Computer Store"})
CREATE (m2:Merchant {name:"Gas Station"})
CREATE (m3:Merchant {name:"Jewelry Store"})
CREATE (m4:Merchant {name:"Furniture Store"})
CREATE (tx1:Transaction:Fraudulent {amount: 2000.00, date:datetime()})
CREATE (tx2:Transaction {amount: 35.00, date:datetime() - duration('P1D')})
CREATE (tx3:Transaction {amount: 25.00, date:datetime() - duration('P2D')})
CREATE (tx4:Transaction {amount: 12.00, date:datetime() - duration('P3D')})
CREATE (tx1)-[:AT_MERCHANT]->(m1)
CREATE (tx2)-[:AT_MERCHANT]->(m2)
CREATE (tx3)-[:AT_MERCHANT]->(m3)
CREATE (tx4)-[:AT_MERCHANT]->(m4)
CREATE (john)-[:MAKES]->(tx1)
CREATE (john)-[:MAKES]->(tx2)
CREATE (john)-[:MAKES]->(tx3)
CREATE (john)-[:MAKES]->(tx4)
Transacciones con tarjeta de crédito como
un gráfico
// 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
Transacciones de John la semana pasada
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)
)))
// 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
Transacciones de John la semana pasada
Detenga el fraude complejo con Neo4j
Detenga el fraude complejo con Neo4j
TxTx Tx TxTx Tx Tx TxTxTx TxJuan
Tx
$20000
TxTx Tx Tx TxTxTxTx Tx Tx
Tienda
Computad
Juan
Tx
$20000
Tx Tx
$250$100$40
TxTx Tx Tx TxTxTx
Tienda de
Computadoras
Juan
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
Siguiendo los pasos en la arena
Tx
Tx
$20000
Tx Tx
$250$100$40
TxTx Tx Tx TxTxTx
Tienda de
Computadoras
Juan
Maria
$20
TxTx TxTxTx Tx Tx TxTx
$30000
Tx
Joyería
Tx
$30
Tx
Tx
$20000
Tx Tx
$250$100$40
TxTx Tx Tx TxTxTx
Tienda de
Computadoras
Juan
Maria
$20
TxTx TxTxTx Tx Tx TxTx
$30000
Tx
Joyería
Tx
$30
Roberto TxTxTx Tx TxTx TxTxTx Tx Tx
TxTx
$20
TxTx
Tx
$20000
Tx Tx
$250$100$40
TxTx Tx Tx TxTxTx
Tienda de
Computadoras
Juan
María
Roberto
$30
Sofía
TxTxTx Tx Tx TxTx
$30000
Tx
Joyería
Tx
$30
TxTxTx Tx Tx TxTx TxTx
TxTx TxTx Tx Tx TxTx
$80 $120
Tx
$50000
Tienda de
Muebles
Tx Tx Tx
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
Encuentra a los comerciantes sospechosos
TxTx
$20
TxTx
Tx
$20000
Tx Tx
$250$100$40
TxTx Tx Tx TxTxTx
Tienda de
Computadoras
Juan
Gasolinera
María
Roberto
$30
Sofía
TxTxTx Tx Tx TxTx
$30000
Tx
Joyería
Tx
$30
TxTxTx Tx Tx TxTx TxTx
TxTx TxTx Tx Tx TxTx
$80 $120
Tx
$50000
Tienda de
Muebles
Tx Tx Tx
Cómo Neo4j encaja en su Arquitectura
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
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
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
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
El Sumario
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
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
No realmente, ¿por qué Neo4j?
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
Particiones
Las relaciones de
cada nodo están
divididas por tipo
y dirección.
¡Recursos Valiosos!
neo4jsandbox.com https://neo4j.com/use-cases/fraud-detection/ neo4j.com/product
Sandbox Detección de Fraude Producto
Preguntas y
Respuestas

Más contenido relacionado

PDF
Detecion de Fraude con Neo4j
Max De Marzi
 
PDF
Cómo detener el fraude con Neo4j
Neo4j
 
PDF
Evitando el fraude a través de la presentación de la información en grafos
Universidad de Deusto - Deustuko Unibertsitatea - University of Deusto
 
PPTX
Presentación de 2 proyectos reales en banca
Neo4j
 
PDF
Tendencias Recientes en Data Mining
DMC Perú
 
PDF
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Neo4j
 
PPTX
Analytics: experiencias en España
Neo4j
 
PDF
Mariluz Congosto (2019). Social network analysis: una herramienta para desenm...
cricc
 
Detecion de Fraude con Neo4j
Max De Marzi
 
Cómo detener el fraude con Neo4j
Neo4j
 
Evitando el fraude a través de la presentación de la información en grafos
Universidad de Deusto - Deustuko Unibertsitatea - University of Deusto
 
Presentación de 2 proyectos reales en banca
Neo4j
 
Tendencias Recientes en Data Mining
DMC Perú
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Neo4j
 
Analytics: experiencias en España
Neo4j
 
Mariluz Congosto (2019). Social network analysis: una herramienta para desenm...
cricc
 

Más de Max De Marzi (20)

PDF
AI, Tariffs and Supply Chains in Knowledge Graphs
Max De Marzi
 
PDF
DataDay 2023 Presentation
Max De Marzi
 
PDF
DataDay 2023 Presentation - Notes
Max De Marzi
 
PPTX
Developer Intro Deck-PowerPoint - Download for Speaker Notes
Max De Marzi
 
PDF
Outrageous Ideas for Graph Databases
Max De Marzi
 
PDF
Neo4j Training Cypher
Max De Marzi
 
PDF
Neo4j Training Modeling
Max De Marzi
 
PPTX
Neo4j Training Introduction
Max De Marzi
 
PDF
Data Modeling Tricks for Neo4j
Max De Marzi
 
PDF
Fraud Detection and Neo4j
Max De Marzi
 
PDF
Neo4j Data Science Presentation
Max De Marzi
 
PDF
Neo4j Stored Procedure Training Part 2
Max De Marzi
 
PDF
Neo4j Stored Procedure Training Part 1
Max De Marzi
 
PDF
Decision Trees in Neo4j
Max De Marzi
 
PDF
Neo4j y Fraude Spanish
Max De Marzi
 
PDF
Data modeling with neo4j tutorial
Max De Marzi
 
PDF
Neo4j Fundamentals
Max De Marzi
 
PDF
Neo4j Presentation
Max De Marzi
 
PDF
Fraud Detection Class Slides
Max De Marzi
 
PDF
Neo4j in Depth
Max De Marzi
 
AI, Tariffs and Supply Chains in Knowledge Graphs
Max De Marzi
 
DataDay 2023 Presentation
Max De Marzi
 
DataDay 2023 Presentation - Notes
Max De Marzi
 
Developer Intro Deck-PowerPoint - Download for Speaker Notes
Max De Marzi
 
Outrageous Ideas for Graph Databases
Max De Marzi
 
Neo4j Training Cypher
Max De Marzi
 
Neo4j Training Modeling
Max De Marzi
 
Neo4j Training Introduction
Max De Marzi
 
Data Modeling Tricks for Neo4j
Max De Marzi
 
Fraud Detection and Neo4j
Max De Marzi
 
Neo4j Data Science Presentation
Max De Marzi
 
Neo4j Stored Procedure Training Part 2
Max De Marzi
 
Neo4j Stored Procedure Training Part 1
Max De Marzi
 
Decision Trees in Neo4j
Max De Marzi
 
Neo4j y Fraude Spanish
Max De Marzi
 
Data modeling with neo4j tutorial
Max De Marzi
 
Neo4j Fundamentals
Max De Marzi
 
Neo4j Presentation
Max De Marzi
 
Fraud Detection Class Slides
Max De Marzi
 
Neo4j in Depth
Max De Marzi
 
Publicidad

Último (20)

PDF
Tecnología en Venezuela, Etapa Colonial y Democrática
HaroldMiguel2
 
DOCX
sistema de riego o aspersión de agropecuarios
FerminSantiagoZarate
 
PPTX
LA EDUCACIÓN EN PANAMÁ DÉCADA DEL 2000 AL 20100
fernandayanguez8
 
PDF
La Formacion Docente y la Innovacion RL4 Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
El Libro del Mindfulness KAIROS Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Metodologia de la Investigacion Cientifica UAI Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Nunca te Pares - Phil Knight Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Triada de Inteligencias - instrumentos vitales para el futuro (2).pdf
josseanlo1581
 
PDF
Superacion Personal Se Tu Mismo SB3 Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Inteligencia Artificial en la Educacion AV3 Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Problemas Resueltos de Mecanica para Educacion Superior Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Educacion para la Diversidad - Más allá del Autismo Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
El Poder de la Disciplina DM3 Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Nunca tires la Toalla - Donald Trump Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Conceptos Basicos de Inteligencia Artificial Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
El Futuro de la Evaluacion Docente CTERA Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
Trastorno por Déficit de Atención con Hiperactividad TDAH Ccesa007.pdf
Demetrio Ccesa Rayme
 
PDF
OFERTA FORMATIVA 2025 INFOCOOP Costa Rica
InfocoopComunicacin
 
PDF
Innovacion Educativa en Educacion Superior Ccesa007.pdf
Demetrio Ccesa Rayme
 
DOCX
INFORME AGRO.MADELEY_primer ciclo agropecuaria
madeleysantoyo
 
Tecnología en Venezuela, Etapa Colonial y Democrática
HaroldMiguel2
 
sistema de riego o aspersión de agropecuarios
FerminSantiagoZarate
 
LA EDUCACIÓN EN PANAMÁ DÉCADA DEL 2000 AL 20100
fernandayanguez8
 
La Formacion Docente y la Innovacion RL4 Ccesa007.pdf
Demetrio Ccesa Rayme
 
El Libro del Mindfulness KAIROS Ccesa007.pdf
Demetrio Ccesa Rayme
 
Metodologia de la Investigacion Cientifica UAI Ccesa007.pdf
Demetrio Ccesa Rayme
 
Nunca te Pares - Phil Knight Ccesa007.pdf
Demetrio Ccesa Rayme
 
Triada de Inteligencias - instrumentos vitales para el futuro (2).pdf
josseanlo1581
 
Superacion Personal Se Tu Mismo SB3 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Inteligencia Artificial en la Educacion AV3 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Problemas Resueltos de Mecanica para Educacion Superior Ccesa007.pdf
Demetrio Ccesa Rayme
 
Educacion para la Diversidad - Más allá del Autismo Ccesa007.pdf
Demetrio Ccesa Rayme
 
El Poder de la Disciplina DM3 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Nunca tires la Toalla - Donald Trump Ccesa007.pdf
Demetrio Ccesa Rayme
 
Conceptos Basicos de Inteligencia Artificial Ccesa007.pdf
Demetrio Ccesa Rayme
 
El Futuro de la Evaluacion Docente CTERA Ccesa007.pdf
Demetrio Ccesa Rayme
 
Trastorno por Déficit de Atención con Hiperactividad TDAH Ccesa007.pdf
Demetrio Ccesa Rayme
 
OFERTA FORMATIVA 2025 INFOCOOP Costa Rica
InfocoopComunicacin
 
Innovacion Educativa en Educacion Superior Ccesa007.pdf
Demetrio Ccesa Rayme
 
INFORME AGRO.MADELEY_primer ciclo agropecuaria
madeleysantoyo
 
Publicidad

Detenga el fraude complejo con Neo4j

  • 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
  • 3. ¿Quiénes son los estafadores de hoy?
  • 4. Organizado en grupos Identidades Sintéticas Identidades Robadas Dispositivos secuestrados ¿Quiénes son los estafadores de hoy?
  • 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.
  • 12. INVESTIGAR Deuda Rotatoria Numero de Cuentas INVESTIGAR Comportamiento Normal Detección de Fraude con 
 Análisis Discreto
  • 13. Deuda Rotatoria Numero de Cuentas Comportamiento Normal Patrón Fraudulento Detección de fraude con 
 Análisis Conectado
  • 14. Detección de fraude con Graphos
  • 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
  • 20. •PageRank •ArticleRank •Betweenness Centrality •Closeness Centrality •Eigenvector Centrality •Degree Centrality •Harmonic Centrality Centralidad
  • 21. Agregue funciones gráficas a sus modelos de detección de fraude existentes Account ID Community Size Degree PageRank 1 31 15 10.7 3 4 12 3.4 5 98 9 11.2 •Influencia •Relaciones •Comunidades
  • 23. Vamos a crear algunos usuarios CREATE (john:User {name:"John"})
 CREATE (sheila:User {name:"Sheila"})
 CREATE (karen:User {name:"Karen"})
  • 24. Sheila Modelando un anillo de fraude como un gráfico John Karen
  • 25. John tiene algunas cuentas CREATE (cc1:Card {number:"4012888888881881", balance: 493.23}) CREATE (ba1:Account {number:"85474584", balance:1322.30, type:”Checking"}) CREATE (us1:Loan {number:"63493639", balance:5000.00, type:"Loan”}) CREATE (john)-[:HAS_ACCOUNT]->(cc1) CREATE (john)-[:HAS_ACCOUNT]->(ba1) CREATE (john)-[:HAS_ACCOUNT]->(us1)
  • 26. Sheila también tiene un número de identificación CREATE (ba2:Account {number:"25384738", balance:2983.99, type:"Checking"}) CREATE (cc2:Card {number:"5105105105105100", balance: 893.11}) CREATE (ssn2:Identification {number:"000-42-4329", type:”SSN"}) CREATE (sheila)-[:HAS_ACCOUNT]->(ba2) CREATE (sheila)-[:HAS_ACCOUNT]->(cc2) CREATE (sheila)-[:HAS_ID]->(ssn2)
  • 27. Karen tiene un número de teléfono CREATE (ba3:Account {number:"63493639", balance:3204.83, type:"Checking"}) CREATE (us2:Loan {number:"28372342", balance:5000.00, type:"Loan"}) CREATE (phone2:Phone {number:”312-606-0842"}) CREATE (karen)-[:HAS_ACCOUNT]->(ba3) CREATE (karen)-[:HAS_ACCOUNT]->(us2) CREATE (karen)-[:HAS_PHONE]->(phone2)
  • 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)
  • 32. Sheila John Karen TARJETA DE CRÉDITO CUENTA DE CHEQUES CUENTA DE CHEQUES NÚMERO DE TELÉFONO PRESTAMO NO ASEGURADO SSN 2 PRESTAMO NO ASEGURADO Comenzando a conectar los puntos ... TARJETA DE CRÉDITO CUENTA DE CHEQUES DIRECCION NÚMERO DE TELÉFONO SSN 1
  • 33. Agreguemos a Robert CREATE (robert:User {name:"Robert"}) CREATE (ba4:Account {number:"8374927", balance:1273.39, type:"Checking"}) CREATE (cc3:Card {number:"378282246310005", balance: 134.72}) CREATE (robert)-[:HAS_ACCOUNT]->(ba4) CREATE (robert)-[:HAS_ACCOUNT]->(cc3)
  • 34. • Triangle Count • Clustering Coefficients • Connected Components (Union Find) • Strongly Connected Components • Label Propagation • Louvain Modularity • Balanced Triad (identification) Community Detection • Degree Centrality • Closeness Centrality • CC Variations: Harmonic, Dangalchev, Wasserman & Faust • Betweenness Centrality • Approximate Betweenness Centrality • PageRank • Personalized PageRank • ArticleRank • Eigenvector Centrality • Euclidean Distance • Cosine Similarity • Jaccard Similarity • Overlap Similarity • Pearson Similarity Centrality / Importance Similarity Link Prediction • Adamic Adar • Common Neighbors • Preferential Attachment • Resource Allocations • Same Community • Total Neighbors Algoritmos Gráficos
  • 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
  • 37. Algoritmo de grafico Union Find
  • 39. Sheila John Karen TARJETA DE CRÉDITO CUENTA DE CHEQUES CUENTA DE CHEQUES NÚMERO DE TELÉFONO PRESTAMO NO ASEGURADO SSN 2 PRESTAMO NO ASEGURADO Supongamos que no son tan estúpidos TARJETA DE CRÉDITO CUENTA DE CHEQUES
  • 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)
  • 42. Sheila John Robert TARJETA DE CRÉDITO CUENTA DE CHEQUES CUENTA DE CHEQUES NÚMERO DE TELÉFONO PRESTAMO NO ASEGURADO SSN 2 PRESTAMO NO ASEGURADO Conectados por sus "conexiones" TARJETA DE CRÉDITO CUENTA DE CHEQUES BROWSER ANI NUMBER
  • 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
  • 44. Algoritmo de grafico Union Find
  • 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
  • 49. Nuestros estafadores están todos conectados
  • 50. Nuestros estafadores están todos conectados
  • 51. Fraude de Tarjeta de Credito
  • 52. De un Cajero Automático Violaciones de Datos Sofisticadas Recopilación de información de Tarjeta de Crédito Comerciante Fraudulento
  • 53. UTILIZA EMITE Terminal ATM Violacíon de Datos Titular de la tarjeta Banco Estafador UTILIZA $5HACE $1 0 HACE $2 HACE HACE $4000 CON Pruebas Comerciantes CON HACE Tx
  • 54. Transacciones con tarjeta de crédito como un gráfico CREATE (john:User {name:"John"}) CREATE (m1:Merchant {name:"Computer Store"}) CREATE (m2:Merchant {name:"Gas Station"}) CREATE (m3:Merchant {name:"Jewelry Store"}) CREATE (m4:Merchant {name:"Furniture Store"}) CREATE (tx1:Transaction:Fraudulent {amount: 2000.00, date:datetime()}) CREATE (tx2:Transaction {amount: 35.00, date:datetime() - duration('P1D')}) CREATE (tx3:Transaction {amount: 25.00, date:datetime() - duration('P2D')}) CREATE (tx4:Transaction {amount: 12.00, date:datetime() - duration('P3D')}) CREATE (tx1)-[:AT_MERCHANT]->(m1) CREATE (tx2)-[:AT_MERCHANT]->(m2) CREATE (tx3)-[:AT_MERCHANT]->(m3) CREATE (tx4)-[:AT_MERCHANT]->(m4)
  • 55. CREATE (john)-[:MAKES]->(tx1) CREATE (john)-[:MAKES]->(tx2) CREATE (john)-[:MAKES]->(tx3) CREATE (john)-[:MAKES]->(tx4) Transacciones con tarjeta de crédito como un gráfico
  • 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
  • 57. 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
  • 60. Transacciones de John la semana pasada
  • 63. TxTx Tx TxTx Tx Tx TxTxTx TxJuan
  • 64. Tx $20000 TxTx Tx Tx TxTxTxTx Tx Tx Tienda Computad Juan
  • 65. Tx $20000 Tx Tx $250$100$40 TxTx Tx Tx TxTxTx Tienda de Computadoras Juan
  • 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
  • 67. Siguiendo los pasos en la arena
  • 68. Tx Tx $20000 Tx Tx $250$100$40 TxTx Tx Tx TxTxTx Tienda de Computadoras Juan Maria $20 TxTx TxTxTx Tx Tx TxTx $30000 Tx Joyería Tx $30
  • 69. Tx Tx $20000 Tx Tx $250$100$40 TxTx Tx Tx TxTxTx Tienda de Computadoras Juan Maria $20 TxTx TxTxTx Tx Tx TxTx $30000 Tx Joyería Tx $30 Roberto TxTxTx Tx TxTx TxTxTx Tx Tx
  • 70. TxTx $20 TxTx Tx $20000 Tx Tx $250$100$40 TxTx Tx Tx TxTxTx Tienda de Computadoras Juan María Roberto $30 Sofía TxTxTx Tx Tx TxTx $30000 Tx Joyería Tx $30 TxTxTx Tx Tx TxTx TxTx TxTx TxTx Tx Tx TxTx $80 $120 Tx $50000 Tienda de Muebles Tx Tx Tx
  • 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
  • 72. Encuentra a los comerciantes sospechosos
  • 73. TxTx $20 TxTx Tx $20000 Tx Tx $250$100$40 TxTx Tx Tx TxTxTx Tienda de Computadoras Juan Gasolinera María Roberto $30 Sofía TxTxTx Tx Tx TxTx $30000 Tx Joyería Tx $30 TxTxTx Tx Tx TxTx TxTx TxTx TxTx Tx Tx TxTx $80 $120 Tx $50000 Tienda de Muebles Tx Tx Tx
  • 74. Cómo Neo4j encaja en su Arquitectura
  • 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
  • 82. No realmente, ¿por qué Neo4j?
  • 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
  • 84. Particiones Las relaciones de cada nodo están divididas por tipo y dirección.