O erro de classificação é mais baixo quando eu não aprendo no conjunto de dados?

8

Eu tenho um conjunto de dados de um pacote de palavras. Escolho aleatoriamente alguns pontos e os uso para testes e os outros são usados ​​para treinamento.

  • case (1) Apenas pego cada ponto de dados do conjunto de teste e o classifico como tendo o mesmo rótulo de classe que seu ponto mais próximo do conjunto de trem.
  • case (2) Eu faço a classificação usando qualquer classificador supervisionado conhecido.

Eu sempre obtenho uma melhor taxa de reconhecimento no caso (1). Ou seja, não aprender nada, é melhor do que usar aprendizado supervisionado para esse conjunto de dados (e outros)! Essa é uma situação frequente?

shn
fonte
Não sei se é frequente, mas aconteceu comigo. Seu classificador simplesmente não está funcionando bem. Em particular, muitas vezes fiz modelos de árvore e descobri que o nó raiz é a melhor árvore (dependendo da definição de "melhor").
Peter Flom
1
É muito comum as pessoas cometerem erros quando implementam algoritmos de aprendizado. Se você usar a descida do gradiente, verifique se um pequeno passo na direção do gradiente realmente diminui a função de custo em aproximadamente o valor que deveria. Este é um teste fácil, mas muitas pessoas o ignoram e perdem tempo aprimorando um algoritmo com um erro de sinal ou algum problema semelhante.
Douglas Zare
@DouglasZare Eu testei com muitos classificadores da Weka e outros que eu me implementei. Para muitos conjuntos de dados, o uso de um classificador com uma etapa de treinamento (ou seja, o caso (2)) fornecerá melhores resultados do que o caso (1); no entanto, para os três conjuntos de dados de conjuntos de palavras em que estou testando atualmente, obtenho melhores resultados no caso (1). Não acho que o aprendizado / classificador não esteja funcionando bem, pois testei com muitos classificadores.
shn

Respostas:

11

Não é verdade que você não está aprendendo nada. O que você está fazendo é usar o conhecido algoritmo de classificação chamado Vizinho Mais Próximo (NN). É importante perceber que você está aprendendo enquanto usa os dados do trem (mesmo que não calcule explicitamente algum parâmetro) - e, nesse caso, você definitivamente está usando.

Tudo bem que NN esteja indo bem. No entanto, em alguns casos, pode ser um sinal de que há um problema com seus dados. Isso pode acontecer quando seus dados não são IID . Por exemplo, em alguns casos, você pode ter duplicatas exatas ou fechadas nos seus dados. Nesse caso, muitas instâncias no conjunto de testes terão um vizinho próximo no conjunto de trens e você obterá uma alta taxa de sucesso, mas na verdade você está se adaptando demais, porque se você receber um novo ponto sem duplicatas, seu desempenho será pior. O que você pode fazer nesse caso é tentar remover as duplicatas com antecedência ou construir os conjuntos de treinamento / teste, de modo que as duplicatas (ou conjuntos apertados) precisem estar no mesmo conjunto. É importante olhar para os dados e tentar entender o que está acontecendo.

Bit a bit
fonte
Estou usando diretamente o conjunto de treinamento para fazer a classificação dos pontos de teste. Não há fase de treinamento que foi realizada no conjunto de treinamento. Não aprendi nada, apenas classifiquei meus pontos de teste. Não sei por que você chama isso de "aprendizado" apenas porque o trem é usado. No entanto, acabei de verificar o conjunto de dados e você está certo, existem alguns pontos de dados duplicados, às vezes o mesmo ponto de dados está no conjunto de trem e teste, esse não é o caso de todos os pontos de dados, mas tentarei para corrigir remova as duplicatas e verifique se o problema foi corrigido.
shn
1
@shn é um erro comum pensar que você não está aprendendo e que não existem parâmetros nesse método. Contanto que você use os dados de treinamento, eles estão aprendendo. Na verdade, o que você está fazendo é usar todo o conjunto de treinamento como seus "parâmetros aprendidos"; portanto, quando você o salva para uso posterior, na verdade você está "treinando" (é por isso que o NN geralmente é mais propenso a sobreajuste - ele realmente tem muito de "parâmetros"). Se as previsões que você fizer dependem do conjunto de treinamento, está aprendendo. Um caso sem treinamento seria se você fizesse previsões SEM usar o conjunto de treinamento.
Bitwise
Ok, o problema veio dos pontos duplicados. Ao removê-los, alguns classificadores alcançam uma taxa de reconhecimento ligeiramente melhor que a estratégia NN. No entanto, eu não percebi que havia muitos pontos duplicados, os removi e acabei com um conjunto de dados muito menor, o número de instâncias não é realmente suficiente para realizar um aprendizado on-line. Você conhece algum conjunto de dados rotulado disponível sobre a classificação de documentos pronto para uso (ou seja, que eu possa usar sem pré-processamento e muito mais ...)? Há um ótimo conjunto de dados com palavras-chave no repositório UCI, mas os rótulos não são fornecidos.
shn