Précision du test supérieure à la formation. Comment interpréter?


23

J'ai un ensemble de données contenant au plus 150 exemples (divisé en formation et test), avec de nombreuses fonctionnalités (supérieures à 1000). J'ai besoin de comparer les classificateurs et les méthodes de sélection des fonctionnalités qui fonctionnent bien sur les données. J'utilise donc trois méthodes de classification (J48, NB, SVM) et 2 méthodes de sélection de fonctionnalités (CFS, WrapperSubset) avec différentes méthodes de recherche (Greedy, BestFirst).

En comparant, je regarde la précision de l'entraînement (pliage croisé 5 fois) et la précision du test.

Voici l'un des résultats de J48 et CFS-BestFirst:

{"precisionTraining": 95,83, "precisionTest": 98,21}

Beaucoup de résultats sont comme ça, et sur le SVM il y a beaucoup de résultats qui indiquent que la précision du test est beaucoup plus élevée que la formation (formation: 60%, test: 98%)

Comment puis-je interpréter de manière significative ce genre de résultats? Si c'était plus bas, je dirais que c'est trop adapté. Y a-t-il quelque chose à dire sur le biais et la variance dans ce cas en regardant tous les résultats? Que puis-je faire pour donner un sens à cette classification, par exemple en resélectionnant les ensembles de formation et de test ou tout simplement en utilisant la validation croisée sur toutes les données?

J'ai 73 formations et 58 instances de test. Certaines réponses ne contenaient pas ces informations lors de leur publication.

Réponses:


21

Je pense qu'une première étape consiste à vérifier si les performances de formation et de test signalées sont en fait correctes.

  • Le fractionnement pendant la validation croisée multipliée par 5 est-il effectué de manière à produire des trains de cv / ensembles de tests statistiquement indépendants? Par exemple, s'il y a des mesures répétées dans les données, se retrouvent-elles toujours dans le même ensemble?
  • Une précision de 95,83% dans un cv 5 fois de 150 échantillons correspond à 5 mauvais échantillons d'entraînement sur 130 pour les 5 modèles de substitution, ou 25 mauvais cas pour 5 * 130 échantillons d'apprentissage.
  • La précision du test à 98,21% est plus difficile à expliquer: lors d'un passage du cv, chaque cas doit être testé une fois. Ainsi, les chiffres éventuellement signalés doivent être par pas de 100% / 150. 98,21% correspond à 2,68 mauvais cas (2 et 3 mauvais sur 150 cas de test donnent une précision de 98,67 et 98,00%, respectivement).

  • Si vous pouvez extraire votre modèle, calculez les précisions signalées en externe.

  • Quelles sont les précisions signalées pour une entrée aléatoire?
  • Effectuez une validation croisée externe: divisez vos données et ne remettez que la partie formation au programme. Prédisez les données de test «externes» et calculez la précision. Est-ce conforme à la sortie du programme?
  • Assurez-vous que la «précision du test» signalée provient de données indépendantes (validation croisée double / imbriquée): si votre programme fait une optimisation basée sur les données (par exemple en choisissant les «meilleures» fonctionnalités en comparant de nombreux modèles), cela ressemble plus à une erreur de formation (qualité d'ajustement) que comme une erreur de généralisation.

Je suis d'accord avec @mbq que l'erreur de formation n'est presque jamais utile dans l'apprentissage automatique. Mais vous pouvez être dans l'une des rares situations où il est réellement utile: si le programme sélectionne un «meilleur» modèle en comparant les précisions, mais n'a que des erreurs de formation à choisir, vous devez vérifier si l'erreur de formation permet réellement une détection sensible choix.
@mbq a décrit le meilleur scénario pour les modèles indiscernables. Cependant, des scénarios pires se produisent également: tout comme la précision du test, la précision de la formation est également sujette à variance, mais présente un biais optimiste par rapport à la précision de généralisation qui est généralement intéressante. Cela peut conduire à une situation où les modèles ne peuvent pas être distingués bien qu'ils aient vraiment des performances différentes. Mais leur précision de formation (ou cv interne) est trop proche pour les distinguer en raison de leur biais optimiste. Par exemple, les méthodes de sélection de caractéristiques itératives peuvent être sujettes à de tels problèmes qui peuvent même persister pour les précisions de validation croisée interne (selon la façon dont cette validation croisée est mise en œuvre).

Donc, si un tel problème pouvait survenir, je pense que c'est une bonne idée de vérifier si un choix judicieux peut éventuellement résulter des précisions que le programme utilise pour la décision. Cela signifierait vérifier que la précision du cv interne (qui est censée être utilisée pour la sélection du meilleur modèle) n'est pas ou pas trop biaisée de manière optimiste par rapport à un cv réalisé en externe avec un fractionnement statistiquement indépendant. Encore une fois, des données synthétiques et / ou aléatoires peuvent aider à découvrir ce que fait réellement le programme.

Une deuxième étape consiste à vérifier si les différences observées pour les divisions statistiquement indépendantes sont significatives, comme l'a déjà souligné @mbq.

Je vous suggère de calculer la différence de précision que vous devez observer avec votre taille d'échantillon donnée afin d'avoir une différence statistiquement significative. Si votre variation observée est moindre, vous ne pouvez pas décider quel algorithme est le mieux avec votre ensemble de données donné: une optimisation supplémentaire n'a pas de sens.


il y a de grandes informations ici à digérer. Tout d'abord, je suis vraiment désolé de ne pas avoir donné les chiffres exacts car je ne m'attendais pas à ce que vous arriviez à des chiffres aussi détaillés et je voulais également me concentrer sur un seul sujet. Quoi qu'il en soit, j'ai 73 formations et 58 données de test. ceux-ci ne sont pas statistiquement séparés, ils ont juste été pris par moi à différentes époques. Les échantillons d'apprentissage sont d'abord prélevés dans l'algorithme de sélection des fonctionnalités (la méthode fs du wrapper a également un cv interne 5 fois), puis 5 fois et la meilleure précision est prise et le modèle est enregistré. puis ce modèle est utilisé pour calculer la précision du test.
ercu

17

La précision sur un ensemble d'entraînement n'a aucun sens dans l'apprentissage automatique. Ignorez-le.


Merci! j'ai beaucoup de résultats avec la même meilleure précision de test, donc je ne peux pas comparer les résultats maintenant (je regarderais également la précision de l'entraînement pour comparer si vous ne l'avez pas dit :). Ainsi, au lieu de se diviser en tests et en formation, les exécutions multiples de validation croisée sur tous les ensembles de données sont-elles plus appropriées pour mon cas pour comparer les résultats? ou ai-je besoin d'une autre métrique?
ercu

1
Le CV est certainement une bonne idée; de toute façon, notez qu'il peut y avoir plusieurs «meilleurs» algorithmes ou ensembles de paramètres (dans le sens où ils donnent la même précision, ou une précision statistiquement impossible à distinguer du meilleur des cas) - ce n'est pas non plus un problème. Encore mieux, cela signifie que vous obtenez des résultats stables - un optimum net peut suggérer que vous avez sur-ajusté le modèle en choisissant des paramètres de sélection.

8
Il est utile de connaître la précision de l'ensemble d'entraînement afin d'estimer la quantité de sur-ajustement de votre algorithme prédictif (en calculant la différence de précision entre les ensembles d'entraînement et de test).
Frank Harrell

