Comment obtenir des hyperparamètres optimaux après validation croisée imbriquée?

8

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:

Validation croisée imbriquée pour la sélection du modèle

Validation croisée et sélection des fonctionnalités imbriquées: quand effectuer la sélection des fonctionnalités?

RockTheStar
la source
Cela mentionne scikit-learn, mais a une question d'apprentissage automatique viable. Cela ne me semble pas hors sujet.
gung - Réintègre Monica
@gung oui, merci. Le scikit-learn est une partie supplémentaire de la question (un plus pour moi)
RockTheStar

Réponses:

6

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 .

Pyromane
la source
Merci pour votre réponse. J'essaie de le comprendre mais je ne sais pas si je l'obtiens. Alors, où puis-je obtenir exactement mon meilleur ensemble d'hyperparamètres?
RockTheStar
@RockTheStar J'ai mis à jour la réponse. Fondamentalement, vous réaménagez (c.-à-d. Effectuez à nouveau le réglage, puis ajustez le modèle réglé sur toutes les données): c'est là que vient votre meilleur pari pour des hyperparamètres optimaux.
Firebug
1
Donc, fondamentalement, vous dites que le CV imbriqué sert à vérifier les performances du modèle. Et nous devons refaire un CV simple pour des données complètes pour obtenir les paramètres optimaux. Ai-je raison?
RockTheStar
@RockTheStar Oui, vous avez tout résumé correctement.
Firebug
1
@nafizh Désolé d'avoir mis si longtemps à répondre à votre demande, vous n'avez pas vu la notification (?). Toutes les estimations de performances doivent être basées sur le CV imbriqué, qui est celui que vous avez créé pour tester votre stratégie de création de modèle. Pour effectuer le réglage final de l'hyperparamètre, vous effectuez la boucle interne sur l'ensemble des données et choisissez le meilleur en fonction du même critère que vous avez utilisé dans le CV imbriqué. Ensuite, vous l'adaptez à l'ensemble des données et c'est votre modèle final, mais les performances prédictives que vous lui attribuez sont celles que vous avez obtenues dans le CV imbriqué .
Firebug