Descobri que He e Garcia (2009) são uma revisão útil da aprendizagem em problemas de classe desequilibrados. Aqui estão algumas coisas definitivamente não-abrangentes a serem consideradas:
Abordagens baseadas em dados:
Pode-se subamostrar a classe majoritária ou superexaminar a classe minoritária. (Breiman apontou que isso é formalmente o equivalente a atribuir custos não uniformes de classificação incorreta.) Isso pode causar problemas: A subamostragem pode fazer com que o aluno perca aspectos da classe majoritária; oversampling aumenta o risco de super ajuste.
Existem métodos de "subamostragem informada" que reduzem esses problemas. Um deles é o EasyEnsemble , que coleta amostras de vários subconjuntos da classe majoritária e faz vários classificadores combinando cada subconjunto com todos os dados da classe minoritária.
O SMOTE (técnica de superamostragem de minoria sintética) ou SMOTEBoost (combinando SMOTE com reforço) cria instâncias sintéticas da classe minoritária, tornando os vizinhos mais próximos no espaço de recursos. O SMOTE é implementado em R no pacote DMwR (que acompanha o livro de Luis Torgo “Mineração de dados com R, aprendendo com estudos de caso” CRC Press 2016 ).
Abordagens de adaptação do modelo
Aplique pesos específicos de classe em sua função de perda (pesos maiores para casos minoritários).
Para abordagens baseadas em árvore, você pode usar a distância de Hellinger como uma função de impureza do nó, conforme preconizado por Cieslak et al. "As árvores de decisão à distância Hellinger são robustas e insensíveis à inclinação" ( código Weka aqui .)
Use um classificador de uma classe , aprendendo (dependendo do modelo) uma densidade ou limite de probabilidade para uma classe e tratando a outra classe como discrepantes.
Obviamente, não use a precisão como métrica para a construção de modelos. O kappa de Cohen é uma alternativa razoável.
Abordagens de avaliação de modelos
Se o seu modelo retornar probabilidades previstas ou outras pontuações, escolha um ponto de decisão que faça uma troca apropriada de erros (usando um conjunto de dados independente do treinamento e teste). Em R, o pacote OptimalCutpoints implementa vários algoritmos, incluindo os sensíveis a custo, para decidir um ponto de corte.