Suponha que eu queira aprender um classificador que prevê se um email é spam. E suponha que apenas 1% dos e-mails sejam spam.
A coisa mais fácil a fazer seria aprender o classificador trivial que diz que nenhum dos emails é spam. Esse classificador nos daria 99% de precisão, mas não aprenderia nada de interessante e teria uma taxa de 100% de falsos negativos.
Para resolver esse problema, as pessoas me disseram para "reduzir a amostra" ou aprender em um subconjunto de dados em que 50% dos exemplos são spam e 50% não são spam.
Mas estou preocupado com essa abordagem, já que quando construímos esse classificador e começamos a usá-lo em um conjunto real de e-mails (em oposição a um conjunto de testes 50/50), pode prever que muitos e-mails são spam quando eles " re realmente não. Só porque está acostumado a ver muito mais spam do que realmente existe no conjunto de dados.
Então, como podemos resolver esse problema?
("Upsampling", ou repetir os exemplos positivos de treinamento várias vezes, para que 50% dos dados sejam exemplos positivos de treinamento, parece ter problemas semelhantes.)
fonte
O verdadeiro problema aqui é a sua escolha de métrica:% de precisão é uma medida ruim do sucesso de um modelo em um conjunto de dados desequilibrado (pelo exatamente motivo que você mencionou: é trivial atingir 99% de precisão nesse caso).
Equilibrar seu conjunto de dados antes de ajustar o modelo é uma solução ruim, pois influencia seu modelo e (ainda pior) lança dados potencialmente úteis.
É muito melhor equilibrar sua métrica de precisão do que equilibrar seus dados. Por exemplo, você poderia usar precisão equilibrada ao avaliar você modelo:
(error for the positive class + error for the negative class)/2
. Se você prever tudo positivo ou todo negativo, essa métrica será50%
qual é uma propriedade legal.Na minha opinião, o único motivo para fazer uma amostragem reduzida é quando você tem muitos dados e não pode se ajustar ao seu modelo. Muitos classificadores (regressão logística, por exemplo) se sairão bem em dados não balanceados.
fonte
Como sempre,
@Marc Claesen
como uma ótima resposta.Eu apenas acrescentaria que o conceito principal que parece estar faltando é o conceito de uma função de custo . Em qualquer modelo, você tem um custo implícito ou explícito de falsos negativos a falsos positivos (FN / FP). Para os dados desequilibrados descritos, muitas vezes você deseja ter uma proporção de 5: 1 ou 10: 1. Existem muitas maneiras de introduzir funções de custo nos modelos. Um método tradicional é impor um corte de probabilidade às probabilidades produzidas por um modelo - isso funciona bem para a regressão logística.
Um método usado para classificadores estritos que naturalmente não produzem estimativas de probabilidade é subamostrar a classe majoritária em uma proporção que induzirá a função de custo em que você está interessado. Observe que, se você amostrar em 50/50, estará induzindo uma função de custo arbitrária. A função de custo é diferente, mas tão arbitrária como se você tivesse amostrado na taxa de prevalência. Muitas vezes, você pode prever uma taxa de amostragem apropriada que corresponda à sua função de custo (geralmente não é 50/50), mas a maioria dos profissionais com quem conversei apenas experimenta algumas taxas de amostragem e escolhe a mais próxima de sua função de custo.
fonte
Respondendo diretamente à pergunta de Jessica - um motivo para reduzir a amostragem é quando você trabalha com um grande conjunto de dados e enfrenta limites de memória no seu computador ou simplesmente deseja reduzir o tempo de processamento. Reduzir a amostragem (ou seja, coletar uma amostra aleatória sem substituição) dos casos negativos reduz o conjunto de dados para um tamanho mais gerenciável.
Você mencionou o uso de um "classificador" na sua pergunta, mas não especificou qual. Um classificador que você pode querer evitar são as árvores de decisão. Ao executar uma árvore de decisão simples em dados de eventos raros, geralmente encontro que a árvore cria apenas uma única raiz, pois tem dificuldade em dividir tão poucos casos positivos em categorias. Pode haver métodos mais sofisticados para melhorar o desempenho das árvores em eventos raros - eu não conheço nenhum deles de cabeça para baixo.
fonte
É claro que classificar tudo como 'sem spam' permite que você diga que, considerando 100 e-mails, classifica corretamente 99 deles, mas também classifica como 'sem spam' o único rotulado como spam (100% de falso positivo). Acontece que a métrica que você escolhe para avaliar o algoritmo não é adaptada. Este vídeo exemplifica o conceito.
Grosso modo, o balanceamento do conjunto de dados permite ponderar os erros de classificação incorreta. Um algoritmo que usa um conjunto de treinamento desequilibrado presumivelmente não aprenderá a discriminar os recursos, porque não daria muita importância ao fato de classificar incorretamente os dados da classe escassa.
fonte
Eu não aceitaria a redução ou a subamostragem, pois isso engana o algoritmo de aprendizado; no entanto, se os dados foram desequilibrados, a medida de precisão se torna inválida ou não informativa; portanto, é melhor usar medidas de precisão e recuperação, ambas dependem principalmente do TP ( os spam classificados corretamente no seu caso) fornece uma boa idéia sobre o desempenho real do seu sistema em termos de detecção de spam, independentemente do número de exemplos negativos.
fonte