Eu tenho usado o 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 .
Eu sempre vi e usei um valor de , mas isso parece totalmente arbitrário para mim, e agora uso apenas 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.K
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?
machine-learning
classification
cross-validation
Charles Menguy
fonte
fonte
Respostas:
A escolha de é um tanto arbitrária. Aqui está como eu decido k :k=10 k
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.k
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.
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).k k=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
fonte
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).
fonte
Não sei como
K
afeta 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 osK-1
tempos 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=2
para 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.fonte
Solução:
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.
fonte