EN
Ciencia de datos

Embeddings para datos de navegación: nuestro nuevo Proyecto X

14/12/2023
Los datos de navegación de los usuarios en la app de BBVA ofrecen información muy útil cuando los convertimos en embeddings, una herramienta que representa los patrones de navegación en formato numérico. A modo de introducción, en este artículo explicamos en qué consiste este método, por qué es tendencia y cómo lo aplicamos en banca.

Imagina que estás utilizando una aplicación, como una plataforma de música o un servicio de streaming de vídeos. Cada vez que haces clic en una canción o ves un vídeo, la aplicación registra esa acción como un evento. Más adelante, en lugar de simplemente recordar qué canciones o videos te gustaron, la aplicación utiliza esta información para entender tus preferencias y sugerir contenido relevante.

Aquí es donde entra en juego el embedding en el contexto de datos de navegación. En lugar de tratar cada canción o vídeo como algo independiente, podemos utilizar un embedding para representar cada evento en un espacio numérico. Este espacio numérico tiene propiedades especiales: por ejemplo, canciones o vídeos con características similares o que a usuarios similares les gustan, están cerca entre sí en este espacio.

Figure 1. Representación visual de cómo se distribuyen los embeddings en un espacio numérico, en este caso aludiendo a géneros musicales. Cada círculo representa una canción.

Podemos definir un embedding como una representación numérica que captura las relaciones y similitudes entre diferentes elementos. Estos pueden ser canciones o vídeos, como en este caso, pero también documentos, palabras (donde se captura su significado o relación semántica), eventos de navegación o transacciones, por ejemplo. Con estas representaciones numéricas que proporcionan los embeddings, los modelos pueden predecir las preferencias y necesidades del usuario, ofreciendo así recomendaciones más personalizadas. Además, un embedding puede ser aprendido y reutilizado por diferentes modelos y para distintas tareas.

Este último aspecto ha sido uno de los principales incentivos para poner en marcha nuestro tercer proyecto X, el programa de innovación de BBVA AI Factory con el que buscamos convertir ideas en herramientas que puedan ser aprovechadas por diferentes equipos.

En este caso queríamos estandarizar y poner a disposición de todos los equipos los datos de navegación de los usuarios en la app de BBVA en forma de embeddings, y que se pudieran utilizar fácilmente en los modelos. Saber cómo utilizan nuestros clientes la banca móvil es muy útil a la hora de adaptar nuestros modelos, ya sea para mejorar su experiencia con los canales digitales o sugerir acciones y productos que resuelvan sus necesidades.

Por qué utilizamos el dato de navegación en forma de embeddings

Los datos de navegación de los usuarios en la app de BBVA ofrecen una información muy valiosa que nos permite mejorar los modelos de Machine Learning que desarrollamos. En concreto, estamos mejorando la predicción y la capacidad para recuperar deuda, por un lado, y la segmentación de clientes según su comportamiento digital, por otro.

Sin embargo, hasta ahora los datos de navegación estaban dispersos en diversas tablas, lo que dificulta su comprensión y procesamiento. El proceso de utilizar correctamente este tipo de datos se puede volver una tarea costosa para los científicos de datos, quienes deben entender correctamente las diferentes tablas y campos disponibles, ver qué información concreta puede ayudar en su caso de uso, y realizar las transformaciones necesarias para que ese dato quede en formato consumible por un modelo de Machine Learning (feature engineering). Este proceso en ocasiones se realiza de manera muy parecida por diferentes equipos, produciendo un esfuerzo duplicado.

En este contexto, generar embeddings de navegación nos ayuda a resumir esta información y facilitar su uso por parte de diferentes equipos. Además, conseguimos agilizar el tiempo que necesita un científico de datos para incorporar esta información en el desarrollo de su modelo.

Embeddings: tendencias y tipos

En los últimos años existe una tendencia creciente y muy sonada en el procesamiento del lenguaje natural (NLP por sus siglas en inglés) de utilizar embeddings para convertir texto en una representación numérica. Son los que conocemos como word embeddings. Gracias a ellos, los algoritmos de Machine Learning consiguen aprovechar la semántica y el contexto de cada palabra, resultando en una gran mejora del rendimiento de estos algoritmos en tareas como traducción automática, clasificación de texto y similares.

Esta tendencia viene impulsada por la publicación en 2013 de Word2Vec1, un algoritmo basado en redes neuronales que utiliza un gran corpus de texto para aprender asociaciones entre palabras.

Figura 2. En esta representación la palabra reina incluye el concepto “mujer” y el concepto “realeza”. En el paso 1 de la ilustración, si a “reina” le restamos el concepto “mujer”, obtenemos “persona de la realeza”. Posteriormente, si añadimos el concepto “hombre”, obtenemos el concepto “rey” (paso 2). Esta es una demostración de cómo los embeddings se sitúan en el espacio de acuerdo a su relación semántica.

