L'erreur de classification est plus faible lorsque je ne fais aucun apprentissage sur l'ensemble de données?

8

J'ai un ensemble de données d'un sac de mots. Je choisis au hasard certains points et les utilise pour les tests et les autres sont utilisés pour la formation.

  • cas (1) Je prends simplement chaque point de données de l'ensemble de test et le classe comme ayant la même étiquette de classe que son point le plus proche de l'ensemble de trains.
  • cas (2) Je fais la classification en utilisant n'importe quel classificateur supervisé connu.

J'ai toujours un meilleur taux de reconnaissance dans le cas (1). Autrement dit, ne pas faire d'apprentissage du tout, c'est mieux que d'utiliser n'importe quel apprentissage supervisé, pour cet ensemble de données (et d'autres)! Est-ce une situation fréquente?

shn
la source
Je ne sais pas si c'est fréquent, mais ça m'est arrivé. Votre classificateur ne fonctionne tout simplement pas bien. En particulier, j'ai souvent fait des modèles d'arbres et constaté que le nœud racine est le meilleur arbre (selon la définition de «meilleur»).
Peter Flom
1
Il est très courant que les gens commettent des erreurs lorsqu'ils mettent en œuvre des algorithmes d'apprentissage. Si vous utilisez la descente de gradient, vérifiez qu'un petit pas dans la direction du gradient diminue réellement la fonction de coût d'environ le montant qu'il devrait. Il s'agit d'un test facile, mais de nombreuses personnes l'ignorent et perdent du temps à modifier un algorithme avec une erreur de signe ou un problème similaire.
Douglas Zare
@DouglasZare J'ai testé avec de nombreux classificateurs de Weka et d'autres que j'ai moi-même implémentés. Pour de nombreux jeux de données, l'utilisation d'un classificateur avec une étape de formation (c'est-à-dire le cas (2)) donnera de meilleurs résultats que le cas (1), cependant, pour les trois jeux de données du sac de mots que je teste actuellement, j'obtiens de meilleurs résultats dans le cas (1). Je ne pense pas que l'apprentissage / classificateur ne fonctionne pas bien, car j'ai testé avec de nombreux classificateurs.
shn

Réponses:

11

Ce n'est pas vrai que vous ne faites aucun apprentissage. Ce que vous faites, c'est utiliser l'algorithme de classification bien connu appelé le plus proche voisin (NN). Il est important de réaliser que vous apprenez tant que vous utilisez les données du train (même si vous ne calculez pas explicitement un paramètre) - et dans ce cas, vous l'utilisez certainement.

Il est normal que NN se porte bien. Cependant, dans certains cas, cela peut être le signe d'un problème avec vos données. Cela peut se produire lorsque vos données ne sont pas IID . Par exemple, dans certains cas, vous pouvez avoir des doublons exacts ou proches dans vos données. Dans un tel cas, de nombreux cas dans l'ensemble de test auront un voisin proche dans l'ensemble de train et vous obtiendrez un taux de réussite élevé, mais en fait, vous êtes en sur-ajustement, car si vous obtenez un nouveau point sans doublons, vos performances seront pires. Dans ce cas, vous pouvez essayer de supprimer les doublons à l'avance ou de créer les ensembles de train / test de telle sorte que les doublons (ou les clusters étroits) doivent être dans le même ensemble. Il est important de regarder les données et d'essayer de comprendre ce qui se passe.

Au niveau du bit
la source
J'utilise directement l'ensemble de formation pour faire la classification des points de consigne de test. Aucune phase de formation n'a été effectuée sur l'ensemble de formation. Je n'ai rien appris, je viens de classer mes points de test. Je ne sais pas pourquoi vous appelez cela "apprentissage" simplement parce que le train est utilisé. Néanmoins, je viens de vérifier l'ensemble de données et vous avez raison, il y a des points de données en double, parfois le même point de données est dans le train et l'ensemble de test, ce n'est pas le cas pour tous les points de données, mais je vais essayer pour corriger, supprimez les doublons et voyez si le problème est résolu.
shn
1
@shn c'est une erreur courante de penser que vous n'apprenez pas et qu'il n'y a pas de paramètres dans une telle méthode. Tant que vous utilisez les données d'entraînement, elles apprennent. Ce que vous faites en fait, c'est d'utiliser l'ensemble de l'entraînement en tant que «paramètres appris», donc lorsque vous l'enregistrez pour une utilisation ultérieure, vous êtes en fait «en train de vous entraîner» (c'est pourquoi NN est souvent plus enclin à sur-ajuster - il a en fait beaucoup des "paramètres"). Si les prédictions que vous faites dépendent de l'ensemble d'entraînement, c'est l'apprentissage. Un cas sans formation serait de faire des prédictions SANS utiliser du tout l'ensemble de formation.
Bitwise
Ok, le problème vient des points dupliqués. En les supprimant, certains classificateurs atteignent un taux de reconnaissance légèrement meilleur que la stratégie NN. Cependant, je n'ai pas remarqué qu'il y avait trop de points dupliqués, je les ai supprimés et je me retrouve avec un ensemble de données beaucoup plus petit, le nombre d'instances n'est pas vraiment suffisant pour effectuer un apprentissage en ligne. Connaissez-vous un ensemble de données étiqueté disponible sur la classification des documents qui est prêt à l'emploi (c'est-à-dire que je peux utiliser sans faire de prétraitement et beaucoup d'autres choses ...)? Il existe un excellent ensemble de données contenant un sac de mots sur le référentiel UCI, mais les étiquettes ne sont pas fournies.
shn