Formation avec l'ensemble de données complet après validation croisée?

140

Est-ce toujours une bonne idée de s'entraîner avec l'ensemble de données complet après validation croisée ? En d'autres termes, est-il possible de s'entraîner avec tous les échantillons de mon jeu de données sans pouvoir vérifier si cet ajustement est trop important ?


Quelques informations sur le problème:

Disons que j'ai une famille de modèles paramétrés par . Dites aussi que j'ai un ensemble de points de données et que je sélectionne le modèle avec une validation croisée du pli k pour choisir le modèle qui généralise le mieux les données. NαN

Pour la sélection de modèle, je peux effectuer une recherche (par exemple, une recherche dans une grille) sur , par exemple en exécutant une validation croisée par k-fold pour chaque candidat. Dans chacun des plis de la validation croisée, je me retrouve avec le modèle appris . βαα βα

Le point de validation croisée est que, pour chacun de ces replis, je peux vérifier si le modèle appris a surajusté, en le testant sur des "données invisibles". En fonction des résultats, je pouvais choisir le modèle appris pour les paramètres généralisés lors de la validation croisée dans la recherche par grille.α meilleurβbestαbest

Maintenant, supposons qu'après la sélection du modèle , j'aimerais utiliser tous les points de mon jeu de données et, espérons-le, apprendre un meilleur modèle. Pour cela, je pourrais utiliser les paramètres correspondant au modèle que j'ai choisi lors de la sélection du modèle, puis après une formation sur l'ensemble de données complet, je voudrais obtenir un nouveau modèle appris . Le problème est que, si j'utilise tous les points de mon jeu de données pour la formation, je ne peux pas vérifier si ce nouveau modèle appris surafinit sur des données invisibles. Quelle est la bonne façon de réfléchir à ce problème?alpha b e s t β f u l l β f u l lNαbestβfull βfull

Amelio Vazquez-Reina
la source
2
Presque une copie exacte: stats.stackexchange.com/questions/52274 avec beaucoup de réponses intéressantes. Peut-être que ces discussions devraient être fusionnées mais je ne sais pas dans quelle direction. Les deux ont accepté des réponses très bonnes.
amibe

Réponses:

111

La façon de penser à la validation croisée consiste à estimer la performance obtenue à l'aide d'une méthode de construction d'un modèle, plutôt que d'estimer la performance d'un modèle.

Si vous utilisez la validation croisée pour estimer les hyperparamètres d'un modèle (les s), puis que vous utilisez ces hyper-paramètres pour ajuster un modèle à l'ensemble du jeu de données, c'est très bien, à condition que vous reconnaissiez que l'estimation de la validation croisée de la performance est susceptible d'être (éventuellement substantiellement) optimiste. Cela s'explique par le fait qu'une partie du modèle (les hyper-paramètres) a été sélectionnée pour minimiser les performances de la validation croisée. Par conséquent, si la statistique de validation croisée présente une variance non nulle (et ce sera le cas), il existe un risque de surajustement le critère de sélection du modèle.α

Si vous souhaitez choisir les hyper-paramètres et estimer les performances du modèle résultant, vous devez effectuer une validation croisée imbriquée, la validation croisée externe servant à évaluer les performances du modèle et, dans chaque repli, une validation croisée. la validation est utilisée pour déterminer les hyper-paramètres séparément dans chaque pli. Vous construisez le modèle final en utilisant la validation croisée sur l'ensemble du jeu pour choisir les hyper-paramètres, puis vous construisez le classificateur sur l'ensemble du jeu de données en utilisant les hyper-paramètres optimisés.

Ceci est bien sûr coûteux en calcul, mais en vaut la peine car le biais introduit par une estimation de performance inappropriée peut être important. Voir mon papier

GC Cawley et NLC Talbot, sur-adaptation dans la sélection du modèle et biais de sélection subséquent dans l'évaluation de la performance, Journal of Machine Learning Research, 2010. Research, vol. 11, pp. 2079-2107, juillet 2010. ( www , pdf )

