Ao modelar um processo usando ML (aprendizado de máquina), uma das tarefas mais trabalhosas e exigentes é criar uma matriz de dados em volume suficiente para criar um modelo com características de alta qualidade. E se não houver dados suficientes?
Como parte de uma das tarefas de criar um modelo matemático que estima a probabilidade de manipulação das demonstrações financeiras fornecidas pelo cliente ao banco, foi corrigido o problema de dados insuficientes para treinar o modelo com um professor. O relatório financeiro trimestral (FO) foi escolhido como o objeto da matriz. A matriz consistia em vários milhares de objetos e isso foi o suficiente para nossa tarefa. O problema surgiu durante a formação dos valores da variável-alvo. Os analistas identificaram apenas 20 casos comprovados de manipulação de relatórios financeiros. Este é um número extremamente pequeno para uma matriz de vários milhares de objetos. Se a matriz for dividida aleatoriamente, no nosso caso por 5 vezes, ao usar a função de validação cruzada, há uma alta probabilidade de queque qualquer uma das dobras ficará sem objetos com casos comprovados de manipulação de FO. Nesse caso, a funcionalidade de validação cruzada será inútil e o processo de treinamento do modelo terminará com um erro.
À primeira vista, existe uma solução para este problema, que consiste em utilizar o método "indersampling", cuja essência é duplicar no array aqueles objetos para os quais, no nosso caso, os factos da manipulação do DF foram comprovados. Como se viu, o uso do método indersampling resolveu o problema de validação cruzada, mas não foi possível criar um modelo com métricas de qualidade aceitáveis. Concluiu-se que o uso do método “indersampling” não é aconselhável no caso em que o número de objetos da classe minoritária e da classe majoritária diferem em várias ordens de magnitude. Em nosso caso, o método duplicate cria um grande número de objetos no array, que são cópias completas de seus pais. Nesse caso, a matriz perde sua exclusividade e o treinamento em tal amostra leva ao sobreajuste do modelo.A evidência desse fato é demonstrada pelas métricas de qualidade do modelo na amostra de teste.
ROC_AUC :
ROC_AUC, 0,55 . ROC_AUC , , .
. , , .
, «» « ». , , 20% . , 25% , , . . , . 8 – . T/SQL :
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY “PARAMETER”) OVER (PARTITION BY “CLIENT”)
8 , 8 .
():
= ( – _Me/_Me) *100;
= ( – _Me/ _Me) *100;
= | - |;
90% , , . 20 330. , .
ROC_AUC :
ROC_AUC, 0,84 . ROC_AUC , , .
Para atingir um certo equilíbrio entre classes minoritárias e majoritárias na amostra, você pode usar os algoritmos SMOTE ou ASMO da biblioteca imblearn.
Ambos os algoritmos procuram "vizinhos mais próximos". É aconselhável usar esse método quando houver grande confiança de que, em uma classe minoritária, todos os objetos em seus parâmetros são representantes dessa classe. No nosso caso, os objetos caíram na classe minoritária com base nos julgamentos de analistas e, no processo de balanceamento da amostra com base no algoritmo desenvolvido, foram encontrados objetos que, em termos de seus parâmetros, se revelaram os mais proeminentes representantes para designá-los à classe minoritária.