Estou tentando criar um modelo de previsão com SVMs em dados bastante desequilibrados. Meus rótulos / saída têm três classes: positivo, neutro e negativo. Eu diria que o exemplo positivo representa cerca de 10 a 20% dos meus dados, neutro cerca de 50 a 60% e negativo cerca de 30 a 40%. Estou tentando equilibrar as classes, pois o custo associado a previsões incorretas entre as classes não é o mesmo. Um método foi reamostrar os dados de treinamento e produzir um conjunto de dados igualmente equilibrado, maior que o original. Curiosamente, quando faço isso, tenho a tendência de obter melhores previsões para a outra classe (por exemplo, quando equilibrei os dados, aumentei o número de exemplos para a classe positiva, mas nas previsões fora da amostra, a classe negativa foi melhor). Alguém pode explicar geralmente por que isso ocorre? Se eu aumentar o número de exemplos para a classe negativa, obteria algo semelhante para a classe positiva nas previsões fora da amostra (por exemplo, melhores previsões)?
Também estou muito aberto a outras reflexões sobre como eu posso lidar com os dados desequilibrados, impondo diferentes custos na classificação incorreta ou usando os pesos de classe no LibSVM (embora não tenha certeza de como selecionar / ajustar adequadamente).