Pourriez-vous expliquer pourquoi?
inf

1
Par définition, les méthodes ML concernent les performances sur des données invisibles, donc elles ne donnent aucune garantie sur ce résultat (le modèle ne devrait pas implémenter à nouveau le mécanisme sous-jacent aux données comme dans la modélisation statistique). Dans la pratique, de nombreuses méthodes donnent des prévisions trop précises, ce n'est donc que trompeur.

7

Il y a quelques problèmes sérieux avec la façon dont vous avez procédé. Tout d'abord, le fractionnement des données n'est fiable que si la taille totale de l'échantillon est énorme. Vous obtiendriez des résultats différents si vous vous sépariez à nouveau. Entre autres choses, vous ne considérez pas les intervalles de confiance dans les estimations de précision. Deuxièmement, la validation croisée 5 fois n'est pas suffisamment précise. Il peut être nécessaire de le répéter 100 fois pour obtenir une précision adéquate. Troisièmement, vous avez choisi comme score d'exactitude une règle de notation incorrecte discontinue (proportion correctement classée). Une telle règle de notation incorrecte conduira à la sélection du mauvais modèle.


3

En supposant qu'il n'y a pas de problème dans la mise en œuvre des algorithmes, examinons le problème.

Imaginez prendre un petit sous-ensemble de vos données d'entraînement et exécuter votre algorithme d'apprentissage dessus. Ça va évidemment très bien. Il est toujours possible d'extraire un sous-ensemble qui atteint une précision proche de 98%.

Vos données de test sont-elles maintenant très similaires à ce sous-ensemble? Si oui, alors vous devez aller collecter plus de données, espérons un peu plus variées. Du point de vue de la variation de biais, je dirais que votre variance est élevée.


1

Vous avez trop de fonctionnalités (1000) pour le nombre d'échantillons que vous avez (150). Vous devez augmenter vos échantillons ou diminuer votre nombre de fonctionnalités.

Ils disent généralement nombre de fonctionnalités ^ 2 = nombre d'échantillons nécessaires. Vous avez donc besoin d'au moins un million d'échantillons.


0

Cela peut se produire en utilisant n'importe quel algorithme ML et même des classificateurs personnalisés. Essayez différents schémas de validation croisée k-fold, c'est-à-dire 2 ou 10 fois également. Avec un k plus élevé, il est prévu que l'erreur de test soit réduite.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.