Como corrigir o desequilíbrio de classe na amostra de treinamento?

7

Recentemente, fui entrevistado em uma entrevista de emprego sobre soluções para corrigir um desequilíbrio de classes no conjunto de dados de treinamento. Vamos nos concentrar em um caso de classificação binária.

Ofereci duas soluções: superamostrar a classe minoritária alimentando lotes de dados equilibrados do classificador ou particionando a classe abundante, de modo a treinar muitos classificadores com um conjunto de treinamento equilibrado, um subconjunto exclusivo da abundante e o mesmo conjunto da minoria. Os entrevistadores concordaram, mas mais tarde fui interrompida e uma das lacunas de conhecimento que eles mencionaram foi essa resposta. Eu sei agora que eu poderia ter discutido mudou a métrica ..

Mas a pergunta que me vem à mente agora é: é realmente um problema treinar um classificador com 80% da classe A se o conjunto de testes tiver a mesma proporção? A regra prática do aprendizado de máquina parece ser que o conjunto de treinamento precisa ser o mais semelhante possível aos testes para obter o melhor desempenho de previsão.

Não é apenas nos casos que não temos idéia (sem prévia) sobre a distribuição dos testes que precisamos para equilibrar as classes? Talvez eu devesse ter levantado esse ponto na entrevista ..

Aprender é uma bagunça
fonte

Respostas:

4

Na verdade, o que eles mencionaram está certo. A idéia de superamostragem é correta e é um dos métodos de reamostragem geral para lidar com esse problema. A reamostragem pode ser feita através da sobreamostragem das minorias ou da subamostragem das maiorias. Você pode dar uma olhada no algoritmo SMOTE como um método bem estabelecido de reamostragem.

Mas sobre a sua pergunta principal: Não, não se trata apenas da consistência das distribuições entre o teste e o conjunto de trens. É um pouco mais.

Como você mencionou sobre as métricas, imagine a pontuação de precisão. Se eu tiver um problema de classificação binária com 2 classes, uma 90% da população e a outra 10%, então, sem a necessidade de aprendizado de máquina, posso dizer que minha previsão é sempre a classe maioritária e tenho 90% de precisão! Portanto, simplesmente não funciona, independentemente da consistência entre as distribuições de teste de trem. Nesses casos, você pode prestar mais atenção ao Precision and Recall. Normalmente, você gostaria de ter um classificador que minimize a média (geralmente média harmônica) de Precision and Recall, ou seja, a taxa de erro é onde FP e FN são razoavelmente pequenos e próximos um do outro.

A média harmônica é usada em vez da média aritmética, pois suporta a condição de que esses erros sejam os mais iguais possíveis. Por exemplo, se Precision for1 e Lembre-se é 0 0 a média aritmética é 0,5o que não está ilustrando a realidade dentro dos resultados. Mas a média harmônica é0 0 que diz que, no entanto, uma das métricas é boa e a outra é super ruim; em geral, o resultado não é bom.

Mas existem situações na prática em que você NÃO deseja manter os erros iguais. Por quê? Veja o exemplo abaixo:

Um ponto adicional

Isso não é exatamente sobre sua pergunta, mas pode ajudar a entender.

insira a descrição da imagem aqui

Na prática, você pode sacrificar um erro para otimizar o outro. Por exemplo, o diagnóstico do HIV pode ser um caso (estou apenas zombando de um exemplo). É uma classificação altamente desequilibrada, pois, é claro, o número de pessoas sem HIV é dramaticamente maior do que as que são portadoras. Agora vamos ver os erros:

Falso positivo: A pessoa não tem HIV, mas o teste diz que sim.

Falso Negativo: A pessoa tem HIV, mas o teste diz que não.

Se assumirmos que dizer erroneamente a alguém que ele tem HIV simplesmente leva a outro teste, podemos ter muito cuidado em não dizer erroneamente alguém que ele não é portador, pois isso pode resultar na propagação do vírus. Aqui, seu algoritmo deve ser sensível ao falso negativo e o pune muito mais do que o falso positivo, ou seja, de acordo com a figura acima, você pode acabar com uma taxa mais alta de falso positivo.

O mesmo acontece quando você deseja reconhecer automaticamente os rostos das pessoas com uma câmera para permitir que elas entrem em um site de ultra-segurança. Você não se importa se a porta não for aberta uma vez para alguém que tenha permissão (Falso Negativo), mas tenho certeza de que não deseja deixar um estranho entrar! (Falso positivo)

Espero que tenha ajudado.

Kasra Manshaei
fonte
Muito obrigado pela resposta detalhada. Portanto, se eu acertar, se o custo da classificação incorreta for o mesmo cost(false positive) = cost(false negative), posso usar a precisão, pois a métrica e o reequilíbrio devem ser feitos apenas para corresponder à distribuição da amostra de teste. Isso está certo?
Aprender é uma bagunça
11
Que bom que ajudou :) Na verdade, a reamostragem (rebalacing) é a maneira de manter esses erros razoavelmente pequenos. Você meio que viu o contrário. Se suas aulas são equilibradas, você obtém uma Precisão e Recuperação melhores. E sobre distribuição: Normalmente, o pressuposto no aprendizado de máquina é que treinar e testar são de distribuições semelhantes, portanto, não gaste muito tempo com isso. A situação em que eles não são semelhantes é uma filial em Machine Learning chamado de "Adaptação domínio" ou "Transferência de Aprendizagem"
Kasra Manshaei
1

Para sua pergunta "é realmente um problema treinar um classificador com 80% da classe A se o conjunto de testes tiver a mesma proporção?", A resposta é "depende do custo de classificações incorretas", mas normalmente é certamente um problema , porque seu classificador será tendencioso para classificar um indivíduo na classe com excesso de representação, independentemente dos valores de seus recursos, porque, em média , isso aumenta as chances de uma classificação correta durante o treinamento.

Existem diferentes estratégias de superamostragem e subamostragem . Talvez o mais popular seja o SMOTE (Técnica de Sobre-Amostragem de Minorias Sintéticas), que cria dados de treinamento sintéticos com base nos k vizinhos mais próximos.

ncasas
fonte