EN
Mercury library

¿En qué nos gastamos el dinero? La IA detrás de la clasificación de gastos e ingresos

28/04/2023
Aplicando técnicas de Active Learning, logramos reducir notablemente el esfuerzo dedicado a etiquetar los datos con los que se entrenan los nuevos modelos de clasificación

Mejorar nuestra salud financiera ahora es más fácil gracias a la actualización de una de las funcionalidades que ofrece la app de BBVA: la categorización de movimientos financieros. Las categorías permiten a los usuarios agrupar sus transacciones, para así llevar un mejor control de sus ingresos y gastos, y comprender de forma global la evolución de sus finanzas.

Este servicio, disponible para todos los usuarios en España, México, Perú, Colombia y Argentina, distingue entre grupos de ingresos y gastos, además de ofrecer información sobre ahorro, inversión y financiación, lo que facilita tomar medidas como la definición de presupuestos. Además, los usuarios pueden ver cuánto han ingresado por distintos conceptos (nómina, Bizum, transferencias…) o qué tipos de gastos han tenido un mayor impacto en su situación financiera (ocio, moda, alimentación…).

Detalle de pantallas de Salud Financiera en la app de BBVA
Figura 1. Detalle de pantallas de Salud Financiera en la app de BBVA.

Un modelo para clasificar movimientos de otras entidades

La categorización de finanzas engloba tanto movimientos en cuentas de BBVA como de otras entidades que cualquier usuario (ya sea cliente o no) puede agregar y gestionar en la app de BBVA. Esta visión panorámica de las finanzas es posible desde la entrada en vigor de la directiva europea PSD21.

La PSD2 especifica que la información que se comparte de los movimientos agregados de otros bancos debe incluir al menos el banco procedente, el tipo de contrato, el importe y un campo de texto que describa la transacción. A partir de esta normativa, se habilitó la categorización de movimientos financieros de otras entidades.

Para ello, se desarrolló un modelo que procesa la descripción textual del movimiento para así asignar la categoría más adecuada de entre todas las definidas en BBVA. El resultado que arroja es homogéneo independientemente de la entidad de origen.

Este modelo se construyó como un clasificador multiclase siguiendo un enfoque supervisado2, por lo que era necesario contar con ejemplos etiquetados.

Nueva taxonomía: Adaptamos el modelo a los nuevos tiempos

En noviembre de 2022 implementamos una nueva versión de nuestra Taxonomía de tipos de gastos e ingresos, la cual permite a nuestros clientes conocer los detalles de su salud financiera y actuar para mejorarla. Este cambio de taxonomía implicó la actualización del modelo que clasifica movimientos financieros, tarea realizada con la ayuda de Annotify, una herramienta desarrollada en BBVA AI Factory que permite etiquetar grandes conjuntos de datos.

Ahora, nuestros clientes pueden comprender de forma más transversal sus finanzas, al tiempo que reciben información sobre nuevos medios de pago, inversiones o suscripciones. El servicio ofrece una visión detallada de los tipos de gastos, ingresos e inversiones, divididos en categorías y subcategorías. Además, en línea con el compromiso de BBVA con la sostenibilidad, se puede obtener información detallada acerca de la huella de carbono, para así emprender acciones para reducirla. Esta información versa, por ejemplo, sobre los gastos asociados tanto a los vehículos privados (impuestos, combustible, parkings…) como al uso del transporte público.

Asimismo, podemos identificar los movimientos monetarios asociados a otros medios de pago e inversiones, tales como pagos Bizum, PayPal, o transacciones con criptomonedas, así como llevar un control sobre los gastos en servicios digitales y suscripciones tipo Netflix o Spotify.

Con esta nueva taxonomía hemos mejorado sustancialmente las métricas respecto a la versión anterior. En concreto, hemos mejorado tanto la precisión calculada con su definición habitual, como la precisión ponderada y la “macro precisión”. Paralelamente, conseguimos reducir el número de movimientos que se utilizaron para entrenar el modelo: de tres millones a unos cuarenta mil.

