Classificação binária com classes fortemente desequilibradas


52

Eu tenho um conjunto de dados na forma de (recursos, saída binária 0 ou 1), mas 1 acontece muito raramente, portanto, sempre prevendo 0, obtenho precisão entre 70% e 90% (dependendo dos dados específicos que vejo) ) Os métodos de ML me dão a mesma precisão e, acredito, deve haver alguns métodos padrão a serem aplicados nessa situação, que melhorariam a precisão em relação à regra óbvia de previsão.


3
Achei este artigo muito útil sobre o assunto: svds.com/learning-imbalanced-classes
J. O'Brien Antognini 20/16

@ J.O'BrienAntognini Esse é um artigo muito legal!
Jinhua Wang

Respostas:


30

Hxd1011 e Frank estão certos (+1). A reamostragem essencial e / ou a aprendizagem sensível ao custo são as duas principais formas de contornar o problema dos dados desequilibrados; terceiro é usar métodos de kernel que às vezes podem ser menos afetados pelo desequilíbrio de classe. Permitam-me enfatizar que não há solução para balas de prata. Por definição, você tem uma classe que é representada inadequadamente em suas amostras.

Dito isto, acredito que você encontrará os algoritmos SMOTE e ROSE muito úteis. SMOTE utiliza eficazmente uma -nearest vizinhos aproximar a excluir membros da classe maioria enquanto de um modo semelhante a criação de exemplos de síntese de uma classe minoritária. O ROSE tenta criar estimativas das distribuições subjacentes das duas classes usando uma abordagem de auto-inicialização suavizada e prová-las para exemplos sintéticos. Ambos estão prontamente disponíveis em R, SMOTE no pacote DMwR e ROSE no pacote com o mesmo nome . Tanto o SMOTE quanto o ROSE resultam em um conjunto de dados de treinamento menor que o original.k

ké realmente bastante informativo para esse assunto. Independentemente da sua métrica, você deve tentar usar um teste separado para avaliar o desempenho do seu algoritmo; exatamente por causa do excesso de ajuste desequilibrado da classe, é ainda mais provável que os testes fora da amostra sejam cruciais.

Provavelmente, o artigo recente mais popular sobre o assunto é Aprendendo com dados desequilibrados, de He e Garcia. Ele fornece uma visão geral muito agradável dos pontos levantados por mim e em outras respostas. Além disso, acredito que o passo a passo sobre a subamostragem para desequilíbrios de classe , apresentado por Max Kuhn como parte do pacote de intercalação é um excelente recurso para obter um exemplo de estrutura de como a sub-amostragem excessiva e a criação de dados sintéticos podem medir um contra o outro.


Uma terceira métrica um tanto popular (e novamente não muito apropriada) é a Área sob a curva da curva Precision-Recall. O artigo de Davis e James, 2006, é considerado um clássico sobre o assunto; CV tem um bom fio também . Recentemente, vi um artigo com o título um tanto impreciso " O gráfico de rechamada de precisão é mais informativo do que o gráfico ROC ao avaliar classificadores binários em conjuntos de dados desequilibrados ", portanto, pode-se verificar também.
usεr11852 diz Reinstate Monic

11
Para uma implementação python de uma variedade de dados re-técnicas de amostragem Eu recomendo o pacote de desequilíbrio aprender: github.com/scikit-learn-contrib/imbalanced-learn
Vadim Smolyakov

Para distribuições de classe altamente desequilibradas, o AUPRC é mais informativo que o AUROC. Detalhes não incluídos aqui, pois este é um comentário. Entre muitas fontes, uma está aqui .
Zhubarb 15/03

15

Primeiro, a métrica de avaliação para dados desequilibrados não seria precisa. Suponha que você esteja realizando uma detecção de fraude, que 99,9% dos seus dados não são fraudulentos. É fácil criar um modelo fictício com 99,9% de precisão. (apenas preveja todos os dados não fraudulentos).

Você deseja alterar sua métrica de avaliação de precisão para outra, como pontuação F1 ou precisão e recall . No segundo link que forneci. há detalhes e intuições sobre por que a recuperação de precisão funcionará.

