Escolha de K na validação cruzada K-fold

136

Eu tenho usado o K validação cruzada fold algumas vezes agora para avaliar o desempenho de alguns algoritmos de aprendizagem, mas eu sempre fui intrigado a respeito de como eu deveria escolher o valor de K .

Eu sempre vi e usei um valor de K=10 , mas isso parece totalmente arbitrário para mim, e agora uso apenas 10 por hábito, em vez de pensar sobre isso. Para mim, parece que você está obtendo uma granularidade melhor à medida que melhora o valor de ; portanto, idealmente, você deve fazer seu muito grande, mas também há um risco de ser tendencioso.KKK

Gostaria de saber do que o valor de deve depender e como devo pensar sobre isso ao avaliar meu algoritmo. Isso muda alguma coisa se eu usar a versão estratificada da validação cruzada ou não?K

Charles Menguy
fonte

Respostas:

69

A escolha de é um tanto arbitrária. Aqui está como eu decido k :k=10k

  • Em primeiro lugar, para diminuir a variação do resultado do CV, você pode e deve repetir / iterar o CV com novas divisões aleatórias.
    Isso torna irrelevante o argumento de alto => mais tempo de computação, pois você deseja calcular muitos modelos. Costumo pensar principalmente no número total de modelos calculados (em analogia ao bootstrapping). Portanto, posso optar por 100 x 10 vezes o CV ou 200 x 5 vezes o CV.k

  • O @ogrisel já explicou que geralmente grandes significam menos viés (pessimista). (Algumas exceções são conhecidas principalmente por k = n , ou seja, deixe um fora).kk=n

  • Se possível, eu uso um que é um divisor do tamanho da amostra ou o tamanho dos grupos da amostra que devem ser estratificados.k

  • muito grande significa que apenas um número baixo de combinações de amostras é possível, limitando o número de iterações diferentes.k

    • Para deixar um de fora: combinações diferentes de modelo / amostra de teste são possíveis. As iterações não fazem sentido.(n1)=n=k
    • Por exemplo, e k = 10 : ( n = 20n=20k=10(n=202)=190=19kk
  • kn

cbeleites
fonte
6
(+1) para a elaboração, mas (-1) para a contagem de repetições do CV. É verdade que o risco de criar duplicatas exatas (observando os IDs das observações) é pequeno (dados suficientes, etc.), mas o risco de criar duplicatas de estrutura de dados / padrão é muito alto. Eu não repetiria um currículo mais de 10 vezes, independentemente de k, apenas para evitar subestimar a variação.
steffen
3
5th95th
2
Eu vejo. Concordo que a abordagem é válida para estimar a estabilidade do substituto. O que eu tinha em mente era o teste estatístico de acompanhamento para decidir se um modelo supera o outro. Repetir um modo cv com muita frequência aumenta a chance de um erro alfa imprevisível. Então, eu estava confundindo o interno com a validação externa (como dikran colocou aqui ).
steffen
2
@ cbeleites: Eu concordo com você. A variação devido ao tamanho limitado da amostra geralmente domina a incerteza do modelo.
Jspcgandre
2
@jpcgandre: Pelo menos para erros de classificação como sensibilidade, especificidade etc., pode-se calcular a incerteza devido ao número total de casos testados. Embora seja verdade que isso seja apenas parte da variação total, pelo menos nas situações que encontro em meu trabalho, essa incerteza é muitas vezes tão grande que até mesmo uma estimativa aproximada é suficiente para deixar claro que as conclusões são severamente limitadas. E essa limitação permanece, ela não desaparece usando 50x 8 vezes ou 80x 5 vezes em vez da validação cruzada 40x 10 vezes.
Cbeleites
37

K maior significa menos viés para superestimar o verdadeiro erro esperado (como as dobras do treinamento estarão mais próximas do conjunto de dados total), mas maior variação e maior tempo de execução (à medida que você está se aproximando do caso limite: CV de exclusão única).

Se a inclinação da curva de aprendizado for plana o suficiente em training_size = 90% do conjunto total de dados, o viés pode ser ignorado e K = 10 é razoável.

K também mais alto fornece mais amostras para estimar um intervalo de confiança mais preciso em sua estimativa (usando erro padrão paramétrico assumindo a normalidade da distribuição dos erros de teste CV ou IC de autoinicialização não paramétrico que apenas faz a suposição iid que na verdade não é muito verdadeira porque as dobras CV não são independentes uma da outra).

Edit: subestimando => superestimando o verdadeiro erro esperado

Editar: a parte desta resposta sobre variações mais altas para K ou LOOCV grande provavelmente está errada (nem sempre é verdade). Mais detalhes com simulações nesta resposta: Viés e variância na validação cruzada de deixar um para fora e dobrar em K (agradece a Xavier Bourret Sicotte por este trabalho).

ogrisel
fonte
1
knknk
6
Por variação, quero dizer a variação do erro de teste esperado estimado obtido pela mediana ou média dos erros de dobra CV na "distribuição verdadeira", e não nas dobras CV. Quando k é grande, você está mais perto do LOO-CV, que depende muito do conjunto de treinamento específico que você tem em mãos: se o número de amostras for pequeno, ele pode não ser tão representativo da verdadeira distribuição, portanto, a variação. Quando k é grande, o CV dobrável em k pode simular amostras rígidas arbitrárias do conjunto de treinamento.
Ogrisel 4/12
8
Como um complemento: Kohavi estuda a troca de viés e variância na validação no capítulo 3 de sua tese de doutorado . Eu recomendo.
steffen
3
KKKK
Sim, acho que é uma intuição correta.
ogrisel
0

Não sei como Kafeta a precisão e a generalização, e isso pode depender do algoritmo de aprendizado, mas definitivamente afeta a complexidade computacional quase linearmente (assintoticamente, linearmente) para algoritmos de treinamento com complexidade algorítmica linear no número de instâncias de treinamento. O tempo computacional para treinamento aumenta os K-1tempos se o tempo de treinamento for linear no número de instâncias de treinamento. Portanto, para pequenos conjuntos de treinamento, eu consideraria os aspectos de precisão e generalização, especialmente considerando que precisamos tirar o máximo proveito de um número limitado de instâncias de treinamento.

No entanto, para grandes conjuntos de treinamento e algoritmos de aprendizado com alto crescimento de complexidade comutacional assintótica no número de instâncias de treinamento (pelo menos linear), apenas seleciono K=2para que não haja aumento no tempo computacional de um algoritmo de treinamento com complexidade assintótica linear no número de instâncias de treinamento.

Serge Rogatch
fonte
-6

Solução:

K = N/N*0.30
  • N = tamanho do conjunto de dados
  • K = Dobra

Comentário: também podemos escolher 20% em vez de 30%, dependendo do tamanho que você deseja escolher como seu conjunto de testes.

Exemplo:

Se o tamanho do conjunto de dados: N = 1500; K = 1500/1500 * 0,30 = 3,33; Podemos escolher o valor K como 3 ou 4

Nota:

Um valor K grande em deixar uma validação cruzada fora resultaria em excesso de ajuste. Um valor K pequeno em deixar uma validação cruzada fora resultaria em um ajuste insuficiente.

A abordagem pode ser ingênua, mas ainda melhor do que escolher k = 10 para conjuntos de dados de tamanhos diferentes.

Subhash Rajagopal
fonte
4
NN0,3=10,33,33=const.
K = N / N * 0,3 = 10/3, que é uma constante. Portanto, não é lógico usar esse valor para todas as condições.
27517 Kamal Thapa