Con el modelo actual, logramos mejorar la precisión un 28%, mientras reducimos en más de un 98% el número de movimientos etiquetados necesarios para entrenar el modelo
Figura 2. Con el modelo actual, logramos mejorar la precisión un 28%, mientras reducimos en más de un 98% el número de movimientos etiquetados necesarios para entrenar el modelo.
Con el modelo actual, logramos mejorar la precisión un 28%, mientras reducimos en más de un 98% el número de movimientos etiquetados necesarios para entrenar el modelo
Figura 2. Con el modelo actual, logramos mejorar la precisión un 28%, mientras reducimos en más de un 98% el número de movimientos etiquetados necesarios para entrenar el modelo.

El reto: ¿cómo lo hemos conseguido?

El objetivo de la nueva taxonomía era doble. Por un lado, la actualización busca mejorar los resultados del modelo para que nuestros clientes tengan una visión completa de sus movimientos financieros que les ayude a tomar decisiones más convenientes. Por otro lado, se aprovechó para mejorar el proceso de desarrollo del modelo de clasificación (Machine Learning) para movimientos realizados en otras entidades financieras, reduciendo los esfuerzos en el etiquetado de los datos.

El desarrollo del anterior modelo implicó el etiquetado de tres millones de movimientos con diferentes estrategias, entre ellas el etiquetado manual de datos muestreados y el uso de reglas automáticas de etiquetado a partir de la similitud con otras etiquetas de movimientos bancarios. Para crear el modelo actual partimos del conjunto de movimientos más recientes e hicimos la traducción a la nueva taxonomía 2.0. De tres millones de etiquetas pasamos a un millón, pero con dos inconvenientes:

  1. Eran datos con cierta antigüedad, por lo que había tipos de gastos, de inversiones y de comercios que no estaban reflejados en el dataset;
  2. Debido a la manera en la que se etiquetaron esos primeros datos, la distribución de los movimientos por subcategorías no representaba la realidad. Por esto, nos encontramos con la necesidad de etiquetar datos nuevamente.

La herramienta Annotify jugó un papel fundamental para mejorar el proceso, ya que nos permitió seleccionar de forma más efectiva las muestras utilizadas para el entrenamiento del modelo.

Eficientando y disminuyendo el etiquetado de datos

Annotify es una librería que ejecuta métodos de Active Learning (AL), un caso específico de Machine Learning en el que un algoritmo de aprendizaje consulta a un usuario (o a alguna otra fuente de información) a la hora de etiquetar nuevas muestras de datos. Con estas técnicas reducimos la cantidad total de datos etiquetados necesarios para obtener un buen desempeño del modelo, ya que se proponen muestras a etiquetar más valiosas, evitando seleccionar muestras de forma aleatoria.

En esta línea, empleamos AL para seleccionar movimientos financieros que fuesen útiles para el modelo, partiendo de un total de un millón de registros. De estos, se seleccionaron treinta mil registros, pues este dataset más reducido ya era representativo para el modelo (esto es, el rendimiento del mismo no mejoraba sustancialmente al incluir más movimientos).

Sin embargo, con este primer dataset todavía no obteníamos las métricas que esperábamos para el modelo. Para aumentar su rendimiento, volvimos a usar AL seleccionando movimientos del último año, ya que eran los que resultaban más confusos para el primer modelo. El flujo de trabajo que seguimos fue el siguiente:

  1. Entrenar el modelo con el dataset que ya teníamos etiquetado;
  2. Aplicar AL para seleccionar nuevos movimientos a etiquetar;
  3. Etiquetarlos y añadirlos al dataset de datos etiquetados;
  4. Repetimos este ciclo hasta obtener unas métricas que nos convencían, considerando el compromiso entre coste de desarrollo y mejora obtenida en cada iteración.