Para dados altamente desequilibrados, a construção de um modelo pode ser muito desafiadora. Você pode jogar com a função de perda ponderada ou modelar apenas uma classe. como uma classe SVM ou uma gaussiana multi-variável (conforme o link que forneci antes).


2
F1

o link para "precisão e recall" está morto?
Jason

13

Os problemas de desequilíbrio de classe podem ser tratados com aprendizado sensível ao custo ou reamostragem. Veja as vantagens e desvantagens do aprendizado sensível ao custo x da amostragem , copypasted abaixo:


{1} fornece uma lista de vantagens e desvantagens do aprendizado sensível a custos versus amostragem:

2.2 Amostragem

Sobreamostragem e subamostragem podem ser usadas para alterar a distribuição de classe dos dados de treinamento e ambos os métodos foram usados ​​para lidar com o desequilíbrio de classe [1, 2, 3, 6, 10, 11]. O motivo pelo qual alterar a distribuição de classe dos dados de treinamento ajuda a aprender com conjuntos de dados altamente distorcidos é que ele impõe efetivamente custos não uniformes de classificação incorreta. Por exemplo, se alguém altera a distribuição de classe do conjunto de treinamento para que a proporção de exemplos positivos para negativos varie de 1: 1 a 2: 1, então atribui efetivamente uma taxa de custo de classificação incorreta de 2: 1. Essa equivalência entre alterar a distribuição de classe dos dados de treinamento e alterar a taxa de custo de classificação incorreta é bem conhecida e foi formalmente descrita por Elkan [9].

Existem desvantagens conhecidas associadas ao uso da amostragem para implementar o aprendizado sensível aos custos. A desvantagem da subamostragem é que ela descarta dados potencialmente úteis . A principal desvantagem da sobreamostragem , da nossa perspectiva, é que, ao fazer cópias exatas dos exemplos existentes, é provável que haja sobreajuste . De fato, com a superamostragem, é bastante comum que um aluno gere uma regra de classificação para cobrir um único exemplo replicado. Uma segunda desvantagem da superamostragem é que ela aumenta o número de exemplos de treinamento, aumentando assim o tempo de aprendizado .

2.3 Por que usar amostragem?

Dadas as desvantagens da amostragem, vale a pena perguntar por que alguém a usaria em vez de um algoritmo de aprendizado sensível a custos para lidar com dados com uma distribuição de classes distorcida e custos de classificação não uniformes. Há várias razões para isso. A razão mais óbvia é que não há implementações sensíveis a custos de todos os algoritmos de aprendizado e, portanto, uma abordagem baseada em wrapper usando amostragem é a única opção. Embora isso seja certamente menos verdadeiro hoje do que no passado, muitos algoritmos de aprendizado (por exemplo, C4.5) ainda não lidam diretamente com os custos no processo de aprendizado.

Uma segunda razão para usar a amostragem é que muitos conjuntos de dados altamente inclinados são enormes e o tamanho do conjunto de treinamento deve ser reduzido para que o aprendizado seja possível. Nesse caso, a subamostragem parece ser uma estratégia razoável e válida. Neste artigo, não consideramos a necessidade de reduzir o tamanho do conjunto de treinamento. Gostaríamos de salientar, no entanto, que, se for necessário descartar alguns dados de treinamento, ainda pode ser benéfico descartar alguns dos exemplos de classe majoritária, a fim de reduzir o tamanho do conjunto de treinamento para o tamanho necessário e, em seguida, também empregar um custo-benefício. algoritmo de aprendizado sensível, para que a quantidade de dados de treinamento descartados seja minimizada.

Uma razão final que pode ter contribuído para o uso da amostragem em vez de um algoritmo de aprendizado sensível ao custo é que os custos de classificação incorreta são frequentemente desconhecidos. No entanto, essa não é uma razão válida para o uso da amostragem em um algoritmo de aprendizado com custo elevado, uma vez que a questão análoga surge com a amostragem - qual deve ser a distribuição de classe dos dados finais do treinamento? Se essas informações de custo não forem conhecidas, uma medida como a área sob a curva ROC poderia ser usada para medir o desempenho do classificador e ambas as abordagens poderiam então determinar empiricamente a relação custo / distribuição adequada da classe.

Eles também fizeram uma série de experimentos, que eram inconclusivos:

