Mucho se está hablando de la inteligencia artificial durante estos días y si llegaste a este blog buscando saber el detalle de lo que es Finance Insights y sus funcionalidades en D3FO, dejame decirte que bueno.. este no lo es.. Quizás en otra ocasión 😉
Pero si alguna vez te preguntaste qué hay detrás de todas las predicciones que vemos desde D3FO, en este blog despliego mi faceta matemática para contarte qué fórmulas y elementos estadísticos componen las predicciones de lo que vemos en esta funcionalidad y cómo utilizando algunos conceptos podemos entender mejor el machine learning (o aprendizaje automático en español)…
Lo primero que tenemos que tener en cuenta es que con Finance Insights se utilizan plantillas inteligentes de aprendizaje para construir los modelos predictivos. Se envían “paquetes” de datos y se procesa la información en AI Builder para devolver la predicción al sistema.
Con cada envío, desde el modelo se realiza la comprobación entre la predicción anterior y la información real, para ir aprendiendo y obtener resultados más precisos. Aquí está la inteligencia del machine learning.
Luego de procesar los datos, la información predictiva viaja a D3FO y la podemos analizar desde:
🌱 Módulo de Crédito y Cobros: Predicciones de pagos de clientes
- Predicciones de pagos de clientes
- Predicciones de pagos de transacciones
🌱 Módulo de Gestión de Efectivo y Bancos: Previsión de flujos de efectivo
- Posición del efectivo
- Pronóstico del efectivo
🌱 Módulo de Presupuestación: Propuestas de presupuesto
Ahora veamos… ¿Cuál es la matemática detrás? Descifremos las predicciones de pagos a clientes:
Primero nos encontramos con algo de estadística con los resultados de los modelos de aprendizaje automático.
Aquí vamos a ver lo que es, hasta el momento, la estrella o el principal punto de partida de las herramientas de machine learning.
🌱 MATRIZ DE CONFUSIÓN
Esta matriz es una herramienta que se utiliza para evaluar la cantidad de aciertos y errores que un modelo ha cometido durante el procesamiento de datos. Podemos decir que mide el desempeño o rendimiento del algoritmo y su propósito es mejorar su conocimiento de la precisión en los resultados.
Según el resultado de la predicción haya sido un acierto o un error (en esta matriz las llamamos “Clase Positiva” y “Clase Negativa”) tenemos 4 (cuatro) posibles estados:
- TP – VERDADERO POSITIVO: son los casos en los que el modelo predijo correctamente la clase positiva. Es decir, el valor real es positivo y el modelo predijo también positivo.
- FN – FALSO NEGATIVO: son los casos en los que el modelo predijo la clase negativa cuando era realmente la clase positiva (o error tipo II).
- FP – FALSO POSITIVO: son los casos en los que el modelo predijo la clase positiva cuando era realmente la clase negativa (o error tipo I).
- TN – VERDADERO NEGATIVO: son los casos en los que el modelo predijo correctamente la clase negativa. El valor real es negativo y la prueba predijo también que el resultado era negativo.
Organizamos estos resultados en una matriz, en las columnas el número de predicciones y en las filas el número real:

Con el armado de esta matriz partimos de la base para obtener las métricas: por un lado, la exactitud y la precisión del modelo, y por otro su sensibilidad y la especificidad, y adicionalmente el valor F1.
Veamos la EXACTITUD:
Representa el porcentaje de predicciones correctas frente al total de los casos.
Se mide de 0 a 1, y cuanto más cerca del 1 se encuentra el resultado mas exacto es el modelo.
La fórmula es:

En un ejemplo, tenemos:

Y el VALOR F1:
Con esta métrica obtenemos una medida en el rendimiento de un modelo de clasificación que combina la precisión y la sensibilidad o recuperación (recall).
- Precisión: es la proporción de verdaderos positivos (TP) entre todos los elementos clasificados como positivos (TP + FP). Mide la exactitud de las predicciones positivas:

