En général, si nous avons un grand ensemble de données, nous pouvons le diviser en (1) formation, (2) validation et (3) test. Nous utilisons la validation pour identifier les meilleurs hyperparamètres en validation croisée (par exemple, C dans SVM), puis nous formons le modèle en utilisant les meilleurs hyperparamètres avec l'ensemble de formation et appliquons le modèle formé au test pour obtenir les performances.
Si nous avons un petit ensemble de données, nous ne pouvons pas créer de jeu d'apprentissage et de test (pas assez d'échantillons). Par conséquent, nous ferons une validation croisée (k-fold, Leave-One-Out, etc.) pour évaluer les performances du modèle.
J'ai vu que la validation croisée imbriquée (qu'elle soit répétée ou stratifiée) a été utilisée dans le cadre d'un petit ensemble de données, c'est-à-dire pour générer des performances de modèle généralisées tout en optimisant la sélection des paramètres. Ma question est, comment puis-je obtenir les meilleurs hyperparamètres en validation croisée imbriquée (répétée / non répétée)? Je suis intéressé à faire cela dans scikit-learn, si possible. Je suis un peu confus sur la façon de le faire.
J'ai lu plusieurs ressources mais aucune ne m'a donné la réponse définitive à cette question:
Réponses:
Aperçu
Comme @RockTheStar l'a correctement conclu dans les commentaires, la validation croisée imbriquée n'est utilisée que pour accéder à l'estimation des performances du modèle. Dissocié de cela, pour trouver les meilleurs hyperparamètres, nous devons effectuer un réglage simple avec validation croisée sur l'ensemble des données.
En détails:
Réglage et validation (boucles de rééchantillonnage interne et externe)
Dans la boucle interne, vous effectuez un réglage hyperparamétrique, les modèles sont formés aux données d'apprentissage et validés sur les données de validation. Vous trouvez les paramètres optimaux et entraînez votre modèle sur l'ensemble des données de la boucle interne . Bien qu'il ait été formé pour optimiser les performances des données de validation, l'évaluation est biaisée.
Donc, ce modèle est testé avec les données de test, donc j'espère qu'il n'y a pas de biais, ce qui vous donne une estimation des performances.
Le modèle final
Maintenant que vous connaissez les performances attendues de votre modèle, vous devez le former avec toutes vos données. Mais notre modèle n'est pas simplement l'algorithme, c'est tout le processus de construction du modèle!
Effectuez donc un réglage hyperparamétrique avec toutes vos données et les mêmes spécifications de la boucle intérieure. Avec les meilleurs hyperparamètres, entraînez votre modèle final avec l'ensemble des données. Les performances attendues de ce modèle final correspondent à ce que vous avez évalué précédemment avec la validation croisée imbriquée.
Pour réitérer, les hyperparmètres du modèle final sont ce que vous attendez qui vous donnera les performances que vous avez trouvées dans l' étape de réglage et de validation .
la source