Eu tenho um conjunto de dados contendo no máximo 150 exemplos (divididos em treinamento e teste), com muitos recursos (acima de 1000). Preciso comparar classificadores e métodos de seleção de recursos com bom desempenho nos dados. Então, eu estou usando três métodos de classificação (J48, NB, SVM) e 2 métodos de seleção de recursos (CFS, WrapperSubset) com diferentes métodos de pesquisa (Greedy, BestFirst).
Ao comparar, estou analisando a precisão do treinamento (dobra cruzada 5 vezes) e a precisão do teste.
Aqui está um dos resultados do J48 e CFS-BestFirst:
{"precisionTraining": 95,83, "precisionTest": 98,21}
Muitos resultados são assim, e no SVM existem muitos resultados que indicam que a precisão do teste é muito maior que o treinamento (treinamento: 60%, teste: 98%)
Como posso interpretar significativamente esse tipo de resultado? Se fosse mais baixo, eu diria que é super adaptável. Há algo a ser dito sobre viés e variação neste caso, observando todos os resultados? O que posso fazer para tornar essa classificação significativa, como re-selecionar conjuntos de treinamento e teste ou apenas usar validação cruzada em todos os dados?
Tenho 73 treinamentos e 58 instâncias de teste. Algumas respostas não tinham essa informação quando foram publicadas.
A precisão de um conjunto de treinamento não faz sentido no aprendizado de máquina. Ignore isto.
fonte
Existem alguns problemas sérios na maneira como você resolveu isso. Primeiro, a divisão de dados não é confiável, a menos que o tamanho total da amostra seja enorme. Você obteria resultados diferentes se dividir novamente. Entre outras coisas, você não está considerando intervalos de confiança nas estimativas de precisão. Segundo, a validação cruzada 5 vezes não é suficientemente precisa. Pode ser necessário repeti-lo 100 vezes para obter uma precisão adequada. Terceiro, você escolheu como pontuação de precisão uma regra descontínua de pontuação imprópria (proporção classificada corretamente). Uma regra de pontuação inadequada levará à seleção do modelo errado.
fonte
Supondo que não haja falhas na implementação dos algoritmos, vejamos o problema.
Imagine pegar um pequeno subconjunto dos dados de treinamento e executar o algoritmo de aprendizado nele. Obviamente, vai se sair muito bem. Sempre é possível extrair um subconjunto que atinge quase 98% de precisão.
Agora, seus dados de teste são muito semelhantes a este subconjunto? Se sim, você precisa coletar mais dados, espero que um pouco mais variados. Do ponto de vista da polarização-variação, eu diria que sua variação é alta.
fonte
Você tem muitos recursos (1000) para o número de amostras que você tem (150). Você precisa aumentar suas amostras ou diminuir seu número de recursos.
Dizem que geralmente o número de recursos ^ 2 = número de amostras necessárias. Então você precisa de pelo menos milhões de amostras.
fonte
Isso pode acontecer usando qualquer algoritmo de ML e até classificadores personalizados. Tente diferentes esquemas de validação cruzada com dobras k, ou seja, 2 ou 10 vezes. Com k mais alto, espera-se que o erro de teste seja reduzido.
fonte