Choix de K dans la validation croisée du pli K

136

Je me sers de la quelques fois la validation croisée de d'évaluer la performance de certains algorithmes d'apprentissage, mais je l' ai toujours été perplexe quant à la façon dont je choisir la valeur de .KK

J'ai souvent vu et utilisé une valeur de , mais cela me semble totalement arbitraire et je viens maintenant d'utiliser par habitude au lieu de réfléchir. Il me semble que vous obtenez une meilleure granularité à mesure que vous améliorez la valeur de Idéalement, vous devriez donc donner à votre très grande valeur, mais il existe également un risque de partialité.K=1010KK

J'aimerais savoir sur quoi la valeur de devrait dépendre et comment je devrais réfléchir à cela lorsque j'évalue mon algorithme. Cela change-t-il quelque chose si j'utilise la version stratifiée de la validation croisée ou non?K

Charles Menguy
la source

Réponses:

69

Le choix de est quelque peu arbitraire. Voici comment je décide :k=10k

  • Tout d'abord, afin de réduire la variance du résultat du CV, vous pouvez et devez répéter / itérer le CV avec de nouvelles divisions aléatoires.
    Cela rend l'argument de élevé => plus de temps de calcul largement dépourvu de pertinence, car vous voulez quand même calculer de nombreux modèles. J'ai tendance à penser principalement au nombre total de modèles calculés (par analogie avec l'initialisation). Je peux donc choisir un CV de 100 x 10 ou de 200 x 5.k

  • @ogrisel a déjà expliqué que généralement grand signifie moins de biais (pessimiste). (Certaines exceptions sont connues en particulier pour , c'est-à-dire en laissant-un).kk=n

  • Si possible, j'utilise un qui est un diviseur de la taille de l'échantillon ou de la taille des groupes de l'échantillon à stratifier.k

  • Trop grand signifie que seul un faible nombre de combinaisons d'échantillons est possible, limitant ainsi le nombre d'itérations différentes.k

    • Pour laisser une sortie: différentes combinaisons modèle / échantillon de test sont possibles. Les itérations n'ont aucun sens.(n1)=n=k
    • Par exemple, et : différentes combinaisons modèle / échantillon de test existent. Vous pouvez envisager de passer par toutes les combinaisons possibles ici, car 19 itérations de CV à pli ou un total de 190 modèles ne représentent pas grand chose.n=20k=10(n=202)=190=19kk
  • Ces pensées ont plus de poids avec des échantillons de petite taille. Avec plus d'échantillons disponibles, importe peu. Le nombre possible de combinaisons devient rapidement assez important pour que (par exemple) 100 itérations de 10 fois le CV ne courent pas un risque important d'être des doublons. En outre, plus d'échantillons d'apprentissage signifie généralement que vous vous trouvez dans une partie plus plate de la courbe d'apprentissage, de sorte que la différence entre les modèles de substitution et le modèle "réel" formé sur tous les échantillons devient négligeable.kn

cbéléites
la source
6
(+1) pour l’élaboration, mais (-1) pour les comptes de répétition du CV. Il est vrai que le risque de créer des duplicats exacts (en examinant les identifiants des observations) est faible (avec suffisamment de données, etc.), mais le risque de créer des doublons structure / structure de données est très élevé. Je ne répéterais pas un CV plus de 10 fois, peu importe ce que k est ... juste pour éviter une sous-estimation de la variance.
steffen
3
@steffen, n'est-ce pas ce qu'ogrisel a déjà souligné: les modèles (de substitution) ne sont pas vraiment indépendants? Je suis tout à fait d'accord que c'est le cas. En fait, j'essaie de prendre cela en compte en interprétant les résultats en termes de stabilité des modèles (de substitution) par rapport à. échanger "quelques" échantillons (que je ne voulais pas développer ici - mais voir par exemple stats.stackexchange.com/a/26548/4598 ). Et je ne pas calculer l' erreur standard , mais plutôt faire rapport , par exemple médiane et à percentile des erreurs observées au cours des itérations. Je vais poser une question distincte à ce sujet. 5th95th
cbeleites
2
Je vois. Je conviens que l'approche est valable pour estimer la stabilité du substitut. Je pensais au test statistique de suivi permettant de déterminer si un modèle surperformait un autre. Répéter trop souvent une cv augmente le risque d'erreur alpha de manière imprévisible. Donc, je confondais la validation interne avec la validation externe (comme l'a dit dikran ici ).
steffen
2
@cbeleites: Je suis d'accord avec vous. La variance due à la taille limitée de l'échantillon domine généralement l'incertitude du modèle.
jpcgandre
2
@jpcgandre: au moins pour les erreurs de classification telles que la sensibilité, la spécificité, etc., l'incertitude liée au nombre total de cas testés peut être calculée. S'il est vrai que cela ne représente qu'une partie de la variance totale, du moins dans les situations que je rencontre dans mon travail, cette incertitude est souvent si grande que même une estimation approximative est suffisante pour indiquer clairement que les conclusions sont sévèrement limitées. Et cette limitation reste, elle ne disparaîtra pas en utilisant 50x8 fois ou 80x5 fois au lieu d'une validation croisée 40x10 fois.
cbeleites
37

Plus grand K signifie moins de parti pris pour surestimer l'erreur réelle attendue (car les plis de formation seront plus proches de l'ensemble de données total), mais plus grande variance et plus longue durée d'exécution (plus vous vous rapprocherez du cas limite: CV sans omission).

Si la pente de la courbe d'apprentissage est suffisamment plate à training_size = 90% du jeu de données total, le biais peut être ignoré et K = 10 est raisonnable.

De plus, plus K vous donne plus d’échantillons pour estimer un intervalle de confiance plus précis (en utilisant l’erreur-type paramétrique supposant une normalité de la distribution des erreurs du test de CV ou un IC bootstrap non paramétrique qui ne fait que fonder l’hypothèse qui n’est pas vraiment vraie CV ne sont pas indépendants les uns des autres).

Edit: sous-estimer => surestimer la vraie erreur attendue

Edit: la partie de cette réponse concernant les variances plus élevées pour K ou LOOCV est probablement fausse (pas toujours vraie). Plus de détails avec les simulations dans cette réponse: Biais et variance dans la validation croisée non-un-out vs K-fold (merci à Xavier Bourret Sicotte pour ce travail).

ogrisel
la source
1
pouvez-vous expliquer un peu plus la variance plus élevée avec grand ? En première approximation, j'aurais dit que la variance totale du résultat CV (= une sorte d'erreur calculée à partir de tous les échantillons testés par l'un des modèles de substitution) = variance due au test de échantillons uniquement + variance due aux différences entre les modèles (instabilité). Qu'est-ce que je rate? knknk
cbeleites
6
Par variance, je veux dire variance de l’erreur estimée de test estimée obtenue en prenant la médiane ou la moyenne des erreurs de pli du CV par rapport à la "vraie distribution", et non par plis du CV. Lorsque k est grand, vous êtes plus proche de LOO-CV, ce qui est très dépendant du jeu d’entraînement que vous avez sous la main: si le nombre d’échantillons est petit, il peut ne pas être aussi représentatif de la distribution réelle d’où la variance. Lorsque k est grand, CV k-fold peut simuler de tels échantillons durs arbitraires de l'ensemble d'apprentissage.
ogrisel
8
En complément: Kohavi étudie le compromis biais-variance-validation dans la validation au chapitre 3 de sa thèse . Je le recommande fortement.
steffen
3
+1, btw "plus grand K signifie plus grande variance", si je comprends bien, avec grand , tous les ensembles d’entraînement auront en commun de grandes données, de sorte que les modèles formés seront quelque peu corrélés, ce qui entraînera des erreurs de test corrélées entre , donc la moyenne de l'erreur de test aura une variance plus élevée, non? KKKK
avocat
Oui, je pense que c'est une intuition correcte.
ogrisel
0

Je ne sais pas comment cela Kaffecte la précision et la généralisation, et cela dépend peut-être de l'algorithme d'apprentissage, mais cela affecte certainement la complexité de calcul presque linéairement (asymptotiquement, linéairement) pour les algorithmes d'apprentissage avec une complexité algorithmique linéaire dans le nombre d'instances d'apprentissage. Le temps de calcul nécessaire à la formation augmente K-1si le temps de formation est linéaire dans le nombre d'instances de formation. Donc, pour les petits ensembles de formation, j’examinerai les aspects de précision et de généralisation, en particulier étant donné que nous devons tirer le meilleur parti d’un nombre limité d’instances de formation.

Cependant, pour les grands ensembles d’entraînement et les algorithmes d’apprentissage à forte croissance de complexité informatique asymptotique du nombre d’instances d’entraînement (au moins linéaire), je sélectionne simplement K=2qu’il n’ya pas d’augmentation du temps de calcul d’un algorithme d’entraînement à complexité asymptotique linéaire dans le nombre. d'instances de formation.

Serge Rogatch
la source
-6

Solution:

K = N/N*0.30
  • N = taille de l'ensemble de données
  • K = pli

Commentaire: Nous pouvons également choisir 20% au lieu de 30%, selon la taille que vous souhaitez choisir comme ensemble de test.

Exemple:

Si taille du jeu de données: N = 1500; K = 1500/1500 * 0,30 = 3,33; On peut choisir K comme 3 ou 4

Remarque:

Une valeur K élevée en omettant une validation croisée entraînerait un sur-ajustement. Une valeur K faible en omettant une validation croisée entraînerait un sous-ajustement.

L’approche pourrait être naïve, mais serait toujours préférable que de choisir k = 10 pour un ensemble de données de différentes tailles.

Subhash Rajagopal
la source
4
(-1)vous suggérez donc de toujours utiliser k = 3 ou 4, quelle que soit la taille de l'échantillon. IMHO n'est pas très différent de l'utilisation de k = 10, quelle que soit la taille de l'échantillon. NN0.3=10.33.33=const.
cbeleites
K = N / N * 0,3 = 10/3 qui est une constante. Il n’est donc pas logique d’utiliser cette valeur pour chaque condition.
Kamal Thapa