Validation croisée et optimisation des paramètres

14

J'ai une question sur l'optimisation des paramètres lorsque j'utilise la validation croisée 10 fois.

Je veux demander si les paramètres doivent être fixés ou non lors de la formation du modèle de chaque pli, c'est-à-dire (1) sélectionner un ensemble de paramètres optimisés pour la précision moyenne de chaque pli.

ou

(2) Je devrais trouver le paramètre optimisé pour chaque pli, puis chaque pli utilise différents paramètres optimisés pour former son modèle, puis tester respectivement les données de test du pli, et enfin faire la moyenne de la précision de chaque pli en résultat?

Laquelle est la bonne méthode pour la validation croisée? Merci beaucoup.

Kevin
la source
Cette question: stats.stackexchange.com/questions/1826/… a deux bonnes réponses (score le plus élevé), je pense qu'elles pourraient vous aider dans votre question. La seconde est exactement ce que vous voulez. OBS .: J'aimerais écrire ceci en tant que commentaire, mais je ne peux pas le faire, donc j'ai répondu.
Augusto

Réponses:

11

Distinguons d'abord deux ensembles de paramètres: les paramètres du modèle (par exemple les poids pour les entités en régression) et les paramètres de l'algorithme d'apprentissage (et les hyperparamètres). Le but de la validation croisée est d'identifier les paramètres d'apprentissage qui se généralisent bien à travers les échantillons de population dont nous tirons parti dans chaque repli.

Plus précisément: Nous recherchons globalement dans l'espace des paramètres d'apprentissage, mais dans chaque pli, nous fixons les paramètres d'apprentissage et apprenons les paramètres du modèle. Le résultat devrait être l'apprentissage de paramètres qui produisent en moyenne les meilleures performances dans tous les plis. Nous pouvons ensuite les utiliser pour former un modèle sur l'ensemble des données.

Joel
la source
Désolé, le type de paramètre que j'ai interrogé est celui des hyperparamètres comme vous l'avez dit.
Kevin
Tels que les paramètres c et g dans libSVM. Donc, je devrais utiliser les mêmes c et g pour former le modèle de chaque pli que la méthode (2) que j'ai mentionnée ci-dessus, puis choisir le meilleur? Merci beaucoup.
Kevin
2
Les (1) et (2) ci-dessus n'étaient pas clairs pour moi, donc je ne les ai pas mentionnés explicitement. Vous devez rechercher l'espace de c & g qui maximise votre métrique de tâche lorsqu'elle est calculée en moyenne entre les plis. Vous définissez donc c & g sur une certaine valeur, exécutez la procédure de formation et de test sur tous les plis, faites-en la moyenne, conservez ce score, modifiez c ou g et répétez. En fin de compte, vous trouvez le meilleur c & g, et vous pouvez former le modèle final sur toutes vos données.
Joel
Merci beaucoup. J'essaie de résumer les réponses. Les données ont été divisées en 10 fois: pli-1: (train1, test1) ... pli-10: (train10, test10) Ensuite, utilisez un (c1, g1) pour former et tester sur pli-1 à pli-10, précision moyenne de tous les plis. Essayez un autre (c2, g2) pour faire le même processus ... répétez jusqu'à ce que je trouve le meilleur (c, g). Et la meilleure précision moyenne (c, g) sera le résultat de ma validation croisée 10 fois.
Kevin
1
Cela semble correct ...
Joel
16

Je pense que la réponse actuellement acceptée est incomplète d'une manière malheureuse. Je ne suis pas d'accord avec la phrase

Le but de la validation croisée est d'identifier les paramètres d'apprentissage qui se généralisent bien à travers les échantillons de population dont nous tirons parti dans chaque repli.

Il s'agit en effet d'une application très importante de la validation croisée, mais pas la seule. Habituellement, vous voulez faire deux choses:

  1. Créez le meilleur modèle possible
  2. Obtenez une impression précise de ses performances

Maintenant, pour compléter l'objectif 1 en fonction de votre algorithme, vous devrez peut-être régler certains hyperparamètres et cela se fait en effet souvent par validation croisée. Mais cela ne vous aide pas encore avec l'objectif 2. Pour cela, vous devez essentiellement imbriquer la validation croisée, comme ceci:

  • Séparez les données entières en n plis
  • Pour chacun, pliez à nouveau les données d'entraînement en sous-plis
  • Utilisez la validation croisée sur les sous-dossiers pour apprendre de bons hyperparamètres
  • Avec ces hyperparamètres, construisez un modèle sur les données d'entraînement de ce pli
  • Testez le modèle sur les données de test
  • Répéter au pli suivant

Pour construire un bon modèle, vous avez juste besoin de la validation croisée interne. Vous devrez toujours le faire pour obtenir un bon modèle. Mais pour obtenir une bonne estimation des performances de votre modèle, vous devez exécuter l'ensemble du processus de création de modèle dans un schéma de validation croisée. Cela comprend également des étapes comme l'imputation, etc.

Erik
la source
1
Erik, pourriez-vous s'il vous plaît fournir une référence sur la façon de procéder?
chao
Salut @Erik, l'ordre général des analyses serait donc (1) Trouver les paramètres d'optimisation optimaux avec validation croisée, (2) Recycler le modèle (avec les paramètres d'optimisation gagnés) sur l'ensemble des données de formation pour obtenir les paramètres du modèle, et (3 ) Voir l'estimation globale des performances de cette méthode en utilisant la validation croisée imbriquée? Ce qui me dérange, c'est que différents hyperparamètres peuvent être choisis dans le processus de nester CV, de sorte que le CV imbriqué n'examinerait pas spécifiquement les performances globales des paramètres hyperparamètre / modèle que nous avons gagnés ci-dessus?
Michelle
1
Je suis un peu en retard dans la conversation, mais je voudrais souligner que cette méthode est également appelée "imbriquée" ou "double validation croisée" et voici une belle explication de Tom Fearn et un exemple avec du code dans le scikit- apprendre la documentation
MD004