Com base nos resultados de todos os conjuntos de dados, não há vencedor definitivo entre aprendizado sensível ao custo, superamostragem e subamostragem

Eles então tentam entender quais critérios nos conjuntos de dados podem sugerir qual técnica é melhor ajustada.

Eles também observam que o SMOTE pode trazer algumas melhorias:

Existem várias melhorias que as pessoas fizeram para melhorar a eficácia da amostragem. Alguns desses aprimoramentos incluem a introdução de novos exemplos “sintéticos” ao sobreamostrar [5 -> SMOTE], excluir exemplos menos úteis da classe majoritária ao subamostrar [11] e usar várias subamostras quando a subamostra, como cada exemplo, é usada em pelo menos um subamostra [3]. Embora essas técnicas tenham sido comparadas à superamostragem e subamostragem, elas geralmente não foram comparadas aos algoritmos de aprendizado sensíveis ao custo. Isso valeria a pena estudar no futuro.


{1} Weiss, Gary M., Kate McCarthy e Bibi Zabar. "Aprendizagem sensível ao custo x amostragem: qual é o melhor para lidar com classes desequilibradas com custos de erro desiguais?" DMIN 7 (2007): 35-41. https://scholar.google.com/scholar?cluster=10779872536070567255&hl=pt_BR&as_sdt=0,22 ; https://pdfs.semanticscholar.org/9908/404807bf6b63e05e5345f02bcb23cc739ebd.pdf


11
Então, para resumir o link: os resultados sobre qual método é melhor são inconclusivos e é mais fácil usar a sub / super-amostragem. Direito?
LazyCat 19/09/16

11
@LazyCat right.
Franck Dernoncourt 19/09/19

Sim, a plataforma tem limitações. Mas muitos deles também são recursos. Por exemplo, eu suporia que, se uma resposta longa e detalhada como essa pudesse responder adequadamente a duas perguntas, essas perguntas deverão ser duplicadas. E se eles não são duplicados, deve ser possível variar as respostas de uma maneira significativa, para que não sejam apenas coladas. Que ação deve ser tomada neste caso? (cc @gung)
whuber

@whuber A outra questão já foi fechado :-)
Franck Dernoncourt

11
Ok - esse é um argumento persuasivo!
whuber

6

Várias respostas a esta consulta já forneceram várias abordagens diferentes, todas válidas. Esta sugestão é de um artigo e software associado de Gary King, eminente cientista político de Harvard. É co-autor de um artigo intitulado Regressão logística em dados de eventos raros, que fornece algumas soluções bastante convincentes.

Aqui está o resumo:

