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.
La précision sur un ensemble d'entraînement n'a aucun sens dans l'apprentissage automatique. Ignorez-le.
la source
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.
la source
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.
la source
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.
la source
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.
la source