Eu sou novo na mineração de dados e estou tentando treinar uma árvore de decisão contra um conjunto de dados altamente desequilibrado. No entanto, estou tendo problemas com baixa precisão preditiva.
Os dados consistem em estudantes que estudam nos cursos, e a variável da turma é o status do curso que possui dois valores - Retirado ou Atual.
- Era
- Etnia
- Gênero
- Curso
... - Status do Curso
No conjunto de dados, há muito mais instâncias Atual que Retirada. Instâncias retiradas representando apenas 2% do total de instâncias.
Eu quero ser capaz de construir um modelo que possa prever a probabilidade de uma pessoa se retirar no futuro. No entanto, ao testar o modelo em relação aos dados de treinamento, a precisão do modelo é terrível.
Eu tive problemas semelhantes com as árvores de decisão, onde os dados são dominados por uma ou duas classes.
Que abordagem posso usar para resolver esse problema e criar um classificador mais preciso?
Respostas:
Esse é um problema interessante e muito frequente na classificação - não apenas nas árvores de decisão, mas em praticamente todos os algoritmos de classificação.
Como você descobriu empiricamente, um conjunto de treinamento que consiste em diferentes números de representantes de qualquer classe pode resultar em um classificador tendencioso para a classe majoritária. Quando aplicado a um conjunto de testes com desequilíbrio semelhante, esse classificador produz uma estimativa de precisão otimista. Em um caso extremo, o classificador pode atribuir todos os casos de teste à classe majoritária, alcançando uma precisão igual à proporção de casos de teste pertencentes à classe majoritária. Esse é um fenômeno bem conhecido na classificação binária (e se estende naturalmente às configurações de várias classes).
Essa é uma questão importante, porque um conjunto de dados desequilibrado pode levar a estimativas de desempenho infladas. Por sua vez, isso pode levar a conclusões falsas sobre a importância com que o algoritmo teve um desempenho melhor que o acaso.
A literatura de aprendizado de máquina sobre esse tópico desenvolveu essencialmente três estratégias de solução.
Você pode restaurar o equilíbrio no conjunto de treinamento por undersampling a grande classe ou por oversampling a pequena classe, para evitar viés de surgir em primeiro lugar.
Como alternativa, você pode modificar os custos de classificação incorreta, conforme observado em uma resposta anterior, novamente para evitar distorções.
Eu recomendaria considerar pelo menos duas das abordagens acima em conjunto. Por exemplo, você pode exagerar sua classe minoritária para impedir que seu classificador adquira um viés em favor da classe majoritária. Depois disso, ao avaliar o desempenho do seu classificador, você pode substituir a precisão pela precisão equilibrada. As duas abordagens são complementares. Quando aplicados em conjunto, devem ajudar a evitar o problema original e a evitar conclusões falsas.
Eu ficaria feliz em publicar algumas referências adicionais à literatura, se você gostaria de acompanhar isso.
fonte
As quatro idéias a seguir podem ajudá-lo a resolver esse problema.
Use o parâmetro 'previous' nas Árvores de Decisão para informar o algoritmo da frequência anterior das classes no conjunto de dados, ou seja, se houver 1.000 positivos em um conjunto de 1.000.000.000 de dados
prior = c(0.001, 0.999)
(em R).Use o argumento 'pesos' na função de classificação usada para penalizar severamente o algoritmo por erros de classificação dos casos positivos raros
Use o argumento 'cost' em alguns algoritmos de classificação - por exemplo,
rpart
em R - para definir custos relativos para classificações errôneas de verdadeiros positivos e verdadeiros negativos. Naturalmente, você deve definir um alto custo para a classificação incorreta da classe rara.Eu não sou a favor da superamostragem, pois ela introduz observações dependentes no conjunto de dados e isso viola as suposições de independência feitas tanto em Estatística quanto em Aprendizado de Máquina.
fonte
Eu dei uma resposta no tópico recente :
Não apenas fornece uma abordagem mais estável, mas os modelos geralmente são melhores, no que diz respeito às medidas de sustentação.
fonte
Adicionando à resposta da @Kay 1ª estratégia de solução: Oversampling de Minoria Sintética ( SMOTE ) geralmente funciona melhor do que a amostragem abaixo ou acima da minha experiência, pois acho que isso cria um compromisso entre os dois. Ele cria amostras sintéticas da classe minoritária usando os pontos de dados plotados no espaço preditivo multivariado e leva mais ou menos pontos médios entre pontos adjacentes nesse espaço para criar novos pontos sintéticos e, portanto, equilibrar os tamanhos de classe. (não tenho certeza dos pontos médios, detalhes do algoritmo aqui
fonte