- Sensibilidad (recuperación o recall): es la proporción de verdaderos positivos (TP) entre todos los elementos que realmente son positivos (TP + FN). Mide la capacidad del modelo para identificar todos los casos positivos.

Entonces el valor F1 es:

En nuestro ejemplo:


🌱 ¿Pero cómo la utilizamos en D365FO?
Podemos ver el resultado de la evaluación del modelo de predicción para medir su efectividad, por ejemplo, con las predicciones de pagos de cliente.
Si accedemos a los parámetros de Finance Insights desde D3FO vamos a identificar la precisión, en este caso obtenida es del 62%:

Si accedemos a AI Builder seleccionando la opción ‘Mejorar la precisión del modelo’ podemos obtener mayor detalle de nuestro modelo:
Rendimiento: nos proporciona la información de la calidad de las predicciones. Aquí vamos a encontrar la información para armar nuestra matriz de confusión.
Datos mas influyentes: nos proporciona la información de los diferentes tipos de datos de entrada para el modelo y su importancia para el análisis.

Para obtener mas información del rendimiento y poder armar nuestra matriz de confusión tenemos que seleccionar la opción ‘Descargar métricas detalladas’:

Y descargamos este precioso archivo, he pintado de verde el apartado de la información de la matriz:

Vamos a ordenarla en una matriz de confusión multiclase, siendo:
0: puntual
1: tarde
2: muy tarde


Desde los detalles podemos ver que el porcentaje 73% se incluye dentro de la ‘B’, qué representa y el resultado que obtuvimos:

Y si vemos el valor F1 que se ha calculado desde el modelo:
{«name»: «F1 Macro», «value»: 0.5998724693129285, «type»: «percentage», «isGlobalScore»: false}]}
Podemos corroborarlo con nuestra matriz de confusión. Como es multiclase debemos calcular los valores F1 de cada clase y luego se promedia:
(Como aclaración, los valores FP son los verticales y los valores FN son los horizontales)

🌱Si llegaste hasta aquí déjame decirte que esta parte ya es más sencilla!
Ahora veamos qué pasa con las predicciones de pagos de clientes.
¿De dónde obtenemos la información de cada columna de predicción (bucket)?
Tomemos un cliente como ejemplo, vemos que sus predicciones de pago:

Puntual: 11%
Tarde: 86%
Muy tarde: 3%
Y si vamos a las predicciones de sus transacciones, tenemos la probabilidad de puntualidad y las predicciones de cada una de ellas:

Esta parte es tan simple como calcular el peso medio ponderado de cada columna. Es muy fácil verlo desde un Excel:
Tenemos en un primer apartado el detalle de las previsiones de todas las transacciones del cliente:

En un segundo apartado vamos a calcular:
- Calcular el peso de cada factura en cada bucket.
Por ejemplo para la Fc 1:
Saldo*puntual/100 = 7577.63*10/100 = 757.763
Saldo*Tarde/100 = 7577.63*87/100 = 6592.5381
Saldo*Muy tarde/100= 7577.63*3/100 = 227.3289
2. Sumar todos los importes obtenidos en cada bucket.
En nuestro ejemplo vemos los totales:
Puntual: 3155.888
Tarde: 24948.7165
Muy tarde: 969.0797
3. Calculamos el total del importe de los buckets, en nuestro caso es 29073.6842
4. Calculamos el peso de cada importe total del bucket sobre el total:
Puntual: 3155.888/29073.6842 = 0.10854792
Tarde: 24948.7165/29073.6842 = 0.85812023
Muy tarde: 969.0797/29073.6842 = 0.03333185

Y eso es todo! Espero que les sirva 🙂
Antes de despedirme, siempre es importante recalcar que se debe tener en cuenta que lo importante de estas predicciones (mas allá de nuestros cálculos) es poder entender el contexto de la organización y sus procesos, usar correctamente el sistema, utilizarlo mucho, y tomar decisiones en base a la información obtenida.
Nos vemos en la próxima!