Qual é a causa raiz do problema de desequilíbrio de classe?

30

Ultimamente, tenho pensado muito sobre o "problema de desequilíbrio de classe" no aprendizado de máquina / estatística, e estou me aprofundando cada vez mais em um sentimento de que simplesmente não entendo o que está acontecendo.

Primeiro, deixe-me definir (ou tentar) definir meus termos:

O problema de desequilíbrio de classe no aprendizado de máquina / estatística é a observação de que alguns algoritmos de classificação binária (*) não apresentam bom desempenho quando a proporção de 0 classe a 1 classe é muito distorcida.

Portanto, no exemplo acima, se houvesse cem classes 0 para cada classe 1 , eu diria que o desequilíbrio de classe é de 1 a 100 , ou 1% .

A maioria das afirmações do problema que vi não tem o que consideraria uma qualificação suficiente (que modelos enfrentam, quão desequilibrado é um problema), e essa é uma fonte da minha confusão.

Uma pesquisa dos textos padrão no aprendizado de máquina / estatística mostra pouco:

  • Os elementos de inclinação estatística e introdução à aprendizagem estatística não contêm "desequilíbrio de classe" no índice.
  • O Machine Learning para análise de dados preditiva também não contém "desequilíbrio de classe" no índice.

  • Murphy Machine Learning: uma perspectiva probabilística faz conter "desequilíbrio classe * no índice A referência é a uma seção sobre SVM do, onde eu encontrei o seguinte comentário tentadora.:

    Vale lembrar que todas essas dificuldades, e a infinidade de heurísticas que foram propostas para corrigi-las, surgem fundamentalmente porque os SVMs não modelam incerteza usando probabilidades, portanto, suas pontuações de saída não são comparáveis ​​entre as classes.

Esse comentário concorda com a minha intuição e experiência: no meu trabalho anterior, rotineiramente ajustávamos regressões logísticas e modelos de árvores com gradiente (para minimizar a probabilidade binomial de log) a dados desequilibrados (da ordem de 1% desequilíbrio de classe), sem questões óbvias no desempenho.

Eu li (em algum lugar) que os modelos baseados em árvores de classificação (árvores em si e floresta aleatória) também sofrem com o problema de desequilíbrio de classe. Isso atrapalha um pouco as águas, as árvores, em certo sentido, retornam probabilidades: o registro de votação para a classe-alvo em cada nó terminal da árvore.

Então, para finalizar, o que realmente busco é uma compreensão conceitual das forças que levam ao problema de desequilíbrio de classe (se existir).

  • É algo que fazemos a nós mesmos com algoritmos mal escolhidos e limites de classificação padrão preguiçosos?
  • Desaparece se sempre ajustamos modelos de probabilidade que otimizam os critérios de pontuação adequados? Dito de forma diferente, a causa é simplesmente uma má escolha da função de perda, ou seja, avaliar o poder preditivo de um modelo com base em regras rígidas de classificação e precisão geral?
  • Em caso afirmativo, os modelos que não otimizam as regras de pontuação adequadas são inúteis (ou pelo menos menos úteis)?

(*) Por classificação, quero dizer qualquer modelo estatístico adequado aos dados da resposta binária. Estou não assumindo que meu objetivo é uma tarefa difícil de uma classe ou de outra, embora possa ser.

Matthew Drury
fonte
11
Um problema óbvio pode surgir quando o aluno penaliza a perda de cada classe da mesma forma. Devolver tudo da mesma classe poderia, teoricamente, minimizar a perda total.
Firebug
11
Eu esqueci de adicionar poor choice of loss functionna minha lista. Então, você acha que isso é verdade mesmo para regras de pontuação adequadas, pois as funções de perda?
Matthew Drury
Acho que sim. Acho que podemos formular um problema em que minimizar a perda da classe maior também minimiza a perda de todo o problema, enquanto, em geral, a classe minoritária é de maior interesse.
Firebug
3
Eu concordo com os sentimentos da pergunta. Eu tive uma hipótese de trabalho (embora feliz em rejeitá-la) de que não há problema de desequilíbrio de classe em si, apenas que treinamos com funções de perda que não representam o que usaremos para medir o sucesso nos dados de teste. E é difícil chamar isso de erro, pois é uma prática quase padrão: por exemplo, não é padrão otimizar diretamente a pontuação da AUC ou F1, mas essas são métricas comuns de sucesso para problemas com desequilíbrio de classe. Então talvez esse seja o problema de desequilíbrio de classe?
DavidR
9
A causa do problema de desequilíbrio de classe é a convenção de usar a precisão como uma função de perda. O desequilíbrio de classe é uma característica do problema (diagnóstico de doenças raras, por exemplo), que pode ser resolvido com o uso de várias estratégias. O uso de um peso de classe inverso proporcional ao tamanho da classe ao calcular a função de perda é um deles. Fora isso, a AUC como função de perda é uma boa ideia, pois distingue especificamente entre verdadeiro positivo e falso positivo. Portanto, a questão central do problema de desequilíbrio de classe é a função de perda. Ótima pergunta, porém, que não ouso responder.
Nikolas Rieble

