Elección de K en validación cruzada K-fold

136

He estado usando el -fold validación cruzada varias veces para evaluar el rendimiento de algunos algoritmos de aprendizaje, pero siempre he estado intrigados por la forma en que debería elegir el valor de .KKK

A menudo he visto y usado un valor de , pero esto me parece totalmente arbitrario, y ahora solo uso por hábito en lugar de pensarlo. Para mí, parece que está obteniendo una mejor granularidad a medida que mejora el valor de , por lo que idealmente debería hacer que su muy grande, pero también existe el riesgo de ser sesgado.10 K KK=1010KK

Me gustaría saber de qué debería depender el valor de y cómo debería pensar en esto cuando evalúe mi algoritmo. ¿Cambia algo si uso la versión estratificada de la validación cruzada o no?K

Charles Menguy
fuente

Respuestas:

69

La elección de es algo arbitraria. Así es como decido :kk=10k

  • En primer lugar, para reducir la varianza del resultado de CV, puede y debe repetir / iterar el CV con nuevas divisiones aleatorias.
    Esto hace que el argumento de => más tiempo de cálculo sea irrelevante, ya que de todos modos desea calcular muchos modelos. Tiendo a pensar principalmente en el número total de modelos calculados (en analogía con el bootstrapping). Entonces puedo decidir por 100 x 10 veces CV o 200 x 5 veces CV.k

  • @ogrisel ya explicó que generalmente grande significa menos sesgo (pesimista). (Se conocen algunas excepciones particularmente para , es decir, dejar uno afuera).k = nkk=n

  • Si es posible, utilizo una que es un divisor del tamaño de la muestra, o el tamaño de los grupos de la muestra que deberían estratificarse.k

  • Demasiado grande significa que solo es posible un número bajo de combinaciones de muestra, lo que limita el número de iteraciones que son diferentes.k

    • Para Leave-One-Out: son posibles diferentes combinaciones de modelo / muestra de prueba. Las iteraciones no tienen ningún sentido.(n1)=n=k
    • Ej y : existen diferentes combinaciones de modelo de la muestra / prueba. Puede considerar pasar por todas las combinaciones posibles aquí, ya que 19 iteraciones de pliegue CV o un total de 190 modelos no es mucho.n=20k=10(n=202)=190=19kk
  • Estos pensamientos tienen más peso con muestras pequeñas. Con más muestras disponibles, no importa mucho. El número posible de combinaciones pronto se vuelve lo suficientemente grande como para que las (digamos) 100 iteraciones de CV 10 veces no corran un gran riesgo de ser duplicados. Además, más muestras de entrenamiento generalmente significa que se encuentra en una parte más plana de la curva de aprendizaje, por lo que la diferencia entre los modelos sustitutos y el modelo "real" entrenado en todas las muestras se vuelve insignificante.kn

Cbeleites
fuente
66
(+1) para la elaboración, pero (-1) para los recuentos de repetición del CV. Es cierto que el riesgo de crear duplicados exactos (mirando los identificadores de las observaciones) es pequeño (dados suficientes datos, etc.), pero el riesgo de crear duplicados de patrones / estructuras de datos es muy alto. No repetiría un CV más de 10 veces, sin importar qué k sea ... solo para evitar subestimar la varianza.
steffen
3
@steffen, ¿no es eso lo que ogrisel ya señaló: que los modelos (sustitutos) no son realmente independientes? Estoy completamente de acuerdo en que este es el caso. En realidad, trato de tener esto en cuenta interpretando los resultados en términos de estabilidad de los modelos (sustitutos) wrt. intercambiando "algunas" muestras (que no quería elaborar aquí, pero consulte, por ejemplo, stats.stackexchange.com/a/26548/4598 ). Y no calculo el error estándar, sino que informo, por ejemplo, la mediana y el a de los errores observados durante las iteraciones. Publicaré una pregunta por separado sobre eso. 5th95th
cbeleites
2
Veo. Estoy de acuerdo en que el enfoque es válido para estimar la estabilidad del sustituto. Lo que tenía en mente era la prueba estadística de seguimiento para decidir si un modelo supera a otro. Repetir un cv con demasiada frecuencia aumenta la posibilidad de un error alfa de forma impredecible. Entonces estaba confundiendo lo interno con la validación externa (como lo ha dicho Dikran aquí ).
steffen
2
@cbeleites: estoy de acuerdo contigo. La variación debido al tamaño limitado de la muestra generalmente domina sobre la incertidumbre del modelo.
jpcgandre
2
@jpcgandre: Al menos para errores de clasificación como sensibilidad, especificidad, etc., se puede calcular la incertidumbre debido al número total de casos probados. Si bien es cierto que esto es solo una parte de la variación total, al menos en las situaciones que encuentro en mi trabajo, esta incertidumbre a menudo es tan grande que incluso una estimación aproximada es suficiente para dejar en claro que las conclusiones son muy limitadas. Y esta limitación se mantiene, no desaparecerá utilizando 50x 8 veces o 80x 5 veces en lugar de 40x 10 veces la validación cruzada.
cbeleites
37

