Eu tenho um problema de classificação com aproximadamente 1000 amostras positivas e 10.000 amostras negativas no conjunto de treinamento. Portanto, esse conjunto de dados é bastante desequilibrado. A floresta aleatória simples está apenas tentando marcar todas as amostras de teste como uma classe majoritária.
Algumas boas respostas sobre subamostragem e floresta aleatória ponderada são fornecidas aqui: Quais são as implicações para o treinamento de um Tree Ensemble com conjuntos de dados altamente tendenciosos?
Quais métodos de classificação além da RF podem lidar com o problema da melhor maneira?
Respostas:
fonte
Subamostrar a classe majoritária geralmente é o caminho a seguir nessas situações.
Se você acha que possui muito poucas instâncias da classe positiva, poderá realizar uma superamostragem, por exemplo, exemplos de instâncias 5n com substituição do conjunto de dados de tamanho n.
Ressalvas:
fonte
O aumento de gradiente também é uma boa escolha aqui. Você pode usar o classificador de aumento de gradiente no sci-kit learn, por exemplo. O aumento de gradiente é um método baseado em princípios para lidar com o desequilíbrio de classe, construindo conjuntos de treinamento sucessivos com base em exemplos classificados incorretamente.
fonte
Além das respostas postadas aqui, se o número de exemplos positivos for muito pequeno quando comparado aos exemplos negativos, quase se trata de um problema de detecção de anomalias, onde os exemplos positivos são as anomalias.
Você tem toda uma gama de métodos para detectar anomalias, desde o uso da distribuição gaussiana multivariada até o modelo de todos os pontos e, em seguida, escolhendo aqueles que estão a 2 ou 3 stds da média.
Outro alimento para o pensamento - já vi várias pessoas que amostram aleatoriamente os exemplos negativos com mais exemplos, de modo que as duas classes são iguais em número. Depende totalmente do problema em questão, se queremos que eles sejam equilibrados ou não.
fonte