Cependant, il est toujours possible d'avoir un sur-ajustement dans la sélection du modèle (la validation croisée imbriquée vous permet simplement de le tester). Une méthode que j’ai trouvée utile consiste à ajouter un terme de régularisation à l’erreur de validation croisée qui pénalise les valeurs d’hyper-paramètres susceptibles de générer des modèles trop complexes, voir

GC Cawley et NLC Talbot, Prévention du sur-ajustement dans la sélection du modèle via la régularisation bayésienne des hyper-paramètres, Journal of Machine Learning Research, volume 8, pages 841 à 861, avril 2007. ( www , pdf )

Donc, les réponses à votre question sont (i) oui, vous devez utiliser l'ensemble de données complet pour produire votre modèle final. Plus vous utilisez de données, plus vous avez de chances de généraliser, mais ii) veillez à obtenir une estimation de performance impartiale via une validation croisée imbriquée et potentiellement envisager de pénaliser la statistique de validation croisée pour éviter davantage le sur-ajustement dans la sélection du modèle.

Dikran Marsupial
la source
3
+1: répond à la question: "Si vous utilisez la validation croisée pour estimer les hyperparamètres d'un modèle (les αs), puis que vous utilisez ces hyper-paramètres pour ajuster un modèle à l'ensemble du jeu de données, c'est très bien ..."
Neil G
4
@soufanom, non, le recours à des "expériences initiales" pour faire des choix concernant le modèle est susceptible d'entraîner une superposition et introduit presque certainement un biais optimiste dans l'analyse de la performance. La validation croisée utilisée pour l'analyse des performances doit répéter CHAQUE étape utilisée pour ajuster le modèle indépendamment dans chaque repli. Les expériences de mon article montrent que les modèles de noyau peuvent être très sensibles à ce type de biais, il est donc essentiel de procéder à la sélection du modèle et à l’évaluation des performances avec toute la rigueur possible.
Dikran Marsupial
3
Pour les méthodes de noyau, telles que le SVM, il est souvent possible d'effectuer une validation croisée «un processus» à un coût informatique quasi nul (voir les documents répertoriés dans ma réponse). J'utilise cette validation croisée "virtuelle", à séparation instantanée, pour l'optimisation des hyper-paramètres, imbriquée dans la validation croisée à plis multiples pour l'évaluation des performances. Le coût est alors assez raisonnable. À mon avis, il n’est pas acceptable d’utiliser une procédure où l’évaluation des performances est biaisée de quelque manière que ce soit par le réglage des hyper-paramètres. Il en va de la dépense informatique nécessaire pour obtenir une estimation fiable.
Dikran Marsupial
2
@DikranMarsupial. Je ne comprends pas tout à fait le troisième paragraphe de votre réponse. Si je fais une validation croisée imbriquée, j'obtiendrai un ensemble d'hyperparamètres différent pour chaque pli du CV externe (c'est-à-dire que j'obtiens un jeu d'hyperparamètres en exécutant le CV interne sur une grille de paramètres). Comment puis-je choisir le meilleur jeu d'hyperparamètres?
Amelio Vazquez-Reina
1
La validation croisée est essentiellement un moyen d'estimer la performance d'une méthode d'adaptation d'un modèle, plutôt que de la méthode elle-même. Ainsi, après avoir effectué une validation croisée imbriquée pour obtenir une estimation des performances, reconstruisez simplement le modèle final en utilisant l'intégralité du jeu de données, en utilisant la procédure que vous avez validée par une validation croisée (qui inclut la sélection des hyper-paramètres).
Dikran Marsupial
23

Pour ajouter à la réponse de @ mark999, le caretpaquet de Max Kuhn (Classification and Regression Training) est la source la plus complète en R pour la sélection de modèle basée sur la validation croisée par bootstrap ou le CV à plis multiples ainsi que sur d’autres schémas.

Ne pas négliger la grandeur du rmspaquet, mais caretvous permet d’adapter à peu près toutes les méthodes d’apprentissage disponibles dans R, alors que vous validaten’utilisez que des rmsméthodes (je pense).

Le caretprogiciel est une infrastructure unique permettant de pré-traiter les données, d’ajuster et d’évaluer tout modèle courant. Il est donc simple à utiliser pour toutes les méthodes et fournit une évaluation graphique de nombreuses mesures de performance bien) sur votre grille et importance variable.