Una K más grande significa menos sesgo para sobreestimar el error esperado real (ya que los pliegues de entrenamiento estarán más cerca del conjunto de datos total) pero una mayor varianza y un mayor tiempo de ejecución (a medida que se acerca al límite: CV de dejar uno).

Si la pendiente de la curva de aprendizaje es suficientemente plana en training_size = 90% del conjunto de datos total, entonces se puede ignorar el sesgo y K = 10 es razonable.

Además, una K más alta le brinda más muestras para estimar un intervalo de confianza más preciso en su estimación (usando un error estándar paramétrico asumiendo la normalidad de la distribución de los errores de prueba de CV o un CI de arranque no paramétrico que simplemente hace la suposición de iid que en realidad no es muy cierto ya que los pliegues CV no son independientes entre sí).

Editar: subestimar => sobreestimar el verdadero error esperado

Editar: la parte de esta respuesta sobre variaciones más altas para K grande o LOOCV probablemente sea incorrecta (no siempre es cierto). Más detalles con simulaciones en esta respuesta: sesgo y varianza en la validación cruzada de dejar uno fuera frente a K-fold (gracias Xavier Bourret Sicotte por este trabajo).

ogrisel
fuente
1
¿Puedes explicar un poco más sobre la mayor varianza con grande ? Como primera aproximación, habría dicho que la varianza total del resultado CV (= algún tipo de error calculado a partir de todas las muestras analizadas por cualquiera de los modelos sustitutos) = varianza debida a la prueba de muestras solamente + varianza debido a diferencias entre Los modelos (inestabilidad). ¿Qué me estoy perdiendo? knknk
cbeleites
66
Por varianza me refiero a la varianza del error de prueba esperado estimado obtenido al tomar la mediana o la media de los errores de pliegue CV wrt la "distribución verdadera", no a través de pliegues CV. Cuando k es grande, está más cerca de LOO-CV, que depende mucho del conjunto de entrenamiento particular que tenga a mano: si el número de muestras es pequeño, no puede ser tan representativo de la distribución real, por lo tanto, de la varianza. Cuando k es grande, k-fold CV puede simular muestras duras arbitrarias del conjunto de entrenamiento.
Ogrisel
8
Como una adición: Kohavi estudia el sesgo-varianza-compensación en la validación en el capítulo 3 de su tesis doctoral . Lo recomiendo altamente.
steffen
3
+1, por cierto "K más grande significa mayor varianza", según tengo entendido, con grande , todos los conjuntos de entrenamiento tendrán datos grandes en común, por lo que los modelos entrenados estarán algo correlacionados, lo que dará como resultado errores de prueba correlacionados , entonces la media del error de prueba tendrá una mayor varianza, ¿verdad? KKKK
aguacate
Sí, creo que esta es una intuición correcta.
ogrisel
0

No sé cómo Kafecta la precisión y la generalización, y esto puede depender del algoritmo de aprendizaje, pero definitivamente afecta la complejidad computacional casi linealmente (asintóticamente, linealmente) para algoritmos de entrenamiento con complejidad algorítmica lineal en el número de instancias de entrenamiento. El tiempo de cálculo para el entrenamiento aumenta los K-1tiempos si el tiempo de entrenamiento es lineal en el número de instancias de entrenamiento. Por lo tanto, para conjuntos de entrenamiento pequeños, consideraría los aspectos de precisión y generalización, especialmente dado que necesitamos aprovechar al máximo un número limitado de instancias de entrenamiento.

Sin embargo, para grandes conjuntos de entrenamiento y algoritmos de aprendizaje con un alto crecimiento de la complejidad comutacional asintótica en el número de instancias de entrenamiento (al menos lineal), solo selecciono K=2para que no haya aumento en el tiempo computacional para un algoritmo de entrenamiento con complejidad asintótica lineal en el número de instancias de entrenamiento.

Serge Rogatch
fuente
-6

Solución:

K = N/N*0.30
  • N = Tamaño del conjunto de datos
  • K = Doblar

Comentario: También podemos elegir 20% en lugar de 30%, dependiendo del tamaño que desee elegir como conjunto de prueba.

Ejemplo:

Si el tamaño del conjunto de datos: N = 1500; K = 1500/1500 * 0,30 = 3,33; Podemos elegir el valor K como 3 o 4

Nota:

Un valor de K grande en la validación cruzada de dejar uno fuera resultaría en un ajuste excesivo. Un valor K pequeño en la validación cruzada de dejar uno fuera daría como resultado un ajuste insuficiente.

El enfoque puede ser ingenuo, pero aún sería mejor que elegir k = 10 para un conjunto de datos de diferentes tamaños.

Subhash Rajagopal
fuente
44
(-1)por lo que sugiere que siempre use k = 3 o 4 independientemente del tamaño de la muestra; en mi humilde opinión, esto no es sustancialmente diferente de usar k = 10 por igual, independientemente del tamaño de la muestra. NN0.3=10.33.33=const.
cbeleites
K = N / N * 0.3 = 10/3 que es una constante. Por lo tanto, no es lógico usar ese valor para cada condición.
Kamal Thapa