Por que reduzir a amostra?


42

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.)

Respostas:


37

De fato, a maioria dos modelos de classificação não produz uma decisão binária, mas um valor de decisão contínuo (por exemplo, modelos de regressão logística geram uma probabilidade, SVMs geram uma distância sinalizada para o hiperplano, ...). Usando os valores de decisão, podemos classificar as amostras de teste, de 'quase certamente positivo' a 'quase certamente negativo'.

Com base no valor da decisão, você sempre pode atribuir alguns pontos de corte que configuram o classificador de forma que uma determinada fração dos dados seja rotulada como positiva. A determinação de um limite apropriado pode ser feita através das curvas ROC ou PR do modelo . Você pode jogar com o limite de decisão, independentemente do saldo usado no conjunto de treinamento. Em outras palavras, técnicas como up-ou downsampling são ortogonais a isso.

Supondo que o modelo seja melhor do que aleatório, você pode intuitivamente ver que o aumento do limite de classificação positiva (o que leva a previsões menos positivas) aumenta a precisão do modelo ao custo de recall menor e vice-versa.

Considere o SVM como um exemplo intuitivo: o principal desafio é aprender a orientação do hiperplano de separação. A amostragem para cima ou para baixo pode ajudar com isso (eu recomendo preferir a amostragem de aumento do que a redução de amostra). Quando a orientação do hiperplano é boa, podemos jogar com o limiar de decisão (por exemplo, distância sinalizada ao hiperplano) para obter uma fração desejada de previsões positivas.


Obrigado, isso foi muito útil. Como você sabe qual deve ser o limite? Deseja definir o limite para que a proporção de previsões positivas seja igual à proporção de exemplos positivos na população?
Jessica

2
@ Jessica Como eu mencionei, uma maneira conveniente de escolher o limiar é por meio de curvas ROC (Operating Operating Characteristic). Todo limite corresponde a um ponto no espaço ROC. Ao traçar a curva, você pode escolher um limite com base no que se adapta às suas necessidades específicas. (você também pode usar curvas de precisão de recall como uma alternativa)
Marc Claesen

Não concordo que a distância de um ponto de teste ao hiperplano aprendido por um SVM seja qualquer medida de confiança da previsão. Houve esforços para tornar confidenciais as previsões de saída do SVM. Consulte o dimensionamento de Platt, por exemplo. Mas isso não funciona tão bem quanto a classificação de processo gaussiana (confiança na previsão errada).
Seeda 13/01

1
R[0,1]

@ MarcClaesen Não estou sugerindo o uso de escala de Platt; é uma "tentativa" de gerar confidências de previsão, mas existem alternativas melhores. Tudo o que estou dizendo é que usar a distância para o hiperplano não é significativo e revisar a literatura, nunca a encontrei, embora seja a primeira coisa que vem à mente tentando gerar confidências a partir de um SVM.
Seeda

14

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.


Posso perguntar como os classificadores podem se sair bem em dados desequilibrados? Talvez sejam apenas meus dados, mas eu tentei treinar regressão logística, florestas aleatórias e modelos C5.0 nos meus dados de treinamento, tanto desequilibrados quanto equilibrados usando over / undersampling misto. Os modelos treinados nos dados desequilibrados têm um desempenho muito pior no meu conjunto de testes do que aqueles treinados em dados balanceados.
27418 Seanosapien

13

Como sempre, @Marc Claesencomo 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.


2
Obrigado por mencionar isso, é uma ideia interessante que eu não tinha considerado. Como você pode saber qual taxa de amostragem corresponde à sua função de custo?
Jessica

8

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.

β0

βc=β0log(p+1p+)

p+

nnnNn


3

É 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.


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.