Récemment, j'ai beaucoup lu sur ce site (@Aniko, @Dikran Marsupial, @Erik) et ailleurs sur le problème du surajustement avec une validation croisée - (Smialowski et al 2010, Bioinformatics, Hastie, Éléments d'apprentissage statistique). Il est suggéré que toute sélection de caractéristique supervisée (utilisant la corrélation avec les étiquettes de classe) effectuée en dehors de l'estimation de performance du modèle à l'aide de la validation croisée (ou d'une autre méthode d'estimation de modèle telle que l'amorçage) peut entraîner un surajustement.
Cela ne me semble pas intuitif - si vous sélectionnez un ensemble de fonctionnalités puis évaluez votre modèle en utilisant uniquement les fonctionnalités sélectionnées à l'aide de la validation croisée, vous obtenez une estimation non biaisée de la performance généralisée du modèle pour ces fonctionnalités (cela suppose que l'échantillon étudié soit représentatif de la populatation)?
Avec cette procédure, on ne peut bien sûr pas revendiquer un ensemble de fonctionnalités optimal, mais peut-on également indiquer que les performances du jeu de fonctionnalités sélectionné sur des données invisibles sont valides?
J'accepte le fait que la sélection de caractéristiques sur l'ensemble du jeu de données peut entraîner certaines fuites de données entre les ensembles de test et de train. Mais si l'ensemble de fonctionnalités est statique après la sélection initiale et qu'aucun autre réglage n'est effectué, il est sûrement possible de signaler les métriques de performance validées de manière croisée.
Dans mon cas, j'ai 56 fonctionnalités et 259 cas et ainsi #cases> #features. Les caractéristiques sont dérivées des données du capteur.
Toutes mes excuses si ma question semble dérivée, mais cela semble être un point important à clarifier.
Edit: Lors de la mise en œuvre de la sélection des fonctionnalités dans la validation croisée sur le jeu de données détaillé ci-dessus (grâce aux réponses ci-dessous), je peux confirmer que la sélection des fonctionnalités avant la validation croisée dans ce jeu de données a introduit un impact significatif.partialité. Ce biais / surajustement était le plus important dans le cas d’une formulation à 3 classes, par rapport à une formulation à 2 classes. Je pense que le fait d’avoir utilisé la régression par étapes pour la sélection des caractéristiques a augmenté ce sur-ajustement; à des fins de comparaison, sur un ensemble de données différent mais lié, j'ai comparé un sous-programme séquentiel de sélection de fonction avant exécuté avant la validation croisée par rapport à des résultats que j'avais précédemment obtenus avec la sélection de caractéristique dans CV. Les résultats entre les deux méthodes ne différaient pas considérablement. Cela peut signifier que la régression pas à pas est plus encline à sur-adapter que les FS séquentielles ou peut être une bizarrerie de cet ensemble de données.
Réponses:
Si vous effectuez la sélection des fonctionnalités sur toutes les données, puis effectuez une validation croisée, les données de test de chaque pli de la procédure de validation croisée ont également été utilisées pour choisir les fonctionnalités. C'est ce qui biaise l'analyse des performances.
Considérons cet exemple. Nous générons des données cibles en retournant une pièce de monnaie 10 fois et en enregistrant si elle tombe en tête ou en queue. Ensuite, nous générons 20 objets en retournant la pièce 10 fois pour chaque objet et écrivez ce que nous obtenons. Nous effectuons ensuite la sélection des caractéristiques en choisissant celle qui correspond le mieux aux données cibles et nous l'utilisons comme prédiction. Si nous validons ensuite, nous obtiendrons un taux d'erreur attendu légèrement inférieur à 0,5. En effet, nous avons choisi la fonctionnalité sur la base d'une corrélation à la fois entre le kit d'apprentissage et le kit de test, dans chaque étape de la procédure de validation croisée. Cependant, le taux d'erreur réel va être de 0,5 car les données cibles sont simplement aléatoires. Si vous sélectionnez les fonctionnalités indépendamment dans chaque repli de la validation croisée, la valeur attendue du taux d'erreur est 0.
L'idée principale est que la validation croisée est un moyen d'estimer la performance de généralisation d'un processus pour la construction d'un modèle. Vous devez donc répéter le processus dans son intégralité. Sinon, vous vous retrouverez avec une estimation biaisée ou une sous-estimation de la variance de l'estimation (ou des deux).
HTH
Voici un code MATLAB qui effectue une simulation Monte-Carlo de cette configuration, avec 56 fonctions et 259 cas, pour correspondre à votre exemple, le résultat obtenu est:
Estimateur biaisé: erate = 0.429210 (0.397683 - 0.451737)
Estimateur non biaisé: erate = 0,499689 (0,397683 - 0,590734)
L'estimateur biaisé est celui où la sélection de caractéristiques est effectuée avant la validation croisée, l'estimateur non biaisé est celui où la sélection de caractéristiques est effectuée indépendamment dans chaque repli de la validation croisée. Cela suggère que le biais peut être assez grave dans ce cas, en fonction de la nature de la tâche d'apprentissage.
la source
Pour ajouter une description légèrement différente et plus générale du problème:
Si vous effectuez un type de prétraitement basé sur les données , par exemple
et si vous souhaitez utiliser la validation croisée / out-of-bootstrap (/ hold-out) pour estimer les performances du modèle final , le prétraitement piloté par les données doit être effectué sur les données de formation de substitution, c'est-à-dire séparément pour chaque modèle de substitution.
Si le prétraitement piloté par les données est de type 1. Ceci conduit à une validation croisée "double" ou "imbriquée": l'estimation du paramètre est réalisée dans une validation croisée utilisant uniquement le jeu d'apprentissage de la validation croisée "externe". Les ElemStatLearn ont une illustration ( https://web.stanford.edu/~hastie/Papers/ESLII.pdf page 222 sur 5).
Vous pouvez dire que le prétraitement fait vraiment partie de la construction du modèle. seul le prétraitement est fait
peut être sorti de la boucle de validation pour sauvegarder les calculs.
Inversement, si votre modèle est entièrement construit à partir de connaissances externes à un ensemble de données particulier (par exemple, vous décidez au préalable de votre connaissance experte que les canaux de mesure 63 - 79 ne peuvent pas réellement aider à résoudre le problème, vous pouvez bien sûr les exclure. Construisez le modèle et validez-le. De même, si vous effectuez une régression PLS et décidez par votre expérience que 3 variables latentes constituent un choix raisonnable (mais ne jouez pas pour déterminer si 2 ou 5 lv donnent de meilleurs résultats), vous pouvez alors: continuez avec une validation normale hors-bootstrap / croisée.
la source
Essayons de le rendre un peu intuitif. Prenons cet exemple: vous avez une variable dépendante binaire et deux prédicteurs binaires. Vous voulez un modèle avec un seul prédicteur. Les deux prédicteurs ont une chance, disons, à 95% d'être égale à la personne à charge et une chance de 5% de ne pas être d'accord avec la personne à charge.
Désormais, par hasard sur vos données, un prédicteur équivaut à la dépendance de l’ensemble des données dans 97% des cas et l’autre dans 93% des cas. Vous choisissez le prédicteur à 97% et construisez vos modèles. Dans chaque volet de la validation croisée, vous aurez le modèle dépendant du prédicteur, car il a presque toujours raison. Par conséquent, vous obtiendrez une performance prédite croisée de 97%.
Maintenant, vous pourriez dire, ok c'est juste de la malchance. Mais si les prédicteurs sont construits comme ci-dessus, alors vous avez une chance que 75% d’au moins un d’eux ait une précision> 95% sur l’ensemble des données et que vous choisissiez cette précision. Vous avez donc une chance de 75% de surestimer la performance.
En pratique, il n'est pas du tout trivial d'estimer l'effet. Il est tout à fait possible que votre sélection d’entités sélectionne les mêmes entités dans chaque pli que si vous l’aviez faite pour l’ensemble du jeu de données, sans biais. L'effet devient également plus petit si vous avez beaucoup plus d'échantillons mais de fonctionnalités. Il peut être instructif d’utiliser les deux méthodes avec vos données et de voir en quoi les résultats diffèrent.
Vous pouvez également mettre de côté une quantité de données (20%, par exemple), utiliser à la fois votre méthode et la méthode correcte pour obtenir des estimations de performances en effectuant une validation croisée sur la valeur de 80% et voir quelle prévision de performance s'avère plus précise lorsque vous transférez votre modèle à une autre. % des données mises de côté. Notez que, pour que cela fonctionne, votre sélection de fonctionnalités avant votre CV devra également être effectuée uniquement sur 80% des données. Sinon, cela ne simulera pas le transfert de votre modèle vers des données extérieures à votre échantillon.
la source