Validation croisée et réglage des paramètres

17

Quelqu'un peut-il me dire exactement ce que donne une analyse de validation croisée? Est-ce juste la précision moyenne ou donne-t-il un modèle avec des paramètres ajustés?

Parce que, j'ai entendu quelque part que la validation croisée est utilisée pour le réglage des paramètres.

Sana Sudheer
la source

Réponses:

26

La validation croisée donne une mesure de la précision hors échantillon en faisant la moyenne sur plusieurs partitions aléatoires des données en échantillons d'apprentissage et de test. Il est souvent utilisé pour le réglage des paramètres en effectuant une validation croisée pour plusieurs (ou plusieurs) valeurs possibles d'un paramètre et en choisissant la valeur du paramètre qui donne l'erreur moyenne de validation croisée la plus faible.

Ainsi, le processus lui-même ne vous donne pas d'estimation de modèle ou de paramètre, mais vous pouvez l'utiliser pour aider à choisir entre les alternatives.

Jonathan Christensen
la source
12

Pour ajouter à la réponse de Jonathan.

Cependant, si vous utilisez la validation croisée pour le réglage des paramètres, les échantillons externes font en fait partie de votre modèle. Vous avez donc besoin d'un autre échantillon indépendant pour mesurer correctement les performances du modèle final.

Utilisée pour mesurer les performances du modèle, la validation croisée peut mesurer plus que la précision moyenne:
une deuxième chose que vous pouvez mesurer avec la validation croisée est la stabilité du modèle en ce qui concerne la modification des données de formation: la validation croisée crée de nombreux modèles de «substitution» qui sont formés avec ensembles d'entraînement légèrement différents. Si les modèles sont stables, tous ces modèles de substitution sont équivalents, si la formation est instable, les modèles de substitution varient beaucoup. Vous pouvez quantifier ce «varie beaucoup», par exemple en tant que variance des prédictions de différents modèles de substitution pour le même échantillon (en validation croisée itérée / répétée) ou par exemple en tant que variance des paramètres des modèles de substitution.

cbeleites soutient Monica
la source
3

Pour compléter les réponses précédentes, nous commencerons par le début:

