Dans cette page Wikipédia dans la sous-section pour la validation croisée de pli en K, il est dit "Dans la validation croisée de pli en K, l'échantillon d'origine est divisé de manière aléatoire en k sous-échantillons de taille égale. Parmi les k sous-échantillons, un seul sous-échantillon est conservé comme données de validation pour tester le modèle et les k - 1 sous - échantillons restants sont utilisés comme données de formation ". Les données de test ne sont pas du tout dans l'image.
Alors que dans un livre que j'ai lu, l'auteur indique clairement
- Les données complètes sont divisées en trois ensembles: ensemble de formation, ensemble de test et ensemble de validation (ou sous-échantillons dans la langue Wikipedias).
- Des k sous-échantillons, un sous-échantillon est conservé comme données de validation, un autre sous-échantillon est conservé comme données de test et k-2 sous-échantillons sont utilisés comme données d'apprentissage.
Ce qui est vrai?
Réponses:
Ils sont tous les deux corrects dans leur propre contexte. Ils décrivent deux façons différentes de sélectionner un modèle dans des situations différentes.
En général, lorsque vous effectuez une sélection et un test de modèle, vos données sont divisées en trois parties: ensemble de formation, ensemble de validation et ensemble de test. Vous utilisez votre ensemble de formation pour entraîner différents modèles, estimer les performances de votre ensemble de validation, puis sélectionner le modèle avec des performances optimales et le tester sur votre ensemble de tests.
D'un autre côté, si vous utilisez la validation croisée K-fold pour estimer les performances d'un modèle, vos données sont ensuite divisées en K plis, vous parcourez les K plis et à chaque fois utilisez un pli comme test (ou validation) régler et utiliser les plis restants (K-1) comme ensemble d'entraînement. Ensuite, vous effectuez une moyenne sur tous les plis pour obtenir les performances de test estimées de votre modèle. C'est à cela que fait référence la page Wikipedia.
Mais gardez à l'esprit que cela sert à tester un modèle spécifique.Si vous avez plusieurs modèles candidats et que vous souhaitez également sélectionner un modèle, vous devez sélectionner un modèle uniquement avec votre ensemble d'entraînement pour éviter cette erreur de logique circulaire subtile.. Ainsi, vous divisez davantage vos (K-1) plis «données d'entraînement» en deux parties, une pour la formation et une pour la validation. Cela signifie que vous effectuez d'abord une `` validation croisée '' supplémentaire pour sélectionner le modèle optimal dans les plis (K-1), puis que vous testez ce modèle optimal sur votre pli de test. En d'autres termes, vous effectuez une validation croisée à deux niveaux, l'un est la validation croisée K-fold en général, et dans chaque boucle de validation croisée, il y a une validation croisée supplémentaire (K-1) pour sélection du modèle. Ensuite, vous avez ce que vous avez déclaré dans votre question: «Des k sous-échantillons, un sous-échantillon est conservé comme données de validation, un autre sous-échantillon est conservé comme données de test et k-2 sous-échantillons sont utilisés comme données d'apprentissage.
la source
Ici, je répète ce que j'ai rassemblé de la réponse de @Yuanning et des commentaires de @cbeleites sous forme de pseudocode. Cela peut être utile pour des gens comme moi.
Pour mesurer la performance d'un modèle déterminé, nous n'avons besoin que de kits de formation et de test:
Mais si nous devons faire une sélection de modèle, nous devons le faire:
la source
k_performance
destiné à être l'étiquette d'un pli spécifique parmi le nombre total dek_select
plis de performance? Je suppose que cela rejoint votre question sur "Comment sélectionner test_set". J'apprécierais également des commentaires spécifiques à ce sujet. J'ai vu cette validation croisée «imbriquée» pour la sélection de modèle à laquelle j'ai fait allusion, mais jamais décrite en détail.