Construir artificialmente um conjunto de treinamento equilibrado é discutível, na verdade bastante controverso. Se você fizer isso, verifique empiricamente que realmente funciona melhor do que deixar o conjunto de treinamento desequilibrado. Equilibrar artificialmente o conjunto de testes quase nunca é uma boa idéia. O conjunto de teste deve representar novos pontos de dados à medida que entram sem rótulos. Você espera que eles estejam desequilibrados, portanto, você precisa saber se o seu modelo pode lidar com um conjunto de testes desequilibrado. (Se você não espera que novos registros sejam desequilibrados, por que todos os seus registros existentes são desequilibrados?)
Em relação à sua métrica de desempenho, você sempre receberá o que pede. Se a precisão não é o que você mais precisa em um conjunto desequilibrado, porque não apenas as classes, mas também os custos de classificação incorreta são desequilibrados, não a use. Se você usou a precisão como métrica e fez toda a sua seleção de modelo e ajuste do hiperparâmetro, sempre usando o que tiver a melhor precisão, estará otimizando a precisão.
Eu tomo a classe minoritária como a classe positiva, esta é a maneira convencional de nomeá-los. Portanto, precisão e recuperação, conforme discutido abaixo, são precisão e recuperação da classe minoritária.
- Se a única coisa importante é identificar todos os registros de classe minoritária, você pode se lembrar. Você está, assim, aceitando mais falsos positivos.
- Otimizar apenas a precisão seria uma ideia muito estranha. Você diria ao seu classificador que não é um problema para sub-detectar a classe minoritária. A maneira mais fácil de ter uma alta precisão é ser cauteloso ao declarar a classe minoritária.
- Se você precisar de precisão e recall, poderá tomar a medida F. É a média harmônica entre precisão e recall e, portanto, penaliza os resultados onde ambas as métricas divergem.
- Se você conhece os custos concretos de classificação incorreta em ambas as direções (e os lucros da classificação correta, se forem diferentes por classe), pode colocar tudo isso em uma função de perda e otimizá-la.