Lidando com Classificação Desequilibrada
A maioria dos problemas de classificação do mundo real é desequilibrada. Fraude, doenças, cancelamento de assinaturas e defeitos são raros por natureza. Classificadores padrão buscam a precisão, então eles ignoram silenciosamente a classe que você mais se importa. Durante anos, a técnica SMOTE foi a solução reflexiva que todos alcançaram primeiro. No entanto, a SMOTE frequentemente falha nos dados desordenados e de alta dimensionalidade que os sistemas de produção realmente veem. Este guia vai além da SMOTE. Você aprenderá sobre aprendizado sensível a custos, funções de perda modernas, conjuntos balanceados, detecção de anomalias e as métricas que expõem o que realmente funciona.
A classificação desequilibrada descreve uma distribuição assimétrica entre as classes-alvo que você deseja prever. O grupo menor é a classe minoritária, e o grupo maior é a classe majoritária. Costumamos expressar a assimetria como uma razão de desequilíbrio, como 100:1. Uma razão de 100:1 significa que um caso raro aparece para cada cem casos comuns. A classe minoritária é quase sempre a que tem valor comercial. Transações fraudulentas, tumores malignos e clientes que cancelam assinaturas são raros, mas caros de perder. Portanto, o custo dos erros é assimétrico, e essa assimetria deve guiar todas as suas escolhas de modelagem.
O desequilíbrio é a regra, e não a exceção, em aprendizado de máquina aplicado. A classe rara é o sinal, e a classe comum é o ruído de fundo. Os seguintes domínios compartilham essa estrutura, e cada um recompensa o manuseio cuidadoso da classe minoritária. A precisão mede a parcela de previsões corretas em todas as classes igualmente. Isso soa razoável até que uma classe domine o conjunto de dados. Com uma classe majoritária de 98%, um modelo pode atingir 98% de precisão prevendo nada de útil. Ele simplesmente rotula cada caso como o da classe majoritária e nunca encontra o evento raro.
É por isso que a precisão mente em dados desequilibrados. Uma alta pontuação pode esconder um modelo que está completamente cego para a classe minoritária. Você precisa de métricas que se concentrem na classe rara, como precisão, recall e PR-AUC. Voltaremos a essas métricas em detalhes mais tarde. Antes de comparar técnicas, precisamos de um conjunto de dados consistente e uma linha de base clara. Um espaço de trabalho compartilhado nos permite julgar cada método em pé de igualdade. Vamos criar um conjunto de dados sintéticos de fraude com um desequilíbrio pesado. Em seguida, treinaremos um classificador ingênuo para mostrar exatamente como a precisão engana.
Geramos um conjunto de dados binário com 20.000 amostras e uma classe minoritária de cerca de 2%. Isso imita um cenário realista de fraude ou evento raro sem precisar de dados privados. Usar dados sintéticos mantém os exemplos reproduzíveis em qualquer máquina. Você pode substituir seu próprio conjunto de dados mais tarde com quase nenhuma alteração no código. Os exemplos dependem de uma pilha padrão e pequena do ecossistema Python. Cada biblioteca desempenha um papel específico no fluxo de trabalho de aprendizado desequilibrado. Instale-as com o pip antes de executar qualquer código abaixo.
Primeiro, criamos o conjunto de dados e inspecionamos sua distribuição de classes. Sempre olhe para as contagens brutais antes de modelar qualquer coisa. Também dividimos os dados com estratificação para preservar a razão de desequilíbrio. A divisão estratificada mantém a parcela minoritária consistente em conjuntos de treinamento e teste. Em seguida, treinamos uma regressão logística simples sem tratamento de desequilíbrio. Em seguida, comparamos sua precisão contra seu recall na classe minoritária. A lacuna entre esses dois números é o coração do problema. Observe como uma alta pontuação de precisão esconde um modelo quase inútil.
O modelo atinge 97,8% de precisão, mas captura apenas 12,9% dos casos de fraude. Um modelo que prevê cegamente “não fraude” atinge 97,5% de precisão. Portanto, nosso modelo treinado mal supera a previsão aleatória. Esse único resultado motiva todas as técnicas no restante do guia. A SMOTE é a resposta mais famosa ao desequilíbrio de classes, então ela merece um resumo justo. Ela lida com o desequilíbrio no nível dos dados, inventando novos exemplos minoritários. Entender como ela funciona explica tanto seu apelo quanto seus modos de falha. Vamos revisar o mecanismo antes de testá-la.
A SMOTE significa Técnica de Sobre-amostragem Sintética de Minorias. Em vez de copiar pontos minoritários, ela cria novos pontos por interpolação. Ela seleciona uma amostra minoritária, encontra seus vizinhos minoritários mais próximos e desenha um novo ponto entre eles. Isso preenche a região minoritária em vez de apenas duplicar linhas existentes. O objetivo é um conjunto de treinamento mais balanceado sem sobre-duplicação simples. Na teoria, o classificador vê então uma distribuição minoritária mais rica. Na prática, a qualidade desses pontos sintéticos depende fortemente dos dados. Essa dependência é exatamente onde a SMOTE começa a lutar.
Pesquisadores construíram muitas variantes da SMOTE para corrigir suas fraquezas. Cada uma muda como ou onde as amostras sintéticas são criadas. As variantes mais comuns estão disponíveis diretamente na biblioteca imbalanced-learn. Aqui, aplicamos a SMOTE dentro de um pipeline adequado e verificamos os resultados. Resamostramos