Voir les vignettes de paquet pour commencer (son utilisation est très simple)
Prétraitement des données
Sélection de variables avec caret Création de
modèles avec caret
Variable Importance

Vous pouvez également consulter le site Web de caret pour plus d'informations sur le package et des exemples de mise en œuvre spécifiques:
Site Web officiel de caret

Momo
la source
Merci. Savez-vous si, après la sélection du modèle (ce qui est fait par appel train), il existe un moyen dans caret de s'entraîner avec l'ensemble de données complet?
Amelio Vazquez-Reina
Vous n'êtes pas sûr de savoir si c'est une bonne idée ou pourquoi vous souhaitez cela, mais vous pouvez simplement adapter le modèle final renvoyé par train au jeu de données complet.
Momo
16

Je pense que Frank Harrell recommanderait la validation par bootstrap plutôt que la validation croisée. La validation par bootstrap vous permettrait de valider le modèle ajusté sur l'ensemble de données complet et est plus stable que la validation croisée. Vous pouvez le faire en utilisant R validatedans le rmspackage de Harrell .

Voir le livre "Stratégies de modélisation de régression" par Harrell et / ou "Une introduction au bootstrap" d'Efron et Tibshirani pour plus d'informations.

mark999
la source
9
Pour écarter un mythe sur le "mauvais CV", il s'agit d'un problème de terminologie - la "validation croisée" de Harrell signifie un CV à plis multiples et la "validation par bootstrap" signifie un rééchantillonnage du CV. Évidemment, je conviens que cette deuxième version est plus stable et globalement plus agréable, mais il s’agit également d’un type de validation croisée.
1
mark999 ou @mbq, pourriez-vous nous expliquer comment bootstrap permettrait de valider un modèle adapté à l'ensemble de données?
Amelio Vazquez-Reina
1
@ user27915816 Eh bien, en principe, non; L'idée de la validation croisée est de vérifier si une méthode d'entraînement donnée produit de bons modèles sur des ensembles très similaires au dernier, et, dans l'affirmative, généralisez cette observation au maximum avec une hypothèse silencieuse selon laquelle rien d'étrange ne se produira. et la méthode de CV que vous avez utilisée n’est pas biaisée. Ceci est bien sûr presque toujours suffisant, mais vous ne pouvez jamais être sûr que le modèle construit sur toutes les données dont vous disposez n’est pas suréquipé.
14

Je pense que vous avez un tas de questions différentes ici:

Le problème est que, si j'utilise tous les points de mon jeu de données pour m'entraîner, je ne peux pas vérifier si ce nouveau modèle appris excède complètement!

Le fait est que vous pouvez utiliser (une) étape de validation pour une seule chose: soit pour l'optimisation des paramètres, (x) ou pour estimer les performances de généralisation.

Ainsi, si vous effectuez l'optimisation des paramètres par validation croisée (ou tout autre type de détermination de paramètre piloté par les données), vous avez besoin d'échantillons de test indépendants de ceux d'apprentissage et d'optimisation. Dikran appelle cela la validation croisée imbriquée, un autre nom est la validation croisée double. Ou bien sûr, un ensemble de test indépendant.

Alors voici la question pour ce post: Est-ce une bonne idée de s'entraîner avec l'ensemble de données complet après la validation croisée à pli croisé? Ou est-il préférable de s'en tenir à l'un des modèles appris dans l'un des groupes de validation croisée pour αbest?

L’utilisation d’un des modèles de validation croisée est généralement pire que de s’entraîner sur l’ensemble complet (du moins si votre courbe d’apprentissage = f (nsamples) augmente toujours. Dans la pratique, c’est le cas: sinon, vous auriez probablement à part un ensemble de test indépendant.)

