O terceiro caso de automação inteligente de processos financeiros nesta série de artigos sobre a utilização do AI Builder da Plataforma Power, é referente à deteção de anomalias em movimentos contabilísticos ou em transações financeiras. Penso que é uma solução muito interessante e que valoriza muito o trabalho de profissionais destas áreas.
Qual o interesse em detetar anomalias em movimentos contabilísticos?
A principal vantagem em automatizar este processo prende-se com a eliminação de trabalho manual. Todos os anos, empresas de todo o tipo e dimensão suportam custos com a validação e correção de movimentos contabilísticos.
Outra vantagem crucial da deteção automatizada de anomalias em movimentos contabilísticos é a redução do risco de erro e fraude. Com a utilização do AI Builder, é possível identificar padrões irregulares ou transações suspeitas em tempo real, permitindo uma resposta proativa e evitando prejuízos financeiros significativos.
Além disso, esta automação contribui para um melhor cumprimento das normas e regulamentações. As empresas operam num ambiente cada vez mais regulado, onde a conformidade com normas fiscais e contabilísticas é fundamental. A deteção rápida de erros ou inconsistências facilita auditorias e garante que as demonstrações financeiras estão corretas, reduzindo o risco de penalizações e sanções.
Outro benefício relevante é o aumento da eficiência e produtividade das equipas financeiras. Em vez de investirem tempo a rever manualmente centenas ou milhares de transações, os profissionais podem focar-se na análise estratégica dos dados e na tomada de decisões informadas. Isto não só melhora a qualidade do trabalho, como também aumenta a motivação das equipas, que deixam de estar sobrecarregadas com tarefas repetitivas.
Por fim, a implementação desta tecnologia proporciona uma visão mais clara da saúde financeira da empresa. Ao identificar padrões anómalos e possíveis desvios nas contas, as organizações conseguem tomar medidas corretivas rapidamente, melhorando a fiabilidade dos relatórios financeiros e garantindo um melhor controlo sobre as suas operações.
Diferença entre deteção de anomalias com base em regras e com base em modelos de Machine Learning
A deteção de anomalias pode ser feita com base em regras predefinidas ou através de modelos preditivos baseados em inteligência artificial (IA). Ambas as abordagens têm vantagens e são usadas em diferentes contextos.
Deteção de anomalias com base em regras
Esta abordagem consiste na definição de um conjunto de regras fixas que determinam se um determinado movimento é considerado anómalo. Essas regras são criadas com base no conhecimento do negócio e na experiência de analistas financeiros.
Exemplos de regras comumente utilizadas por auditores:
- Movimentos acima de um determinado valor exigem aprovação manual.
- Transações duplicadas dentro de um intervalo de tempo são sinalizadas.
- Lançamentos contabilísticos em contas invulgares para um determinado tipo de operação são considerados suspeitos.
- Diferenças entre faturas e pagamentos acima de uma determinada percentagem são analisadas.
Vantagens desta abordagem:
- Simples de implementar e compreender.
- Permite um controlo rigoroso baseado na regulamentação e boas práticas da empresa.
- Transparente: os utilizadores sabem exatamente como as anomalias são identificadas.
Desvantagens:
- Rígida e inflexível: não se adapta a padrões de comportamento em evolução.
- Pode gerar muitos falsos positivos (quando transações normais são erradamente sinalizadas) e falsos negativos (quando transações fraudulentas não são detetadas porque não correspondem às regras predefinidas).
- Exige atualizações constantes das regras à medida que o negócio muda.
Deteção de anomalias com base em modelos preditivos
Nesta abordagem, são usados algoritmos de machine learning para identificar anomalias com base em padrões históricos de dados. O modelo aprende com os dados passados e consegue detetar comportamentos inesperados, mesmo que não estejam cobertos por regras fixas.
Como Funciona:
- O modelo analisa um grande volume de transações históricas e aprende os padrões normais de comportamento.
- Quando uma nova transação ocorre, o modelo compara-a com os padrões previamente aprendidos.
- Se a transação for significativamente diferente do comportamento habitual, é sinalizada como anómala.
Exemplos de modelos utilizados:
- Modelos supervisionados: São treinados com dados etiquetados, ou seja, transações que já foram classificadas como normais ou anómalas. Exemplo: regressão logística, árvores de decisão.
- Modelos não supervisionados: Analisam padrões sem ter rótulos prévios, identificando automaticamente desvios estatísticos. Exemplo: clustering, redes neurais, autoencoders.
Vantagens:
- Adaptam-se automaticamente a novos padrões de fraude e erro, melhorando ao longo do tempo.
- Reduzem a necessidade de atualizações manuais constantes.
- Conseguem detetar anomalias complexas e menos óbvias, que não seriam captadas por regras fixas.
- Menos falsos positivos, porque consideram todo o contexto dos dados.
Desvantagens:
- Requerem um volume significativo de dados históricos para treinar o modelo.
- Podem ser mais difícil de interpretar: em alguns casos, a IA pode sinalizar uma anomalia sem que seja imediatamente claro o motivo.
- Exigem mais recursos computacionais e conhecimento técnico para implementação.
Treinar um modelo de deteção de anomalias com o AI Builder
Tal como referimos no artigo anterior desta série, o AI Builder requer que os dados de treino estejam alojados numa tabela do Dataverse. Neste caso, usámos uma tabela com milhares de movimentos contabilísticos de uma empresa, sendo a estrutura a seguinte:
- Data/hora do movimento
- Conta
- Descritivo
- Valor a débito
- Valor a crédito
- Saldo
Finalmente, e essencial por se tratar de um modelo preditivo, a coluna isAnomaly, do tipo binária, identifica se determinado movimento é anómalo (1) ou não (0). É esta coluna que será usada para treinar o modelo e é também a mais difícil de obter.
Tratando-se de um problema de classificação binária em que uma das classes (0) é a predominante, a sua resolução é significativamente mais difícil. Apenas 2% das transações foram identificadas como anómalas, o que obriga à recolha de um volume significativamente maior de dados, porque o modelo, para ser treinado eficazmente, tem de ser exposto à mesma proporção de observações de cada classe.
Por outro lado, durante a fase de recolha e pré-processamento dos dados, foi necessário utilizarem-se algumas técnicas de sobre representação da classe minoritária (é um tema para outro artigo).
Com estas questões técnicas ultrapassadas, o treino do modelo com o AI Builder é relativamente simples. Toda a interface, como já vimos, é muito amigável e totalmente no-code.
O primeiro passo consiste em identificar a label (a coluna para a qual se pretende a previsão, neste caso, a coluna isAnomaly). Segue-se a identificação das colunas com os atributos de previsão, tal como demonstrado na imagem acima.
Temos também a possibilidade de aplicar determinados filtros aos dados, como opção, o que pode ser útil se se pretender guardar um subconjunto de dados para validação ou teste, por exemplo.
Com estes parâmetros, treina-se o modelo clicando na coluna “Train”, o que não poderia ser mais simples:
O AI Builder vai procurar identificar padrões nestes dados com capacidade preditiva para identificar as anomalias. Nos dados de treino, os resultados foram os seguintes:
Obtivemos a classificação de B para um resultado R2 de 81%. Não é mau, tendo em conta a dificuldade de treino deste tipo de modelos. O resultado mostra também a explicação, o que ajuda a interpretar o modelo. Podemos ver que as variáveis mais importantes são o dia em que a transação ocorreu e o respetivo montante. As despesas com hotéis também têm muita influência.
Os resultados detalhados, incluindo métricas detalhadas podem ser exportadas diretamente do AI Builder para um ficheiro JSON que, neste caso, apresentou o seguinte:
{ "metrics": [ { "name": "Mean Absolute Percentage Error", "value": 13.601489290030033, "type": "numerical", "isGlobalScore": false }, { "name": "Mean Absolute Error", "value": 0.11768011565604834, "type": "numerical", "isGlobalScore": false }, { "name": "Normalized Root Mean Squared Error", "value": 0.21590156333260785, "type": "numerical", "isGlobalScore": false }, { "name": "R2 Score", "value": 0.8120944591248344, "type": "numerical", "isGlobalScore": false }, { "name": "Performance Score", "value": 0.8120944591248344, "type": "percentage", "isGlobalScore": true }, { "name": "Root Mean Squared Error", "value": 0.21590156333260785, "type": "numerical", "isGlobalScore": false }, { "name": "Spearman", "value": 0.8390281057498175, "type": "numerical", "isGlobalScore": false } ] }
Testar a eficácia do modelo em dados desconhecidos
Antes de colocar o modelo em prática, é necessário testá-lo. Os dados que usaremos para testar o modelo são diferentes dos dados usados no treino, claro, e veremos se os resultados são satisfatórios. Ainda que o AI Builder faça internamente a separação de dados de treino e teste para a obtenção dos resultados, ao colocar o modelo à prova com dados que ainda não tinha visto, obtivemos a seguinte matriz de confusão:
A verde, os casos em que acerta e a laranja os erros.
Colocar o modelo em prática
Podemos deixar o modelo em piloto automático, executando-o regularmente, uma vez por dia, e atualizando os resultados diretamente no Dataverse, ou podemos criar soluções de automação inteligente com o Power Automate.
É possível, por exemplo, chamar o modelo a cada nova entrada (a cada novo lançamento) e obter uma previsão. Em função do resultado, se se tratar de uma anomalia, podemos disparar um alerta, um e-mail, por exemplo, a informar que a anomalia foi identificada e requer validação.