Classes desequilibradas - Como minimizar os falsos negativos?


11

Eu tenho um conjunto de dados que possui um atributo de classe binária. Existem 623 casos com classe +1 (câncer positivo) e 101.671 casos com classe -1 (câncer negativo).

Eu tentei vários algoritmos (Naive Bayes, Random Forest, AODE, C4.5) e todos eles têm taxas de falso-negativos inaceitáveis. A Random Forest tem a maior precisão geral de previsão (99,5%) e a menor taxa de falsos negativos, mas ainda perde 79% das classes positivas (ou seja, falha em detectar 79% dos tumores malignos).

Alguma idéia de como posso melhorar essa situação?

Obrigado!


Você pode dar uma olhada nesta pergunta, onde recebi respostas interessantes para esse problema. Atenciosamente
Michael Hooreman

Respostas:


9

Desequilíbrio de classe é um problema muito comum. Você pode sobreamostrar a classe positiva (ou subamostrar a negativa) ou adicionar pesos de classe.

Outra coisa a lembrar neste caso é que a precisão não é uma métrica muito útil aqui. Você pode considerar a pontuação na AUC ou na F1 .

Alterar o limiar da sua decisão pode parecer atraente, mas obviamente levará a (nesse caso, provavelmente drasticamente) aumento de falsos positivos (embora talvez os PJs não sejam tão ruins quanto os FNs no caso de diagnóstico médico, se os testes não forem proibitivamente caros).

Uma análise mais aprofundada das opções no caso de desequilíbrio de classe é fornecida aqui .


3

Mesmo que a resposta na realidade seja sempre trueou false, você pode fazer com que os atributos da sua classe não sejam rótulos, mas números de ponto flutuante, ou seja, 1,0 e 0,0 (ou 100 e 0). Ou seja, você pode enquadrar que é um problema de regressão , não um problema de classificação.

Então a saída prevista será igualmente números nesse espectro, ou seja, probabilidades, não etiquetas. Sua implementação atual é essencialmente equivalente a um modelo de regressão com um limite de 0,5.

Com essa saída, você ou seu cliente podem definir um limite aceitável (por exemplo, 0,3). É claro que haverá mais falsos positivos, mas para algumas aplicações, como a detecção de câncer, isso é ideal.

Sobreamostragem (os positivos) ou subamostragem (os negativos) também são maneiras de corrigir isso, mas devem ser feitas com cuidado, podem sacrificar a precisão e ainda sacrificar o controle para mover o limite após a criação dos dados e do treinamento.


0

A sub e a super amostragem como técnica já foram mencionadas, mas pensei em apontar para uma variante comumente usada:

SMOTE : Técnica de super amostragem de minoria sintética

Foi apresentado neste artigo em 2002 . Aqui está um trecho do resumo:

Este artigo mostra que uma combinação de nosso método de super-amostragem da classe minoritária (anormal) e sub-amostragem da classe maioria (normal) pode obter melhor desempenho do classificador (no espaço ROC) do que apenas sub-amostragem da classe majoritária.


Você pode usá-lo facilmente no Python, usando o imbalanced-learnpacote , que está contido no módulo contrib do Scikit-Learn e deve ser instalado separadamente.

O desbalanced-learn é um pacote python que oferece várias técnicas de re-amostragem comumente usadas em conjuntos de dados que mostram um forte desequilíbrio entre classes.

Esse pacote inclui métodos para combinar sobre / subamostragem, bem como um conjunto de utilitários para gerar lotes de dados que podem fluir para o Keras / Tensorflow.

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.