Dans la validation croisée k-fold, le sous-échantillon de formation comprend-il un ensemble de tests?

9

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

  1. 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).
  2. 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?

ozi
la source
Note annexe: "validation" a différentes significations dans différents domaines. Certains auteurs l'utilisent pour indiquer une sorte de test qui est utilisé pour sélectionner les modèles (je suggérerais que l'ensemble de tests d'optimisation serait plus intuitif), tandis que dans d'autres domaines, la validation signifie démontrer que le modèle final est adapté à son objectif.
cbeleites mécontents de SX

Réponses:

11

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.

Yuanning
la source
1
La validation croisée à deux niveaux est également appelée validation croisée double ou imbriquée. Bien que le CV imbriqué et les stratégies de division en 3 ensembles soient similaires en ce qu'ils utilisent tous les deux un ensemble de test pour la sélection / optimisation et l'autre pour évaluer les performances du modèle optimisé, ils ne sont pas les mêmes: la validation croisée imbriquée k se construit k * k '(généralement = k - 1) * non. des modèles de substitution de combinaison d'hyperparamètres testés, la stratégie directe à 3 ensembles un seul pour chaque combinaison d'hyperparamètre.
cbeleites mécontents de SX
(La citation Wiki ne parle pas du tout de l'objectif de la validation qui peut être différent de la sélection.)
cbeleites mécontent de SX
pouvez-vous confirmer mes pseudocodes?
ozi
1

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:

function measure_performance(model, full_test_set, k_performance):
    subset_list <- divide full_test_set into k_performance subsets
    performances <- empty array
    for each sub_set in subset_list:
        test_set <- sub_set
        training_set <- the rest of the full_test_set
        model <- train model with training_set
        performance <- test model with test_set
        append performance to performances
    end for each
    return mean of the values in peformances
end function

Mais si nous devons faire une sélection de modèle, nous devons le faire:

function select_model(data, k_select, k_performance):
    subset_list <- divide data into k_select subsets
    performances <- empty array
    for each sub_set in subset_list:
        validation_set <- assume that this sub_set is validation set
        test_set <- one other random sub_set (Question: How to select test_set)
        training_set <- assume remaining as training set
        model <- get a model with the help of training_set and validation_set
        performance <- measure_performance(model,test_set, k_performance)
    end for each
    return model with the best performance (for this, performances will be scanned)
end function
ozi
la source
Est k_performancedestiné à être l'étiquette d'un pli spécifique parmi le nombre total de k_selectplis 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.
clarpaul
Dans le contexte de la validation croisée, le problème de la sélection de modèle basée uniquement sur les données de formation (même si elles sont validées de manière croisée au sein de ces données) est spécifiquement articulé ici: en.wikipedia.org/wiki/… . L'affirmation (basée sur plusieurs références) est que les estimations de performance croisées basées entièrement sur les données d'entraînement sont sujettes à de fortes variations (c'est-à-dire en ce qui concerne le choix des données d'entraînement), malgré la procédure de validation croisée.
clarpaul