Il existe peu de façons d'adapter vos modèles aux données d'entraînement, certaines sont évidentes, d'autres moins. Premièrement, et le plus important est le sur-ajustement des paramètres d'apprentissage (poids) aux données (paramètres d'ajustement de courbe en régression logistique, poids de réseau en réseau neuronal, etc.). Ensuite, vous modéliseriez le bruit dans les données - si vous surajustement, vous capturez non seulement la fonction de génération sous-jacente, mais aussi le caractère aléatoire en raison de la taille de l'échantillon et du fait que l'échantillon n'est pas une représentation parfaite de la population. Ce surajustement peut être dans une certaine mesure atténué en pénalisant certains attributs (en général la complexité) du modèle. Cela peut être fait en arrêtant la formation une fois que les performances sur l'échantillon de train ne s'améliorent plus de manière significative, en supprimant certains neurones d'un réseau de neurones (appelé abandon),https://ieeexplore.ieee.org/document/614177/ ) etc.). Cependant ces stratégies de régularisation sont elles-mêmes paramétrisées (quand arrêtez-vous?, Combien de neurones à retirer? Etc.). De plus, la plupart des modèles d'apprentissage automatique ont un certain nombre d'hyper-paramètres qui doivent être définis avant le début de la formation. Et ces hyper-paramètres sont réglés dans la phase de réglage des paramètres.

Cela nous amène au deuxième type de sur-ajustement, plus subtil: le sur-ajustement hyperparamétrique. La validation croisée peut être utilisée pour trouver les "meilleurs" hyper-paramètres, en entraînant à plusieurs reprises votre modèle à partir de zéro sur k-1 plis de l'échantillon et en testant sur le dernier pli.

Alors, comment cela se fait-il exactement? Selon la stratégie de recherche (donnée par tenshi), vous définissez des hyper-paramètres du modèle et entraînez votre modèle k fois, à chaque fois en utilisant un test de pli différent. Vous vous «souvenez» des performances moyennes du modèle sur tous les plis de test et répétez la procédure entière pour un autre ensemble d'hyper-paramètres. Ensuite, vous choisissez un ensemble d'hyper-paramètres qui correspond aux meilleures performances lors de la validation croisée. Comme vous pouvez le voir, le coût de calcul de cette procédure dépend fortement du nombre d'ensembles d'hyper-paramètres à prendre en compte. C'est pourquoi certaines stratégies pour choisir cet ensemble ont été développées (ici je vais généraliser ce que tenshi a dit):

  1. Recherche de grille: pour chaque hyper-paramètre, vous énumérez un nombre fini de valeurs possibles. Ensuite, la procédure est effectuée de manière exhaustive pour toutes les combinaisons d'hyper-paramètres énumérés. Évidemment, si vous avez des hyper-paramètres continus, vous ne pouvez pas tous les essayer.
  2. Recherche de grille aléatoire: similaire à la recherche de grille normale, mais cette fois, vous n'essayez pas toutes les combinaisons de manière exhaustive, mais échantillonnez plutôt un nombre fixe de fois pour toutes les valeurs possibles. Notez qu'ici, il est possible non seulement d'énumérer les valeurs possibles pour un hyper-paramètre, mais vous pouvez également fournir une distribution à partir de laquelle échantillonner.
  3. BayesianSearch - la combinaison de valeurs d'hyper-paramètre est choisie pour maximiser l'amélioration attendue du score. Pour en savoir plus: http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf . Et une bibliothèque qui ne traite que de cela: https://github.com/hyperopt/hyperopt . Comme il n'est pas aussi facile de combiner avec sklearn que ce que tenshi a recommandé, utilisez-le uniquement si vous ne travaillez pas avec sklearn.
  4. Autres moyens de recherche guidée dans l'espace hyperparamétrique. D'après mon expérience, ils sont rarement utilisés, donc je ne les couvrirai pas ici.

Cependant, ce n'est pas la fin de l'histoire, car les hyperparamètres peuvent (et vont) également surcharger les données. Dans la plupart des cas, vous pouvez simplement vivre avec, mais si vous souhaitez maximiser la puissance de généralisation de votre modèle, vous pouvez également essayer de régulariser les hyper-paramètres. Tout d'abord, vous pouvez mieux évaluer les performances des données hors échantillon en utilisant la recherche de grille imbriquée (détails: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html , discussion: validation croisée imbriquée pour la sélection du modèle), ou utilisez simplement un ensemble de validation qui n'est pas utilisé pour le réglage d'hyper-paramètre. Quant à la régularisation dans l'espace hyperparamétrique, c'est une question plus ou moins ouverte. Certaines idées consistent à choisir non pas le meilleur ensemble de valeurs d'hyper-paramètre, mais quelque chose de plus proche du milieu; le raisonnement est le suivant: les meilleures valeurs d'hyper-paramètre surestiment très probablement les données simplement parce qu'elles fonctionnent mieux que les autres données du train, les mauvais paramètres sont tout simplement mauvais, mais ceux du milieu peuvent éventuellement obtenir une meilleure généralisation que les meilleurs . Andrew Ng a écrit un article à ce sujet. Une autre option consiste à limiter votre espace de recherche (vous régularisez en introduisant ici un biais fort - les valeurs en dehors de l'espace de recherche ne seront jamais sélectionnées de manière évidente).

Remarque secondaire: l'utilisation de la précision comme métrique de performance est dans la plupart des cas une très mauvaise idée, examinez les scores f1 et f_beta - ces métriques refléteront dans la plupart des cas mieux ce que vous essayez réellement d'optimiser dans les problèmes de classification binaire.

Pour résumer: la validation croisée en elle-même est utilisée pour évaluer les performances du modèle sur des données hors échantillon, mais peut également être utilisée pour régler les hyper-paramètres en conjonction avec l'une des stratégies de recherche dans l'espace des hyper-paramètres. Trouver de bons hyper-paramètres permet d'éviter ou du moins de réduire le sur-ajustement, mais gardez à l'esprit que les hyper-paramètres peuvent également surcharger les données.

Wojtek
la source
2

Si vous êtes issu du milieu de l'apprentissage de Scikit, cette réponse pourrait être utile.

La validation croisée k-fold est utilisée pour diviser les données en kpartitions, l'estimateur est ensuite formé sur les k-1partitions puis testé sur la kthpartition. Comme ça, choisir quelle partition doit être la kthpartition, il y a des kpossibilités. Par conséquent, vous obtenez les krésultats de toutes les kpossibilités de votre estimateur.

ce sont des méthodes de calcul coûteuses, mais si vous allez essayer différents estimateurs, vous pouvez essayer ces trois pour effectuer le réglage d'hyperparamètre avec CV:

je. GridSearchCV - une liste exhaustive de tous les P et C possibles pour les hyperparamètres pour tous les estimateurs. En fin de compte, donne les meilleurs hyperparamètres en utilisant la moyenne de la moyenne de CV de cet estimateur particulier.

ii. RandomizedSearchCV - Ne fait pas tous les P et C des hyperparamètres, mais sur une approche randomisée, donne l'estimateur précis le plus proche possible économisant plus sur le calcul.

iii. BayesSearchCV - Ne fait pas partie de scikit-learnmais fait l'optimisation bayésienne pour faire une recherche aléatoire et ajuster les résultats.

tl: dr : CV est juste utilisé pour éviter un biais élevé et une variance élevée pour votre estimateur en raison des données que vous transmettez. J'espère que cela a été utile.

tenshi
la source