Estudamos dados de eventos raros, variáveis ​​dependentes binárias com dezenas a milhares de vezes menos (eventos como guerras, vetos, casos de ativismo político ou infecções epidemiológicas) do que zeros ("não-eventos"). Em muitas literaturas, essas variáveis ​​mostraram-se difíceis de explicar e prever, um problema que parece ter pelo menos duas fontes. Primeiro, procedimentos estatísticos populares, como a regressão logística, podem subestimar drasticamente a probabilidade de eventos raros. Recomendamos correções que superem os métodos existentes e alterem as estimativas de riscos absolutos e relativos, tanto quanto alguns efeitos estimados relatados na literatura. Segundo, as estratégias de coleta de dados comumente usadas são totalmente ineficientes para dados de eventos raros. O medo de coletar dados com muito poucos eventos levou a coleções de dados com um grande número de observações, mas relativamente poucas variáveis ​​explicativas e mal mensuradas, como em dados de conflitos internacionais com mais de um quarto de milhão de díades, apenas alguns dos quais estão em guerra. Como se vê, existem projetos de amostragem mais eficientes para fazer inferências válidas, como amostrar todos os eventos variáveis ​​(por exemplo, guerras) e uma pequena fração de eventos não-pacíficos (paz). Isso permite que os pesquisadores economizem até 99% de seus custos de coleta de dados (não corrigidos) ou coligam variáveis ​​explicativas muito mais significativas. Fornecemos métodos que vinculam esses dois resultados, permitindo que ambos os tipos de correções funcionem simultaneamente e software que implementa os métodos desenvolvidos. e variáveis ​​explicativas pouco medidas, como em dados de conflitos internacionais com mais de um quarto de milhão de díades, das quais apenas algumas estão em guerra. Como se vê, existem projetos de amostragem mais eficientes para fazer inferências válidas, como amostrar todos os eventos variáveis ​​(por exemplo, guerras) e uma pequena fração de eventos não-pacíficos (paz). Isso permite que os pesquisadores economizem até 99% de seus custos de coleta de dados (não corrigidos) ou coligam variáveis ​​explicativas muito mais significativas. Fornecemos métodos que vinculam esses dois resultados, permitindo que ambos os tipos de correções funcionem simultaneamente e software que implementa os métodos desenvolvidos. e variáveis ​​explicativas pouco medidas, como em dados de conflitos internacionais com mais de um quarto de milhão de díades, das quais apenas algumas estão em guerra. Como se vê, existem projetos de amostragem mais eficientes para fazer inferências válidas, como amostrar todos os eventos variáveis ​​(por exemplo, guerras) e uma pequena fração de eventos não-pacíficos (paz). Isso permite que os pesquisadores economizem até 99% de seus custos de coleta de dados (não corrigidos) ou coligam variáveis ​​explicativas muito mais significativas. Fornecemos métodos que vinculam esses dois resultados, permitindo que ambos os tipos de correções funcionem simultaneamente e software que implementa os métodos desenvolvidos. existem projetos de amostragem mais eficientes para fazer inferências válidas, como amostrar todos os eventos variáveis ​​(por exemplo, guerras) e uma pequena fração de não eventos (paz). Isso permite que os pesquisadores economizem até 99% de seus custos de coleta de dados (não corrigidos) ou coligam variáveis ​​explicativas muito mais significativas. Fornecemos métodos que vinculam esses dois resultados, permitindo que ambos os tipos de correções funcionem simultaneamente e software que implementa os métodos desenvolvidos. existem projetos de amostragem mais eficientes para fazer inferências válidas, como amostrar todos os eventos variáveis ​​(por exemplo, guerras) e uma pequena fração de não eventos (paz). Isso permite que os pesquisadores economizem até 99% de seus custos de coleta de dados (não corrigidos) ou coligam variáveis ​​explicativas muito mais significativas. Fornecemos métodos que vinculam esses dois resultados, permitindo que ambos os tipos de correções funcionem simultaneamente e software que implementa os métodos desenvolvidos.

Aqui está um link para o artigo ... http://gking.harvard.edu/files/abs/0s-abs.shtml


Obrigado - se você ler o artigo, eles sugerem algo importante além da subamostragem sugerida acima?
LazyCat 19/09/16

4
Este é um bom artigo, já o li mais de uma vez! (+1) Penso que você deve ressaltar que o artigo também está interessado em inferência. É por isso que um GBM seria menos útil para um cientista político em comparação com um GLM. Por exemplo, se metodologias em árvore são usadas: " ... dois algoritmos de particionamento recursivo podem atingir a mesma precisão de previsão, mas, ao mesmo tempo, representam relações de regressão estruturalmente diferentes, ou seja, modelos diferentes e, portanto, podem levar a conclusões diferentes sobre a influência de certas covariáveis ​​na resposta "(Hothorn et al. 2006)
usεr11852 diz Reinstate Monic

2

O desenvolvimento de classificadores para conjuntos de dados com classes desequilibradas é um problema comum no aprendizado de máquina. Os métodos baseados em densidade podem ter méritos significativos sobre os "classificadores tradicionais" em tal situação.

p^(x|yC)CC={x:yi=0}

xy^(x)Cy^(x)C

Você pode consultar o seguinte artigo:

"Um estimador de plug-in computável de conjuntos de volumes mínimos para detecção de novidades", C. Park, J. Huang e Y. Ding, Operations Research, 58 (5), 2013.


2

Esse é o tipo de problema em que a detecção de anomalias é uma abordagem útil. Isso é basicamente o que rodrigo descreveu em sua resposta, na qual você determina o perfil estatístico de sua classe de treinamento e define um limite de probabilidade além do qual medidas futuras são determinadas para não pertencer a essa classe. Aqui está um tutorial em vídeo , que deve ajudá-lo a começar. Depois de absorver isso, eu recomendaria procurar a Estimativa de densidade do kernel.

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.