Más allá de su destacado desempeño en NLP, los embeddings han encontrado aplicación en diversas áreas y tipos de datos, abarcando imágenes, audio, series temporales, así como información sobre productos y clientes, entre otros. Además, se ha observado la adaptación exitosa de técnicas y conocimientos del campo del NLP en estas áreas adicionales, destacando Prod2Vec2 y Meta-Prod2Vec3, que ilustran cómo emplear Word2Vec con cualquier elemento siempre que podamos definir su respectivo contexto.

Por ejemplo, podemos representar los diferentes productos de un catálogo mediante un embedding o vector que resuma la información de cada producto. Al igual que ocurre con las palabras de parecido significado, los productos relacionados entre sí generarán vectores similares.

Existen multitud de formas de crear embeddings y nuevos métodos son propuestos frecuentemente. A continuación, nos limitaremos a resumir algunos de los métodos más utilizados en la industria.

Word2vec

Word2vec ha sido un método muy utilizado para crear embeddings de palabras. Su popularidad y utilidad le llevó a utilizarse también fuera del ámbito del procesamiento de lenguaje natural (NLP).

Todo tipo de dato que se pueda representar mediante secuencias es apto para poder ser utilizado con el algoritmo Word2vec. Consideremos el siguiente ejemplo: disponemos de sesiones de usuarios en una página web, donde cada evento de la sesión representa un producto. A la hora de aplicar el algoritmo Word2vec, es útil pensar en los productos como “palabras”, y las sesiones como “documentos”. Así, obtendremos embeddings para los distintos productos, de tal manera que los productos que se visitan frecuentemente uno detrás de otro tendrán un embedding similar.

Autoencoders

Los autoencoders son unas arquitecturas de redes neuronales que permiten comprimir un vector de dimensionalidad alta, esto es, con un número excesivo de elementos y normalmente dispersos, a otro vector de dimensionalidad mucho más reducida. Este método nos permite generar un vector denso y de dimensionalidad reducida que contiene, por ejemplo, un resumen de toda la información que disponemos de un usuario. Este nuevo vector, por lo tanto, se puede utilizar como embedding.

RNN y Transfomers

Las arquitecturas basadas en Redes Neuronales Recurrentes (RNN) son capaces de modelar datos secuenciales y su representación interna puede ser utilizada como embedding de la secuencia de entrada.

Más recientemente, las arquitecturas basadas en Transformers se han mostrado más eficaces a la hora de modelar datos secuenciales. Es por ello que estas arquitecturas también se pueden utilizar para generar embeddings. Concretamente, podríamos utilizar los vectores resultantes de la última capa del codificador de un transformer para generar los embeddings.

Grafos

En algunos casos, podemos representar nuestros datos en un grafo, es decir, en forma de nodos que se relacionan entre ellos mediante aristas. Por ejemplo, si tenemos cuentas bancarias que realizan transacciones, podemos representar estos datos en un grafo donde los nodos representan las cuentas y las aristas reflejan las transacciones de una cuenta a otra.

A partir de un grafo es posible aplicar algoritmos con el fin de generar un embedding para cada uno de sus nodos. En este caso, los embeddings pueden capturar información como las relaciones y topología de un nodo.

Uno de los primeros métodos propuestos para generar embeddings de los nodos de un grafo fue DeepWalk4, el cual está basado en combinar otros algoritmos existentes como Random Walk y el propio Word2Vec. Node2vec5 fue una propuesta de mejora del algoritmo DeepWalk que ofrecía un mayor control en la exploración del grafo. Más recientemente, arquitecturas de Graph Neural Networks como GraphSage6 o Deep Graph Informax7 han sido propuestas para la generación de embeddings de los nodos.

Embeddings en banca

Mientras que el uso de embeddings ha sido frecuentemente documentado en grandes empresas tecnológicas (Spotify, Netflix, Instarcart, Airbnb), su uso ha sido menos frecuente en la industria bancaria.

Uno de los trabajos más destacados viene por parte del equipo de Capital One. En este caso, las transacciones efectuadas con tarjetas de crédito son representadas mediante un grafo, en el que se refleja la información de la cuenta bancaria asociada a cada tarjeta y el comercio donde se realiza la compra. Tras ello, se aplican técnicas para la creación de embeddings de los nodos de un grafo con el fin de obtener un embedding para cada cuenta y comercio. El objetivo es que las cuentas que realizan compras en el mismo tipo de comercios acaben teniendo un embedding similar, así como los comercios que tengan clientes con hábitos de compra similares generarán de igual manera un embedding similar.

En sus resultados podemos ver algunos hechos interesantes. Como dato curioso, vemos que los embeddings más cercanos a la aerolínea “Delta Air Lines” son otras aerolíneas como “United Airlines” o “American Airlines”.