Si vous observez une grande variation entre les modèles de validation croisée (avec les mêmes paramètres), vos modèles sont instables. Dans ce cas, l'agrégation des modèles peut s'avérer plus efficace que l'utilisation d' un modèle formé sur l'ensemble des données.

Mise à jour: Cette agrégation est l’idée qui sous-tend l’ ensachage appliqué au ré-échantillonnage sans remplacement (validation croisée) au lieu de ré-échantillonnage avec remplacement (validation bootstrap / out-of-bootstrap).

Voici un article où nous avons utilisé cette technique:
Beleites, C. & Salzer, R .: Évaluer et améliorer la stabilité des modèles chimiométriques dans des situations de taille réduite, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI: 10.1007 / s00216-007-1818-6

Plus important peut-être, comment puis-je m'entraîner avec tous les points de mon jeu de données tout en luttant contre la suralimentation?

En étant très conservateur avec les degrés de liberté autorisés pour le "meilleur" modèle, c'est-à-dire en prenant en compte l'incertitude (aléatoire) sur les résultats de la validation croisée d'optimisation. Si les df sont réellement appropriés pour les modèles de validation croisée, il y a de bonnes chances qu'ils ne soient pas trop nombreux pour le plus grand ensemble de formations. Le piège est que l'optimisation des paramètres est en fait plusieurs tests. Vous devez vous prémunir contre de bons jeux de paramètres accidentels.

cbéléites
la source
...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...Pouvez-vous expliquer un peu plus? Par exemple, si j'exécute une régression logistique dans une configuration validée par recoupement de 10 k et que je termine avec 10 ensembles de coefficients, recommandez-vous d'agréger les estimations de coeff pour former un modèle final? Si oui, comment cela peut-il être fait, en prenant juste les moyens?
Zhubarb
@cbeleites pouvez-vous élaborer If the d.f. are actually appropriate for the cross validation models. Si j'ai bien compris, vous affirmez que les ensembles train / validation ne sont pas très volumineux par rapport à l'ensemble de données complet, n'est-ce pas?
jpcgandre
1
1k
1
Plus important encore: les modèles de substitution itérés de validation croisée partagent le même ensemble d'hyperparamètres. C'est-à-dire qu'ils sont équivalents dans tout ce que vous jugez important, à l'exception du choix arbitraire des cas de formation et de test. La sélection d'un "bon" modèle devrait donc en fait principalement choisir une bonne combinaison test / entraînement - ce qui est fondamentalement ce que nous ne souhaitons généralement pas : nous voulons un choix qui généralise bien et ne fonctionne donc pas uniquement pour les cas favorables. De ce point de vue, choisir un modèle de substitution à partir d'une validation croisée "normale" n'a aucun sens pour moi.
cbeleites
1
11k
6

Ce que vous faites n’est pas une validation croisée, mais plutôt une sorte d’optimisation stochastique.

L’idée de CV est de simuler une performance sur des données invisibles en effectuant plusieurs tours de construction du modèle sur un sous-ensemble d’objets et de tests sur les objets restants. Les résultats quelque peu moyennés de tous les tours sont l' approximation des performances d'un modèle entraîné sur l'ensemble .

Dans le cas de la sélection du modèle, vous devez effectuer un CV complet pour chaque jeu de paramètres et obtenir ainsi une approximation des performances pour le jeu complet pour chaque configuration, donc apparemment ce que vous souhaitiez.

Cependant, notez qu'il n'est pas du tout garanti que le modèle présentant la meilleure précision approximative sera le meilleur en fait. Vous pouvez également valider la procédure de sélection du modèle dans son ensemble pour vérifier qu'il existe une plage dans l'espace des paramètres pour laquelle les différences de la précision des modèles n'est pas significative.


la source
2
β
@AmV Si c'est le cas, d'accord - comme je l'ai écrit, CV teste déjà un scénario complet, vous ne pouvez pas en dire plus sans nouvelles données. Encore une fois, vous pouvez tout au plus faire un CV imbriqué pour voir si la sélection du modèle elle-même n’impose pas de surajustement (si la sélection donne de très bonnes améliorations ou si les données sont bruyantes, le risque est assez grand).