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 .K
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 K
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?
machine-learning
classification
cross-validation
Charles Menguy
fuente
fuente
Respuestas:
La elección de es algo arbitraria. Así es como decido :kk=10 k
En primer lugar, para reducir la varianza del resultado de CV, puede y debe repetir / iterar el CV con nuevas divisiones aleatorias.k
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.
@ogrisel ya explicó que generalmente grande significa menos sesgo (pesimista). (Se conocen algunas excepciones particularmente para , es decir, dejar uno afuera).k = nk k=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
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.k n
fuente
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).
fuente
No sé cómo
K
afecta 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 losK-1
tiempos 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=2
para 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.fuente
Solución:
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.
fuente