Detecção de anomalia em um ERP
A Kugel fornece um ERP completo para Cooperativas Agroindustriais e dentro desse ERP temos um sistema para o controle do plantio, que vai desde o planejamento do plantio até a venda das sementes e fertilizantes para os cooperados.
O planejamento de plantio é muito importante, porque é a partir dele que a cooperativa negocia as compras com os fornecedores. Quanto mais assertivo for o planejamento, melhor será o resultado financeiro da cooperativa, pois terá menos desperdício de insumos.
Existe um período para que os agrônomos façam o planejamento de plantio, após esse período o planejamento é bloqueado para aprovação da gerência. Em nosso maior cliente, cada safra tem mais que 10 mil planejamentos para serem aprovados e isso estava tornando a aprovação menos detalhada e mais suscetível a erros.
Como tinha acabado de terminar um curso de machine learning percebi que a maioria dos erros nos planejamentos poderiam ser detectados como anomalias utilizando Distribuição normal.
Para fazer o cálculo de probabilidade e detectar se algum planejamento está anormal, são necessárias duas variáveis, a média e a variância. A média define o local da distribuição no eixo x e a variância define o quanto o valor varia.
Para calcular a probabilidade, todos os dados devem ser numéricos. No caso dos planejamentos existem três dados que são importantes:
- Data do plantio
- Espaçamento
- Quantidade de plantas por metro quadrado
Como o espaçamento e a quantidade de planta por metro quadrado já são números decimais não é necessário fazer nenhuma conversão. No caso da data do plantio é convertida para a quantidade de dias desde o início da safra.
Para calcular a média e a variância utilizamos as seguintes fórmulas:
Sendo “m” a quantidade total de planejamentos de plantio e “x” a variável que estamos verificando. No caso dos planejamentos temos três variáveis que queremos controlar que define quando e quanto será utilizado. Então é realizado o cálculo da média e da variância para cada variável, ou seja, temos três médias e três variâncias.
Com a média e a variância é possível calcular a densidade de probabilidade. Quanto menor o valor da densidade, maior a probabilidade do valor ser uma anomalia.
Com os planejamentos que eu tinha para teste, achei melhor criar três faixas de valores para apresentar em tela:
- f(x) > 0.2, planejamento normal
- f(x) ≤ 0.2 e > 0.0001, planejamento com possível erro (em amarelo)
- f(x) ≤ 0.0001, planejamento com erro (em laranja)
Ainda ficaram alguns casos em que o sistema acusava tudo como anomalia ou nenhuma anomalia quando deveria ter acusado algumas. Identifiquei que isso estava ocorrendo em casos que existiam poucos planejamentos e tinha pelo menos um que estava muito fora da faixa que deveria ser considerada padrão.
Isso ocorre porque a média fica deslocada e a variância muito alta. Então resolvi esse problema excluindo 5% dos menores e maiores valores para calcular a média e a variância.
Utilizando conceitos básicos de detecção de anomalia, conseguimos diminuir consideravelmente o risco de erros graves e ainda a diminuição considerável de tempo para análise e aprovação dos planejamentos.