 Bien, antes de nada, me presento. Soy Jenny Bermudez, vengo de Cachabang. Vale, se ve. Vengo de Cachabang, estoy en el Departamento de Aplicaciones Analíticas. Y en esta sesión os voy a presentar lo que es la nueva infraestructura de grafos que hemos implementado en Cacha. Y os explicaré a partir de casos de uso reales de detección y de prevención de fraude. Bien, como muchos de vosotros ya sabréis, una de las grandes preocupaciones que tenemos en un banco es poder detectar o prevenir estos fraudes. Y como podemos ver en la gráfica, que nos representa lo que serían las pérdidas, las pérdidas que hay a nivel mundial en todos los bancos, que simplemente se tratan de fraudes, si nos enfocamos en el 2018 vemos que prácticamente el 5,5% de pérdidas que hay en los bancos a nivel mundial se deben a estos fraudes. Eso se traduce prácticamente a 15 billones de dólares anuales. Se trata de mucho dinero. Una de las formas más comunes que tienen los estafadores para aplicar este tipo de fraudes, para cometerlos, es las cuentas mulas. Las cuentas mulas básicamente se trata de utilizar cuentas de terceros en las que utilizan esa cuenta para poder blanquear el dinero. A día de hoy los estafadores lo que hacen es, mediante las redes sociales, realizar un análisis de aquellas personas que seguramente tengan una liquidez menor de nivel económico, como pueden ser estudiantes entre 14 y 16 años, que para ellos sea muy fácil poder convencerlos de que les dejen sus cuentas. Lo que les hacen, les ofrecen una cantidad de dinero bastante razonable y a partir de ese dinero lo que hacen es hacer el cambio de dejarles la cuenta y utilizarla como cuenta mula. Otro caso que tenemos es como por ejemplo las cartas nigerianas. Las cartas nigerianas también son muy famosas y se utiliza que se trata de un correo electrónico que envían a una persona, una posible víctima indicándole que ha podido ganar un premio y que para desbloquear este premio tiene que realizar una transferencia a una cuenta que le indican en el propio correo. Como podéis ver, muchos de vosotros pensaréis, bueno, pero ahora poca gente que pique en este tipo de estafas, pues realmente como veis en las extracciones de diarios que he puesto en la propia slide, vemos que a día de hoy, por ejemplo en la de la información, es una noticia de este año en la que ha empezado un juicio por una red de estafadores involucrados, una red de estafadores, perdón, han podido estafar prácticamente 47 millones a casi bien 6.500 víctimas. Son muchas personas. O por ejemplo en el delocal.es en la que identifican que policía española ha podido arrestar prácticamente 880 personas en la que han podido estafar unas 4.500 personas. A partir de estos dos casos de uso que os he explicado, os voy a introducir en la nueva infraestructura de grafos. Pongamos al caso de que ahora Maek envía un correo a Marta indicándole que ha ganado un premio de lotería de un millón de euros y que para ello tiene que realizar una transferencia a bancaria a una cuenta que le indican en el propio correo. Marta sorprendida por el correo y por el remitente se dirige a una de las oficinas de Kachabán, que es su entidad de confianza. La oficina, al ver el caso, lo traslada al departamento específico donde tenemos los analistas expertos en detección de fraude y lo que realizan es un análisis de esa cuenta porque precisamente Marta lo que ve es que la cuenta parece ser por el IVAN que tiene es de Kachabán, analizar si realmente esa cuenta está haciendo movimientos en tantos sospechosos. Entonces, si empieza el análisis, empezará con la cuenta y verá aquellos movimientos a partir de todos los datos que tenemos en el banco. Mirará todos aquellos movimientos que realiza y, efectivamente, como podéis ver, se realizan movimientos en tantos sospechosos ya que aquel dinero que entra en un mismo día vuelve a salir siempre dejando la cuenta a cero, como vemos. Si seguimos expandiendo, vemos que ese dinero que vuelve a salir, vuelve a salir, por ejemplo, los 4.700 vuelven a salir a una cuenta de un tal pedro. Y si seguimos expandiendo, vemos que al final el dinero donde acaba llegando a unas cuentas que son de una tal María y de una empresa XXX. Llegados a este punto, el analista dirá ¿Y qué relaciona hay con la cuenta donde Marta tiene que realizar la transferencia y que hay de titular Juan y con María? Si seguimos expandiendo, vemos que finalmente vemos que María y Juan conviven juntos. Es decir, viven en una misma dirección. Y que, además, Juan está relacionado con una tal empresa XXX mediante una cuenta como titular Juan y la empresa XXX como cotitular. Por lo tanto, el analista experto en detección de fraude posiblemente podría identificar que Juan y María forman parte de unas redes de estafadores y que, a su vez, mediante esta visualización de grafos de una forma muy sencilla, es probable que estén utilizando la cuenta de Pedro como cuenta mula. Pero ahora pongamos al caso de que lo que queremos ver es a nivel masivo. Es decir, los analistas, si tienen que realizar un análisis para cada uno de los movimientos de dinero que se realizan en el banco de una forma manual, no tendríamos manos, ¿verdad? Entonces, en este caso, imaginemos de que queremos de una forma masiva identificar de cada una de las transferencias que se realizan diariamente si se trata de un posible fraude o no. En este caso, mediante aplicar algoritmos propis de teoremas de grafos, en este caso podríamos identificar a partir del ordenante y el beneficiario y una transferencia, si tienen una relación de confianza entre el ordenante y el beneficiario, descartar aquella transferencia como posible fraude. ¿Qué es una relación de confianza? Por ejemplo, una relación a nivel contractual que esas dos personas estén relacionadas mediante cotitular o titular de un contrato o que anteriormente hayan hecho una transferencia en la que nosotros ya la hemos podido identificar como de confianza. Como se estaba indicando, esto lo podemos hacer mediante algoritmos propios de teoremas de grafos. En este caso, se identificaría el algoritmo Dijkstra o comúnmente llamado Short Spath. Más adelante lo veremos, más a nivel de detalle, pero a partir de identificar dos nodos podemos buscar el camino más corto entre dos personas y en este caso, aplicado en lo que sería de forma masiva, poder descartar aquellas transferencias en las que hubiera una relación de confianza. Hasta aquí, lo que serían los dos casos de uso en los que he seleccionado para poder explicaros la nueva infraestructura. Si todo esto lo pusiéramos, lo aplicáramos dentro de una base de datos relacional con bases de datos, ¿qué estamos haciendo? Al final, el analista tiene que aprender muy bien cómo está hecho el modelo, tiene que saber cómo se relacionan cada una de las tablas con el modelo de tarjetas, el modelo de contratos, el modelo de personas, todos aquellos datos que podemos tener en un banco y sobre todo, todo lo que sea en base a movimiento de dinero, que es por donde podemos detectar los fraudes. Si tienen que ellos aprender cada uno de esas tablas como están relacionadas con el objetivo de preparar esos datos previamente para luego tener una base de datos más enfocada a darle valor a la relación en lugar a lo que es al dato, que es lo que realmente le estamos dando valor teniendo una base de datos relacional, estamos haciendo que pierdan mucho tiempo en tema de análisis previo de todos esos datos. Por ese motivo, desde calle hicimos un análisis, un benchmark de diferentes productos que ya explicaré más adelante y la que vimos en la que analizamos que un modelo basado en grafos nos permitiría tener mejores rendimientos por un lado, frente a una base de datos relacional, ya que como ya sabéis muchos de vosotros la medida que vamos haciendo más saltos como hemos visto en el ejemplo de cartas nigerianas, estamos añadiendo más joins de tablas dentro de lo que sería una query de base de datos relacional tradicional. Contra más joins el rendimiento pierde, se espeora aún. Por otro lado, que obtenemos con un modelo basado en grafos que a nivel de visualización, como también hemos visto en el ejemplo de cartas nigerianas, a partir de una cuenta, identificar sus movimientos son tantos sospechosos, hemos podido ver que la cuenta de Pedro es posiblemente se está utilizando como cuenta mula. Además tenemos en la agilidad de los datos porque ya el analista no tiene que hacer una preparación de ellos mismos y además el último, pero el más importante es que podemos aplicar algoritmos propios de teoremas de grafos como hemos visto del short-spad. No sólo el algoritmo de short-spad podemos aplicar, tenemos otros tipos, hay mogollón de algoritmos que podemos aplicar, están enfocados en detección de componentes y comunidades, que esto también nos va muy bien para detectar conductas de comportamiento de nuestros clientes. Para ellos, sobre todo para temas de fraude. El path finding que sería englobamos algoritmos propios de búsqueda de caminos, como hemos visto en el short-spad y otros como pueden ser para evaluar ese tipo cuando hemos identificado las comunidades, las estructuras de comunidades, poder evaluarlas. Y por último el ranking. Aquí dentro tendríamos lo que son algoritmos como propios de pitch-run, que es por ejemplo el algoritmo que utiliza Google, para ver la importancia en las páginas webs y las páginas que ellos seleccionan, clasifican en su buscador, aquellas que tengan más importancia y que además estén más linkadas a otras páginas web. Y me voy a centrar en los dos que principalmente nosotros estamos empezando a utilizar que es el que os he estado explicando ya que es a nivel del algoritmo de Dijkstra que como veis en la imagen y en el GIF, lo que va haciendo es añadir pesos en cada uno de los atributos el peso normalmente va relacionado en la confianza en nuestro caso va relacionado en la confianza que nosotros tenemos en esa relación, que quiere decir que una relación contractual seguramente tendrá más confianza con una relación quizá de convivencia. Por lo tanto contra más confianza tengamos, menos peso le ponemos. Entonces lo que hace el algoritmo es ver mediante esos pesos, hace la suma a partir de cada uno de los nodos y mientras el total de la suma de cada uno de los pesos, de los atributos que encuentran cada uno de los caminos si el que de menos será el camino más corto entre esos dos nodos seleccionados por el usuario. Y luego tenemos la detección de comunidades la detección de comunidades, el caso que utiliza es el de algoritmo de Tarkhans este algoritmo lo que nos permite es identificar comunidades dentro de un grafo. Lo que lo que hace es básicamente revisar si a partir de dos nodos se relacionan del nodo A al nodo B por ejemplo y luego del nodo B al nodo A es decir, que tiene una relación fuertemente con ex entre ellos dos. Bien, dentro de Qashan que hemos implementado hemos implementado la arquitectura una arquitectura a partir del producto de la que es Pashalan Graph que lo que nos permite es cargar la información que tenemos en la base de datos relacional hacemos un tratamiento de esos datos es decir, a partir del ex data que es donde tenemos toda la información a día de hoy en ex data hacemos el tratamiento de esos datos para que el grafo sepa de lo que estamos hablando es decir, aplicamos la carga de esos datos en memoria de la hora que es Pashalan Graph se hace mediante un método que se llama Two Tables, que es tan sencillo como que al final tienes una tabla con todos los nodos y una tabla con todas las aristas hacemos esa carga, que ahora os enseñaré bien cómo se hace la trazabilidad del dato hasta que carga y luego a nivel de visualización y cubrir la necesidad que hemos visto a nivel de cartas nigerianas para que un analista pueda visualizar y pueda hacer investigación guiada de los datos hemos utilizado la aplicación Chupiter, que es un notebook que seguramente todos vosotros ya lo conocéis y hemos desarrollado un widget en la que tiene una visualización muy similar a un SQL developer en la que permite ejecutar sentencias sentencias propias de la hora que es Pashalan Graph para que pueda visualizarla tanto en formato gráfico como en tabla nos preocupéis porque más adelante os enseño un ejemplo en real y luego también hemos escogido la herramienta Tom Sawyer Perspective que estaría más orientado a negocio que no tienen que saber de ningún tipo de lenguaje programación para poder realizar la investigación guiada para cubrir la necesidad a nivel masivo lo que se ha implementado es un web service con mediante colas MQ que a partir de las aplicaciones transaccionales en un script que el web service se conecte a lo que es a la infraestructura de grafos y obtener la información en el formato que nosotros deseamos bien lo que os decía hemos usado, hemos implementado dos métodos de carga, uno que es el footload data normalmente este es el primero para cargar todos los datos, normalmente tenemos un histórico de dos años y hemos utilizado ODI Oracle Data Integrator para que todo el proceso de ETL y luego TWS, que es para temas de planificación de los jobs y mediante Tomcat, tenemos dos Tomcats, uno más enbebido donde está el PGX, que el PGX es el producto es realmente la base del producto que es donde cargamos el grafo a memoria, realizamos una conexión JDBC a lo que sería a nuestro exadata que sería esto de aquí realizamos esa conexión y cargamos a memoria directamente la información luego por temas de plan de contingencias a otras disponibilidades y vacas, recovers, pues si en algún momento se nos cae el grafo guardamos la información en HDFS para poder hacer un recover simplemente por curiosidad toda la información tardamos unas diez, doce horas en cargarla normalmente tardamos, a día de hoy tenemos 434 millones y 1935 millones de relaciones para la parte incremental, es un poquito más complicado utilizamos lo que sería Scoop en esta parte de aquí utilizamos Scoop, que nos conectamos mediante JDBC a la base de datos relacional y mediante Spark hacemos lo que serían las cargas a la API aquí veréis lo que es esta relación es que lo que está haciendo Odie es ir avisando de si ya hemos cargado el grafo, porque una vez ya cargado lo que hacemos es luego bajar lo que sería el grafo en el formato pgb, que es el formato que utiliza ahora que les pasa en grafa HDFS para también tema todo de recover este es el modelo que a día de hoy tenemos es un modelo, es un grafo corporativo hemos empezado por la parte corporativa porque damos uso a varios departamentos a día de hoy tenemos tanto control and compliance auditoría interna seguridad física y seguridad que lo necesitan y prácticamente todos, cada uno de ellos necesitan esta información, por eso hemos empezado con este grafo que es a nivel corporativo ya quedamos servicio a varios departamentos pero eso no quiere decir que se puedan hacer grafos específicos para un departamento como veis en la slide, a día de hoy ya tenemos todo lo que sería las las relaciones contractuales, todas las transferencias de nuestros clientes los traspasos, relaciones contractuales con tarjetas, las compras las personas la relación de persona con tarjeta todas las disposiciones que hacen con nuestros cajeros mediante las tarjetas de Kachabang, la relación de dirección tanto de persona como de cajero, la convivencia que aquí no es que seamos un gran hermano pero sí que tenemos una una relación que identificamos a partir de si dos personas viven en una en una misma dirección y luego lo que sería la relación de persona a teléfono bien, ahora vamos a la parte de las herramientas como os decía para recordar teníamos TomSoy Perspective que esta aplicación nos permite dar servicio más a los usuarios orientados a negocio no tienen que saber nada de lenguajes para poder explotar la información y como veis en la parte central es donde podemos visualizar el grafo luego en la parte de la izquierda es donde tenemos es como en la cual de forma muy fácil podemos llegar a hacer esos filtros pues por ejemplo a partir de la persona el nombre completo buscar pues Jennifer Mudez Nielsen y partir de aquí ejecutar y ya saldría el nodo de Jennifer Mudez Nielsen luego una vez que selecciona la persona, selecciona un nodo una relación en la parte izquierda inferior se visualizan todos aquellos atributos que nosotros hayamos configurado es decir antes de implementar todo esto sí que hemos tenido varias reuniones con todos los departamentos a nivel de negocio para identificar bien cuáles son aquellos atributos importantes para poder parametrizar y bien a continuación os voy a enseñar esto es una demo, es una prueba de concepto justamente cuando lo estamos haciendo los datos están anonymizados perdón aquí aquí en la izquierda el 11002 son las relaciones, veremos que estamos cogiendo en este caso lo que serían las transferencias es por favor que se me ha ido por ejemplo aquí cogemos el 3002 como vemos que son relaciones de transferencias cogemos una persona y simplemente con botón derecho le decimos lot neighbors y en pocos segundos vemos que obtenemos todas las relaciones de transferencias es decir todas las transferencias que ha realizado esa persona a otras cuentas de cashawang vemos que realmente por el gran volumen de transferencias cada una de esas aristas es una transferencia, vemos que en pocos segundos obtenemos la información en el siguiente caso veremos como podemos aplicar el algoritmo de shortest path seleccionamos lo que es un nodo el nodo inicio donde queremos aplicar el algoritmo aquí ya veis que seleccionando el botón de la izquierda hemos puesto hemos seleccionado esta persona luego seleccionamos el nodo con el que queremos buscar el camino más corto vamos al botón de finish the shortest path y vemos como ya se ha aplicado y luego con el botón que tenemos aquí vemos que de una forma muy sencilla a nivel visual ya nos está identificando lo que sería camino más corto entre esos dos nodos que hemos seleccionado como veis es super sencillo no necesitan saber de toda la infraestructura ni tampoco necesitan saber de lenguaje para poder explotarla el grazo bien en este caso ahora la otra aplicación era jupiter para jupiter como ya sabéis jupiter es un open source en la que nos permite poder ejecutar varios lenguajes de programación con nuestro equipo técnico hemos implementado un widget que lo que nos permite es ejecutar lenguaje de programación propio de oracle expansion graph que se llama pgql la imagen tiene una estructura muy similar a lo que es el SQL tiene la sentencia de select donde le podemos identificar todos los atributos luego en la parte del match que sería la similitud con el from donde lo identificamos en este caso el camino en este ejemplo veríamos que lo que estamos haciendo es sacar la persona que sería el nodo sus relaciones contractuales a los otros contratos los nodos se ponen entre paréntesis y las relaciones a nivel de corchete luego la flecha porque al final el grafo puede ser direccional le decimos que al final es la persona todas sus relaciones contractuales y dentro de la cláusula del web le ponemos el filtro en este caso sacaríamos lo que son todas las relaciones contractuales de Joan Balseig a continuación vamos a ver un vídeo de lo que serían, son datos ficticios lo que sería a partir de minodo persona buscar todas aquellas relaciones todas aquellas transferencias que he realizado yo con mis cuentas tanto a cuentas de Cachaban como a cuentas externas y a quien están relacionadas esas cuentas como veis la visualización es muy parecida a lo que sería más o menos tenemos una caja donde podemos identificar la consulta vemos la parte de select vemos donde tendríamos el match aquí le ponemos el primer nodo que sería yo el segundo nodo, Jenny Bermudez Nielsen en la siguiente relación sería la relación contractual en este caso le vamos poniendo etiquetas en el web le he dicho que sea tanto la relación contractual persona como la relación de convivencia como una relación de persona dirección o de persona teléfono este caso lo que buscará aquí es todo aquello que esté relacionado conmigo a partir de las relaciones que le he filtrado el siguiente aquí tenemos la relación de transferencias aquí empezaríamos a ver todas las transferencias que yo he hecho y con la siguiente relación lo estoy diciendo de aquellas cuentas donde yo he hecho una transferencia identificame a quien hacen referencia estas cuentas minimizamos la caja y le damos al botón de ejecutar y aquí es donde vemos de una forma muy rápida aquí es el titular soy yo y vemos que soy titular he hecho varias transferencias tanto tras pasos como a otras cuentas y además que tengo una relación de convivencia con dos personas que además son clientes porque tienen distintas cuentas en el banco además no simplemente nos permita a nivel de visualización verlo a nivel de grafo sino que también poder transformar lo que sería esta visualización en grafos para que nos va bien esto en muchas ocasiones hemos visto casos de uso de data scientists que al final esta información lo que la utilizan como entrada de variables a modelos predictivos y lo utilizan simplemente lo enganchan a un modelo de R o un modelo de Python una forma sencilla, a día de hoy aún es todo manual en la que tienes que exportarte los datos pero en un futuro la idea es que mediante el exadata donde tenemos el modelo relacional de estos modelos puedas hacer una llamada de forma automática lo que sería al grafo corporativo devolverte los datos en el formato que necesitarías y poderlos cargarlos en un como entrada de variables bueno aquí vemos como al final la información nos lo hemos podido exportar en Excel también se puede exportar en CSV y aquí tendríamos todos los datos a nivel tabular otras posibles iniciativas hemos empezado lo que os he explicado los grafos a partir de los casos de uso reales de detección y de prevención de fraude pero la idea es poder abrir lo que es el grafo a otros departamentos uno de ellos también sí que es cierto que es para controlar compliance que ya hemos empezado con ellos a analizar qué casos de uso necesitan pero sí que es cierto también abrirlo a lo que es todo temas de recomendación de productos para los departamentos comerciales además también para los temas de IT por ejemplo nos iría muy bien en el departamento de sistemas que cada vez que hay un proceso de TL o hay algún cambio en algún modelo de alguna manera muy sencilla pudiéramos ver qué tipo de afectación hay en otras dependencias en la parte de la derecha aquí estamos identificando más lo que sería aplicar todo lo que sería información de redes sociales ya que para todos temas de detección de fraude tener cuanto más información tienes en el grafo te permite poder detectar muchísimo mejor posibles fraudes y lo que os ya comentaba en la parte de jupiter que al final con poder obtener esa información en un formato tabular poder utilizar esa información como entrada de variables en un modelo realizado en R o en Python y por último que es una expectativa bueno que tenemos de cara al año que viene es poder aplicar lo que sería machine learning en el grafo el objetivo de poder automatizar todas aquellas patrones que a día de hoy los estamos identificando de forma manual de conductas que realizan nuestros clientes bien, todo este proyecto al final lo hemos hecho con el equipo de Everest que al final ha sido nuestro ejecutor el que ha instalado, el que ha hecho las pruebas el que al final ha montado toda la infraestructura además hemos tenido un soporte vital con Oracle a día de hoy somos BetaTester un programa de la nueva versión que aún no ha salido ya que con todas las el roma que tenemos a día de hoy es que de cara al año que viene ya podamos probar lo que es los entornos distribuidos porque es cierto que es un punto que no os he comentado pero a día de hoy tenemos lo que el grafo lo tenemos implementado en una ambitata appliance en la cual tenemos tres nodos en producción uno de ellos es de 1,5 teras pero como habéis visto el grafo corporativo va aumentando que tengamos más casos de uso aumentará más entonces al final tendremos que aplicar también lo que es distribución de un propio, de un mismo grafo en varios nodos aquí Oracle nos está ayudando mucho al final tenemos un contacto directo con product management y la verdad que estamos trabajando en ello por otro lado con el equipo de Itenow pues toda la parte de infraestructuras y por último pues todos el departamento de control compliance, seguridad física seguridad y otros departamentos de nuestros compañeros que nos están ayudando a poder implementar la nueva infraestructura y muchísimas gracias espero que haya sido de gran uso para vuestras compañías o lo que estéis implementando si es algo a nivel de grafos y gracias si tenéis alguna duda