Minha tarefa de 'aprendizado de máquina' é separar o tráfego benigno da Internet do tráfego malicioso. No cenário do mundo real, a maioria (digamos 90% ou mais) do tráfego da Internet é benigna. Assim, senti que deveria escolher uma configuração de dados semelhante para treinar meus modelos também. Mas me deparei com um ou dois trabalhos de pesquisa (na minha área de trabalho) que usavam uma abordagem de dados de "equilíbrio de classe" para treinar os modelos, implicando um número igual de instâncias de tráfego benigno e malicioso.
Em geral, se estou construindo modelos de aprendizado de máquina, devo procurar um conjunto de dados representativo do problema do mundo real ou um conjunto de dados balanceado mais adequado para a construção dos modelos (já que determinados classificadores não se comportam bem com desequilíbrio de classe, ou devido a outros motivos que não me são conhecidos)?
Alguém pode lançar mais luz sobre os prós e contras das duas opções e como decidir qual escolher?
Eu acho que sempre depende do cenário. Usar um conjunto de dados representativo nem sempre é a solução. Suponha que seu conjunto de treinamento tenha 1000 exemplos negativos e 20 exemplos positivos. Sem nenhuma modificação do classificador, seu algoritmo tenderá a classificar todos os novos exemplos como negativos. Em alguns cenários, isso é bom. Mas, em muitos casos, os custos de falta de exemplos positivos são altos; portanto, você precisa encontrar uma solução para isso.
Nesses casos, você pode usar um algoritmo de aprendizado de máquina sensível a custos. Por exemplo, no caso de análise de dados de diagnóstico médico.
Em resumo: erros de classificação não têm o mesmo custo!
fonte
Sempre existe a solução para tentar ambas as abordagens e manter a que maximiza os desempenhos esperados.
No seu caso, eu diria que você prefere minimizar os falsos negativos à custa de algum falso positivo, portanto, você deseja influenciar seu classificador contra o forte negativo anterior e resolver o desequilíbrio reduzindo o número de exemplos negativos em seu conjunto de treinamento.
Em seguida, calcule a precisão / recall, sensibilidade / especificidade ou qualquer critério adequado a você no conjunto de dados completo e desequilibrado para garantir que você não tenha ignorado um padrão significativo presente nos dados reais ao construir o modelo nos dados reduzidos.
fonte
Separe os cenários operacional e de treinamento.
O cenário operacional é aquele em que seu classificador será medido. É aqui que você deve executar bem. O uso deve ter um conjunto de dados representativo desse cenário.
O cenário de treinamento é o que você está fazendo para criar um classificador que terá um bom desempenho no cenário operacional.
Muitas vezes, os conjuntos de dados nos dois cenários são da mesma natureza, portanto, não há necessidade de distingui-los. Por exemplo, você tem alguma loja on-line e usa para treinar o uso passado para ter um bom desempenho no uso futuro. No entanto, durante o treinamento, você pode usar um conjunto de dados diferente daquele que representa o cenário operacional. Na verdade, se você dorme, sonha com um classificador, valida-o em seu cenário operacional (esta etapa deve ser feita depois de acordar), você é tão bom quanto depois de seguir o caminho usual de aprendizado de máquina.
A distinção entre cenários operacionais e de treinamento se torna importante quando o conjunto de dados é desequilibrado. A maioria dos algoritmos não funciona bem nesse conjunto de dados.
Portanto, não hesite em usar dois conjuntos de dados - Você pode usar um conjunto de dados equilibrado para o treinamento. Quando terminar, valide seu classificador do conjunto de dados operacional.
fonte
Acho que há duas questões distintas a serem consideradas: tempo de treinamento e precisão das previsões.
Tome um exemplo simples: considere que você tem duas classes, que têm uma distribuição normal multivariada. Basicamente, você precisa estimar as respectivas médias de classe e covariâncias de classe. Agora, a primeira coisa com a qual você se importa é sua estimativa da diferença na classe: mas seu desempenho é limitado pela precisão da pior média estimada: não é bom estimar uma média para a centésima casa decimal - se a outra média for apenas estimado para 1 casa decimal. Portanto, é um desperdício de recursos de computação usar todos os dados - você pode subamostrar a classe mais comum E ponderar novamente as classes adequadamente. (esses recursos de computação podem ser usados para explorar diferentes variáveis de entrada etc.)
Agora, a segunda questão é a precisão preditiva: algoritmos diferentes usam métricas de erro diferentes, que podem ou não concordar com seus próprios objetivos. Por exemplo, a regressão logística penalizará o erro de probabilidade geral; portanto, se a maioria dos seus dados for de uma classe, ela tenderá a tentar melhorar estimativas de probabilidade precisas (por exemplo, 90 vs 95% de probabilidade) dessa classe, em vez de tentar identificar a classe rara. Nesse caso, você definitivamente desejaria tentar re-ponderar para enfatizar a classe rara (e subsequentemente ajustar a estimativa [ajustando o termo de viés] para obter as realocações de probabilidade estimadas)
fonte