Respostas:

4

Uma entrada da Encyclopedia of Machine Learning ( https://cling.csd.uwo.ca/papers/cost_sensitive.pdf ) explica de maneira útil que o que é chamado de "o problema de desequilíbrio de classe" é melhor entendido como três problemas separados:

 (1) assuming that an accuracy metric is appropriate when it is not

 (2) assuming that the test distribution matches the training 
     distribution when it does not

 (3) assuming that you have enough minority class data when you do not

Os autores explicam:

Os conjuntos de dados desequilibrados de classe ocorrem em muitos aplicativos do mundo real onde as distribuições de dados de classe são altamente desequilibradas. Novamente, sem perda de generalidade, assumimos que a classe minoritária ou rara é a classe positiva e a classe majoritária é a classe negativa. Geralmente, a classe minoritária é muito pequena, como 1% do conjunto de dados. Se aplicarmos os classificadores mais tradicionais (sem custo) no conjunto de dados, é provável que eles prevejam tudo como negativo (a classe majoritária). Isso costumava ser considerado um problema ao aprender com conjuntos de dados altamente desequilibrados.

No entanto, como apontado por (Provost, 2000), duas premissas fundamentais são frequentemente feitas nos classificadores tradicionais que não apresentam custo. A primeira é que o objetivo dos classificadores é maximizar a precisão (ou minimizar a taxa de erro); a segunda é que a distribuição em classe dos conjuntos de dados de treinamento e teste é a mesma. Sob essas duas suposições, prever tudo como negativo para um conjunto de dados altamente desequilibrado costuma ser a coisa certa a fazer. (Drummond e Holte, 2005) mostram que geralmente é muito difícil superar esse classificador simples nessa situação.

Assim, o problema de classe desequilibrada só se torna significativo se uma ou ambas as suposições acima não forem verdadeiras; isto é, se o custo de diferentes tipos de erro (falso positivo e falso negativo na classificação binária) não for o mesmo ou se a distribuição da classe nos dados de teste for diferente da dos dados de treinamento. O primeiro caso pode ser tratado com eficácia usando métodos em meta-aprendizagem sensível a custos.

No caso em que o custo da classificação incorreta não é igual, geralmente é mais caro classificar incorretamente um exemplo minoritário (positivo) na classe majoritária (negativa) do que um exemplo majoritário na classe minoritária (caso contrário, é mais plausível prever tudo como negativo). Ou seja, FN> FP. Assim, dados os valores de FN e FP, uma variedade de métodos de meta-aprendizagem sensíveis ao custo pode ser e tem sido usada para resolver o problema de desequilíbrio de classe (Ling e Li, 1998; Japkowicz e Stephen, 2002). Se os valores de FN e FP não forem explicitamente desconhecidos, FN e FP podem ser atribuídos para serem proporcionais a p (-): p (+) (Japkowicz e Stephen, 2002).

Caso as distribuições de classe dos conjuntos de dados de treinamento e teste sejam diferentes (por exemplo, se os dados de treinamento estiverem altamente desequilibrados, mas os dados de teste forem mais equilibrados), uma abordagem óbvia é a amostragem dos dados de treinamento, para que sua distribuição de classe seja a mesma que os dados do teste (superamostrando a classe minoritária e / ou subamostrando a classe majoritária) (Provost, 2000).

Observe que, às vezes, o número de exemplos da classe minoritária é muito pequeno para que os classificadores aprendam adequadamente. Esse é o problema dos dados de treinamento insuficientes (pequenos), diferentes dos dos conjuntos de dados desequilibrados.

Portanto, como Murphy implica, não há nada inerentemente problemático no uso de classes desequilibradas, desde que você evite esses três erros. Os modelos que geram probabilidades posteriores facilitam evitar erros (1) do que os modelos discriminantes como o SVM, porque permitem separar a inferência da tomada de decisão. (Veja a seção 1.5.4, Inferência e Decisão do Bispo, para uma discussão mais aprofundada sobre esse último ponto.)

Espero que ajude.

Bill Vander Lugt
fonte
11
Eu estava indo postar algo semelhante. um pequeno comentário - acho que é loucura subamostrar a classe maior. Isso está descartando seus dados e certamente não proporcionará um resultado melhor. Gosto da noção de dividir inferência e classificação. a parte de inferência não é afetada pelo desequilíbrio, mas a tomada de decisão (classificação) pode ser bastante afetada.
probabilityislogic
@probabilityislogic (e Bill Vander Lugt): Há outro problema possível que não é discutido nesse texto: se uma Ansatz discriminatória é adequada. Indo inadequadamente a um modelo discriminativo em que uma classe seria mais apropriada também pode levar a "problemas de desequilíbrio de classe".
cbeleites apoia Monica em 21/11
8

Qualquer coisa que envolva otimização para minimizar uma função de perda, se for suficientemente convexa, fornecerá uma solução que seja um mínimo global dessa função de perda. Digo 'suficientemente convexo', já que as redes profundas não são de todo convexas, mas fornecem mínimos razoáveis ​​na prática, com escolhas cuidadosas da taxa de aprendizado etc.

Portanto, o comportamento de tais modelos é definido pelo que colocarmos na função de perda.

F

yf=f(x)

FGbFFbG

yg={Bif f(x)>bAotherwise

bG

FGG

Agora, digamos que temos uma função de perda que é:

L=1Nn=1NIyig(xi)

Ic1c0yiig(xi)i

990.9=89.1990.1=9.910.9=0.910.1=0.1

L=(9.9+0.1)/100=0.1

G1/100

L=0.01

Dez vezes menor que a perda ao definir o limite, de modo a atribuir igual recall e precisão a cada classe.

GG

G

Como alternativa, podemos modificar o conjunto de dados clonando a cada exemplo B 99 vezes, o que também fará com que a função de perda não tenha mais um mínimo em uma posição diferente do nosso limite ideal anterior.

Hugh Perkins
fonte
4
Você pode tentar tornar sua resposta um pouco mais específica para as perguntas feitas? Embora claramente pensativo, ele lê principalmente como comentário e não como resposta. Por exemplo, apenas para fins de comentário, alguém poderia argumentar que o uso de uma regra de pontuação inadequada, como a função de perda definida, está fundamentalmente errada e, portanto, a análise subsequente é inválida.
usεr11852 diz Reinstate Monic 19/03/19
G
Hugh Perkins
2
FPTPk
FFGFFG
3
Isso pressupõe implicitamente (1) que o KPI que tentamos maximizar é a precisão e (2) que a precisão é um KPI apropriado para a avaliação do modelo de classificação. Não é.
S. Kolassa - Restabelece Monica
0

Observe que os classificadores de uma classe não têm um problema de desequilíbrio, pois olham para cada classe independentemente de todas as outras classes e podem lidar com "não-classes" simplesmente não modelando-as. (Eles podem ter um problema com um tamanho de amostra muito pequeno, é claro).

Muitos problemas que seriam modelados de maneira mais apropriada pelos classificadores de uma classe levam a modelos mal definidos quando abordagens discriminatórias são usadas, dos quais "problemas de desequilíbrio de classe" são um sintoma.

Como exemplo, considere algum produto que pode ser bom para ser vendido ou não. Tal situação é geralmente caracterizada por

class         | "good"                        | "not good"
--------------+-------------------------------+------------------------------------------
sample size   | large                         | small
              |                               |
feature space | single, well-delimited region | many possibilities of *something* wrong 
              |                               | (possibly well-defined sub-groups of
              |                               |    particular fault reasons/mechanisms) 
              |                               | => not a well defined region, 
              |                               | spread over large parts of feature space
              |                               |
future cases  | can be expected to end up     | may show up *anywhere* 
              | inside modeled region         | (except in good region)

Assim, a classe "boa" é bem definida, enquanto a classe "não boa" é mal definida. Se essa situação é modelada por um classificador discriminativo, temos um duplo "problema de desequilíbrio": não apenas a classe "não boa" tem um tamanho pequeno de amostra, mas também uma densidade amostral ainda menor (menos amostras espalhadas por um parte maior do espaço do recurso).

Esse tipo de "problema de desequilíbrio de classe" desaparecerá quando a tarefa for modelada como reconhecimento de uma classe da classe "boa" bem definida.

cbeleites suporta Monica
fonte