Entrenamos un primer modelo partiendo de una primera anotación manual y dividiendo las muestras en dos conjuntos: entrenamiento y evaluación. Posteriormente, Annotify propone nuevas muestras a etiquetar, que son corregidas por CleanLab cuando hay discrepancias. Con este conjunto de datos actualizado, podemos volver a entrenar un nuevo modelo y seguir el ciclo de nuevo
Figura 3. Entrenamos un primer modelo partiendo de una primera anotación manual y dividiendo las muestras en dos conjuntos: entrenamiento y evaluación. Posteriormente, Annotify propone nuevas muestras a etiquetar, que son corregidas por CleanLab cuando hay discrepancias. Con este conjunto de datos actualizado, podemos volver a entrenar un nuevo modelo y seguir el ciclo de nuevo.
Entrenamos un primer modelo partiendo de una primera anotación manual y dividiendo las muestras en dos conjuntos: entrenamiento y evaluación. Posteriormente, Annotify propone nuevas muestras a etiquetar, que son corregidas por CleanLab cuando hay discrepancias. Con este conjunto de datos actualizado, podemos volver a entrenar un nuevo modelo y seguir el ciclo de nuevo.
Figura 3. Entrenamos un primer modelo partiendo de una primera anotación manual y dividiendo las muestras en dos conjuntos: entrenamiento y evaluación. Posteriormente, Annotify propone nuevas muestras a etiquetar, que son corregidas por CleanLab cuando hay discrepancias. Con este conjunto de datos actualizado, podemos volver a entrenar un nuevo modelo y seguir el ciclo de nuevo.

Reduciendo el ruido de las etiquetas

Complementamos el uso de AL con Cleanlab, una librería open-source que detecta el ruido en las etiquetas de un dataset. Esto fue necesario porque, si bien íbamos definiendo y unificando criterios de anotación para los movimientos, algunos se podían vincular a varias subcategorías según la interpretación del anotador. Para reducir el impacto de tener subcategorías diferentes para movimientos similares, empleamos Cleanlab en la detección de discrepancias. Finalmente, obtuvimos un dataset de cuarenta mil movimientos etiquetados en total.

Las muestras propuestas por Annotify son etiquetadas por los anotadores. Posteriormente, CleanLab resuelve las posibles discrepancias de los anotadores a la hora de etiquetar movimientos (muestras) similares
Figura 4. Las muestras propuestas por Annotify son etiquetadas por los anotadores. Posteriormente, CleanLab resuelve las posibles discrepancias de los anotadores a la hora de etiquetar movimientos (muestras) similares.
Las muestras propuestas por Annotify son etiquetadas por los anotadores. Posteriormente, CleanLab resuelve las posibles discrepancias de los anotadores a la hora de etiquetar movimientos (muestras) similares
Figura 4. Las muestras propuestas por Annotify son etiquetadas por los anotadores. Posteriormente, CleanLab resuelve las posibles discrepancias de los anotadores a la hora de etiquetar movimientos (muestras) similares.

Con todo ello, el categorizador proporciona una experiencia más homogénea para los clientes independientemente de si los movimientos se producen en BBVA o son agregados desde otras entidades, e ilustra los beneficios de la aplicación de técnicas del estado del arte de AL y detección de etiquetas ruidosas en un caso de uso industrial.

Conclusiones

Los proyectos relacionados con Machine Learning implican la implementación de herramientas ya establecidas en la industria, pero hoy día tenemos la posibilidad de experimentar con herramientas innovadoras que facilitan y eficientan el trabajo. En este caso concreto, el uso de técnicas de Active Learning incluidas en Annotify nos ayudó a seleccionar qué datos etiquetar, y CleanLab a reducir la incertidumbre del ruido en las etiquetas.

Este proceso nos ha permitido entrenar el modelo, actualizar el test de entrenamiento y desencadenar el bucle para optimizar su rendimiento, todo esto con el objetivo de reducir el número de movimientos etiquetados y hacer más eficiente un modelo que requiere tiempo y dedicación. Gracias a esto, los científicos de datos podemos centrarnos en tareas que generan más valor para los clientes y organizaciones.