Nous avons un petit ensemble de données (environ 250 échantillons * 100 entités) sur lequel nous voulons construire un classificateur binaire après avoir sélectionné le meilleur sous-ensemble d'entités. Disons que nous partitionnons les données en:
Formation, validation et tests
Pour la sélection des fonctionnalités, nous appliquons un modèle de wrapper basé sur la sélection des fonctionnalités optimisant les performances des classificateurs X, Y et Z, séparément. Dans cette étape de prétraitement, nous utilisons des données de formation pour former les classificateurs et des données de validation pour évaluer chaque sous-ensemble de fonctionnalités candidat.
À la fin, nous voulons comparer les différents classificateurs (X, Y et Z). Bien sûr, nous pouvons utiliser la partie test des données pour avoir une comparaison et une évaluation équitables. Cependant, dans mon cas, les données de test seraient vraiment petites (environ 10 à 20 échantillons) et donc, je veux appliquer une validation croisée pour évaluer les modèles.
La distribution des exemples positifs et négatifs est très mal équilibrée (environ 8: 2). Ainsi, une validation croisée pourrait nous manquer dans l'évaluation des performances. Pour surmonter cela, nous prévoyons d'avoir la partie test (10-20 échantillons) comme deuxième méthode de comparaison et de valider la validation croisée.
En résumé, nous partitionnons les données en formation, validation et tests. Les pièces de formation et de validation doivent être utilisées pour la sélection des fonctionnalités. Ensuite, une validation croisée sur les mêmes données doit être appliquée pour estimer les modèles. Enfin, les tests sont utilisés pour valider la validation croisée compte tenu du déséquilibre des données.
La question est: si nous utilisons les mêmes données (formation + validation) utilisées pour sélectionner les fonctionnalités optimisant les performances des classificateurs X, Y et Z, pouvons-nous appliquer une validation croisée sur les mêmes données (formation + validation) utilisées pour la sélection des fonctionnalités mesurer la performance finale et comparer les classificateurs?
Je ne sais pas si ce paramètre pourrait conduire à une mesure de validation croisée biaisée et entraîner une comparaison non justifiée ou non.
Réponses:
je pense que c'est biaisé. Qu'en est-il de l'application de FS dans la partition N-1 et de tester sur la dernière partition. et combiner les caractéristiques de tous les plis d'une certaine manière (union / intersection / ou d'une manière spécifique au problème).
la source
La réponse simple est que vous devez sélectionner des fonctionnalités sur un ensemble de données différent de celui sur lequel vous vous entraînez (vous le faites déjà, alors ne changez pas cela) --- l'effet de ne pas le faire est que vous surajusterez vos données d'entraînement. Vous ne devez pas non plus faire de sélection de fonctionnalités sur votre ensemble de test, car cela augmenterait les estimations des performances de vos modèles (je pense que vous le réalisez déjà également, mais j'ai trouvé un peu difficile de comprendre la question avec précision).
Si vous avez déjà divisé votre ensemble de tests en formation, validation et test, il n'y a aucune raison particulière de procéder à une validation croisée, sauf si vous avez si peu de données que votre ensemble de tests est trop petit pour en tirer des conclusions solides. De nombreux chercheurs n'aiment pas la validation croisée parce que si elle est utilisée pour piloter le développement de modèles (j'entends par là, vous peaufinez les choses, puis exécutez la validation croisée pour voir comment elles fonctionnent, puis les peaufiner, etc.), vous avez effectivement accès à votre test données et cela peut vous conduire à surestimer vos performances sur des données vraiment invisibles. Si vos données sont si petites que vous n'avez pas d'autre choix que de faire une validation croisée, la bonne façon de le faire avec les ensembles de formation, de développement et de test est de diviser explicitement vos données en trois parties pour chaque pli --- la majorité doit être utilisée pour s'entraîner, certains pour le développement (sélection de fonctionnalités dans votre cas, plus tous les autres paramètres gratuits qui nécessitent un ajustement) et enfin vous devriez tester sur la partie test. Vous pouvez ensuite faire la moyenne des scores sur ces portions de test pour obtenir une estimation des performances du modèle: cependant, comme je l'ai dit, sachez que si ces scores sont utilisés pour vous guider vers les approches que vous souhaitez utiliser pour votre problème, vous ne devriez pas vous attendre à obtenir le même score sur les données invisibles que vous avez fait de votre validation croisée.
la source
finally you should test on the test portion. You can then average scores across these test portions to get an estimate of model performance
Pour donner un sens aux performances d'un classifieur, il doit être utilisé sur des données de test qui n'ont pas été vues ou utilisées auparavant. Selon moi, si vous prenez une décision basée sur les performances de l'algorithme sur un ensemble de données, cet ensemble de données est soit une formation soit une validation croisée, en aucun cas il ne devrait être appelé ensemble de données de test.Avez-vous essayé LOOCV? Je pense qu'il est apte à s'entraîner, lorsque vous avez très peu de données d'entraînement. Pour répondre à votre question, cela ne vous donnerait pas le meilleur des résultats simplement parce que cela pourrait surdimensionner et vous donner des résultats trompeurs, de sorte que votre classificateur ne fonctionnerait pas très bien sur d'autres données, qu'il n'a pas vues.
la source
Vous pouvez effectuer les opérations suivantes pour comparer les performances des classificateurs
Prenez votre ensemble d'entraînement et entraînez-vous sur tous les ensembles de fonctionnalités possibles. Pour chaque ensemble de fonctionnalités, minimisez les paramètres et construisez le modèle de manière à ce qu'il s'adapte bien à l'ensemble d'entraînement. Maintenant, une fois que les modèles sont construits pour tous les jeux de fonctionnalités, c'est-à-dire que vous avez un modèle pour chaque jeu de fonctionnalités, validez les modèles (construits sur différents jeux de fonctionnalités) sur le jeu de validation et sélectionnez ce modèle (construit pour un sous-ensemble particulier de jeux de fonctionnalités). ) qui donne l'erreur minimale sur l'ensemble de validation. De cette façon, vous vous assurez que le modèle construit correspond bien non seulement à l'ensemble de formation, mais également à l'ensemble de validation.
Maintenant, prenez ce modèle construit et testez-le sur l'ensemble de test. Cela vous indiquera les performances du classificateur une fois exécuté sur un ensemble de données qui n'a été ni utilisé pour la formation ni pour la validation. En outre, vous avez sélectionné cet ensemble de fonctionnalités qui correspond bien à l'ensemble de formation et également à l'ensemble de validation.
la source
Si possible, il est préférable de retenir certaines données pour une validation croisée supplémentaire. Par exemple, vous pouvez l'utiliser pour valider vos algorithmes en créant des courbes d'apprentissage. Ces courbes doivent être construites sur un ensemble de données qui n'a pas été utilisé auparavant.
Même si vous souhaitez simplement sélectionner un algorithme qui vous donne le score F1 le plus élevé, vous devez utiliser un ensemble de données de validation croisée supplémentaire pour ce faire. L' ensemble de tests doit être réservé pour rapporter la précision finale de votre solution (performances attendues du classificateur choisi sur des données invisibles).
la source
Il peut être très grossièrement biaisé, reportez-vous au chapitre sur la validation du modèle dans "Éléments d'apprentissage statistique", il peut rendre la précision du cv du modèle supérieure à 70% tandis que le taux d'erreur réel de tout modèle devrait être de 50% (les fonctionnalités sont indépendantes de la classe ).
la source