¿Cómo elegir un modelo predictivo después de la validación cruzada k-fold?

149

Me pregunto cómo elegir un modelo predictivo después de hacer la validación cruzada K-fold.

Esto puede expresarse de manera incómoda, así que permítanme explicarlo con más detalle: cada vez que ejecuto la validación cruzada K-fold, uso K subconjuntos de los datos de entrenamiento y termino con K diferentes modelos.

Me gustaría saber cómo elegir uno de los modelos K, para poder presentarlo a alguien y decir "este es el mejor modelo que podemos producir".

¿Está bien elegir cualquiera de los modelos K? ¿O hay algún tipo de mejor práctica involucrada, como elegir el modelo que logra el error de prueba mediano?

Berk U.
fuente
2
Puede encontrar útiles las respuestas en la siguiente pregunta: stats.stackexchange.com/questions/2306/…
BGreene
Deberá repetir el CV 5 veces 100 veces y promediar los resultados para obtener la precisión suficiente. Y la respuesta de @bogdanovist es acertada. Puede obtener la misma precisión de estimación de precisión del bootstrap con menos ajustes de modelo.
Frank Harrell
@ Frank Harrell, ¿por qué dices que son necesarias 100 repeticiones (generalmente uso 10 repeticiones en 10 veces), ¿es esta una regla general ya que el OP no dio ningún detalle?
BGreene
2
Para cv 10 veces, es mejor hacer repeticiones. Se necesitarán más repeticiones con 5 veces. Estas son reglas generales. Un solo cv de 10 veces dará una respuesta inestable, es decir, repita las 10 divisiones y obtendrá suficiente respuesta diferente para preocuparse. 50
Frank Harrell
Casi un duplicado exacto: stats.stackexchange.com/questions/11602 con muchas respuestas valiosas . Quizás estos hilos deberían fusionarse, pero no estoy seguro en qué dirección. Ambos han aceptado respuestas que son muy buenas. Pero el otro es más antiguo y tiene más vistas / votos positivos, por lo que podría tener sentido fusionar este en ese.
ameba

Respuestas:

201

Creo que todavía te falta algo en tu comprensión del propósito de la validación cruzada.

Aclaremos cierta terminología, generalmente cuando decimos 'un modelo' nos referimos a un método particular para describir cómo algunos datos de entrada se relacionan con lo que estamos tratando de predecir. Generalmente no nos referimos a instancias particulares de ese método como modelos diferentes. Entonces podría decir 'Tengo un modelo de regresión lineal' pero no llamaría a dos conjuntos diferentes de coeficientes entrenados diferentes modelos. Al menos no en el contexto de la selección del modelo.

Entonces, cuando realiza la validación cruzada K-fold, está probando qué tan bien su modelo puede ser entrenado por algunos datos y luego predice datos que no ha visto. Usamos la validación cruzada para esto porque si entrenas usando todos los datos que tienes, no tienes ninguno para probar. Podría hacerlo una vez, por ejemplo, utilizando el 80% de los datos para entrenar y el 20% para probar, pero ¿qué pasa si el 20% que eligió para probar contiene un montón de puntos que son particularmente fáciles (o particularmente difíciles)? para predecir? No habremos logrado la mejor estimación posible de la capacidad de los modelos para aprender y predecir.

Queremos usar todos los datos. Entonces, para continuar con el ejemplo anterior de una división 80/20, haríamos una validación cruzada de 5 veces entrenando el modelo 5 veces en el 80% de los datos y probando en un 20%. Nos aseguramos de que cada punto de datos termine en el conjunto de prueba del 20% exactamente una vez. Por lo tanto, hemos utilizado todos los puntos de datos que tenemos para contribuir a una comprensión de qué tan bien nuestro modelo realiza la tarea de aprender de algunos datos y predecir algunos datos nuevos.

Pero el propósito de la validación cruzada no es llegar a nuestro modelo final. No usamos estas 5 instancias de nuestro modelo entrenado para hacer una predicción real. Para eso queremos utilizar todos los datos que tenemos para llegar al mejor modelo posible. El propósito de la validación cruzada es la verificación del modelo, no la construcción del modelo.

Ahora, digamos que tenemos dos modelos, digamos un modelo de regresión lineal y una red neuronal. ¿Cómo podemos decir qué modelo es mejor? Podemos hacer una validación cruzada K-fold y ver cuál prueba mejor para predecir los puntos de ajuste de prueba. Pero una vez que hemos utilizado la validación cruzada para seleccionar el modelo con mejor rendimiento, entrenamos ese modelo (ya sea la regresión lineal o la red neuronal) en todos los datos. No utilizamos las instancias del modelo real que capacitamos durante la validación cruzada para nuestro modelo predictivo final.

Tenga en cuenta que existe una técnica llamada agregación bootstrap (generalmente abreviada a 'embolsado') que de alguna manera usa instancias de modelos producidas de manera similar a la validación cruzada para construir un modelo de conjunto, pero esa es una técnica avanzada más allá del alcance de tu pregunta aquí.

Bogdanovist
fuente
8
Estoy completamente de acuerdo con este punto y pensé en usar todos los datos. Dicho esto, si entrenamos nuestro modelo final utilizando todo el conjunto de datos, ¿no resultaría en un sobreajuste y, por lo tanto, sabotear predicciones futuras?
Berk U.
19
¡No! El sobreajuste tiene que ver con la complejidad del modelo, no tiene nada que ver con la cantidad de datos utilizados para entrenar el modelo. La complejidad del modelo tiene que ver con el método que usa el modelo, no con los valores que toman sus parámetros. Por ejemplo, si incluir x ^ 2 coeficientes, así como x coeficientes en un modelo de regresión.
Bogdanovist
17
@Bogdanovist: Prefiero decir que el sobreajuste tiene que ver con tener muy pocos casos de entrenamiento para un modelo demasiado complejo. Entonces (también) tiene que ver con un número de casos de entrenamiento. Pero tener más casos de capacitación reducirá el riesgo de sobreajuste (para la complejidad constante del modelo).
cbeleites
3
@Bogdanovist For that we want to use all the data we have to come up with the best model possible.: al realizar una búsqueda en cuadrícula con validación cruzada K-fold, ¿significa esto que usaría los mejores parámetros encontrados por la búsqueda en cuadrícula y ajustaría un modelo en todos los datos de entrenamiento, y luego evaluaría el rendimiento de generalización utilizando el conjunto de prueba?
Arun
44
@arun, si usó la validación cruzada k-fold y seleccionó el mejor modelo con los mejores parámetros e hiperparámetros, luego de ajustar el modelo final sobre el conjunto de entrenamiento, no necesita verificar nuevamente el rendimiento utilizando un equipo de prueba. Esto se debe a que ya ha verificado cómo se comportó el modelo con parámetros especificados en datos no vistos.
Sandeep S. Sandhu
29

Permítanme agregar algunos puntos además de la respuesta de Bogdanovist

Como dices, entrenas diferentes modelos. Se diferencian en que 1 / (k-1) th de los datos de entrenamiento se intercambia con otros casos. Estos modelos a veces se denominan modelos sustitutos porque el rendimiento (promedio) medido para estos modelos se toma como un sustituto del rendimiento del modelo entrenado en todos los casos.k

Ahora, hay algunas suposiciones en este proceso.

  • Supuesto 1: los modelos sustitutos son equivalentes al modelo de "datos completos".
    Es bastante común que esta suposición se rompa, y el síntoma es el conocido sesgo pesimista de la validación cruzada de pliegues (u otros esquemas de validación basados ​​en remuestreo). El rendimiento de los modelos sustitutos es, en promedio, peor que el rendimiento del modelo de "datos completos" si la curva de aprendizaje todavía tiene una pendiente positiva (es decir, menos muestras de entrenamiento conducen a modelos peores).k

  • El supuesto 2 es una versión más débil del supuesto 1: incluso si los modelos sustitutos son en promedio peores que el modelo de datos completo, asumimos que son equivalentes entre sí. Esto permite resumir los resultados de la prueba para modelos sustitutos como un rendimiento promedio. La inestabilidad del modelo lleva a la ruptura de esta suposición: el verdadero desempeño de los modelos entrenados en casos de entrenamiento varía mucho. Puede medir esto haciendo iteraciones / repeticiones de la validación cruzada pliegue (nuevas asignaciones aleatorias a los subconjuntos) y observando la varianza (diferencias aleatorias) entre las predicciones de diferentes modelos sustitutos para el mismo caso.N k - 1k
    kkNk1kkk

  • El número finito de casos significa que la medición del rendimiento estará sujeta a un error aleatorio (varianza) debido al número finito de casos de prueba. Esta fuente de variación es diferente de (y por lo tanto se suma a) la variación de inestabilidad del modelo.

Las diferencias en el rendimiento observado se deben a estas dos fuentes de variación.

La "selección" en la que piensa es una selección de conjunto de datos: seleccionar uno de los modelos sustitutos significa seleccionar un subconjunto de muestras de entrenamiento y afirmar que este subconjunto de muestras de entrenamiento conduce a un modelo superior. Si bien este puede ser realmente el caso, generalmente la "superioridad" es espuria. En cualquier caso, como elegir "el mejor" de los modelos sustitutos es una optimización basada en datos, necesitaría validar (medir el rendimiento) este modelo elegido con nuevos datos desconocidos. El conjunto de pruebas dentro de esta validación cruzada no es independiente, ya que se utilizó para seleccionar el modelo sustituto.

Es posible que desee ver nuestro artículo, se trata de la clasificación donde las cosas suelen ser peores que la regresión. Sin embargo, muestra cómo se suman estas fuentes de varianza y sesgo.
Beleites, C. y Neugebauer, U. y Bocklitz, T. y Krafft, C. y Popp, J .: Planificación del tamaño de la muestra para modelos de clasificación. Anal Chim Acta, 2013, 760, 25-33.
DOI: 10.1016 / j.aca.2012.11.007
manuscrito aceptado en arXiv: 1211.1323

Cbeleites
fuente
Usted y bogdanovista está en desacuerdo cuando se dice picking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.y se dice But once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data.Esto es bastante común y es crucial que se especifica un método estandarizado
jpcgandre
¡Especialmente para conjuntos de datos pequeños donde quizás no sea posible dejar de lado los datos de CV, pero los riesgos de sobreajustar su modelo también son altos! Se necesitan referencias para aclarar este problema.
jpcgandre
55
@jpcgandre: No veo ningún desacuerdo. Bogdanovist explica cómo calcular realmente el modelo de elección a partir de los hiperparámetros que se seleccionaron mediante validación cruzada, y agregué que después de tal selección, el modelo necesita someterse a otro nivel de validación independiente (externo). En otras palabras, por ejemplo, un diseño de validación anidado: bucle de validación interno para la selección de hiperparámetros, bucle externo para probar los modelos seleccionados (si tiene suficientes casos, también podría optar por un conjunto de pruebas independiente).
cbeleites
55
La configuración de validación interna / externa es para validación cruzada conocida como validación cruzada doble o anidada, he visto que también se llama validación de modelo cruzado ( dx.doi.org/10.1016/j.chemolab.2006.04.021 ). Con un conjunto de prueba independiente corresponde a la división en tres conjuntos: tren / (optimización) validación / prueba (= validación final). Si tiene tan pocos casos que no puede omitir datos para un CV de segundo nivel, diría que debe corregir sus hiperparámetros por otros medios en lugar de tratar de optimizar seleccionando uno de los conjuntos de hiperparámetros.
cbeleites
@cbeleites tengo una pregunta. Luego, para obtener los parámetros finales del modelo, ¿tomaría el promedio de los hiperparámetros de cada pliegue externo y volvería a entrenar todo el conjunto de datos utilizando ese hiperparámetro promedio? ¿O también haría una búsqueda de hiperparámetros en un CV regular y luego confirmaría la estabilidad de este método usando CV anidado repetido?
Michelle
11

Encontré este excelente artículo Cómo entrenar un modelo final de aprendizaje automático muy útil para aclarar todas las confusiones que tengo con respecto al uso de CV en el aprendizaje automático.

Básicamente, utilizamos CV (p. Ej., División 80/20, pliegue en k, etc.) para estimar qué tan bien funcionará todo su procedimiento (incluida la ingeniería de datos, la elección del modelo (es decir, el algoritmo) y los hiperparámetros, etc.) en futuros no vistos. datos. Y una vez que haya elegido el "procedimiento" ganador, los modelos ajustados de CV han cumplido su propósito y ahora pueden descartarse. Luego, utiliza el mismo "procedimiento" ganador y entrena su modelo final utilizando todo el conjunto de datos.

Patrick Ng
fuente
1

Es una pregunta muy interesante. Para que quede claro, debemos entender la diferencia del modelo y la evaluación del modelo. Utilizamos un conjunto de entrenamiento completo para construir un modelo, y esperamos que este modelo finalmente se use.

La evaluación cruzada de K fold construiría modelos K pero todos serían descartados. Los modelos K solo se utilizan para la evaluación. y solo produjo métricas para decirle qué tan bien se ajusta este modelo con sus datos.

Por ejemplo, elige el algoritmo LinearRegression y realiza dos operaciones en el mismo conjunto de entrenamiento: uno con validación cruzada 10 veces y el otro con 20 veces. el modelo de regresión (o clasificador) debería ser el mismo, pero el coeficiente de correlación y el error al cuadrado relativo de la raíz son diferentes.

A continuación se muestran dos ejecuciones para validación cruzada de 10 veces y 20 veces con weka

1a carrera con 10 veces

=== Run information ===
Test mode:    10-fold cross-validation
...
=== Classifier model (full training set) ===


Linear Regression Model  <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9206
Mean absolute error                35151281151.9807
Root mean squared error            42707499176.2097
Relative absolute error                 37.0147 %
Root relative squared error             38.9596 %
Total Number of Instances              144     

2da carrera con 20 veces

=== Run information ===
...
Test mode:    20-fold cross-validation

=== Classifier model (full training set) ===


Linear Regression Model   <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9203
Mean absolute error                35093728104.8746
Root mean squared error            42790545071.8199
Relative absolute error                 36.9394 %
Root relative squared error             39.0096 %
Total Number of Instances              144     
Canhua Li
fuente
0

No estoy seguro de que la discusión anterior sea completamente correcta. En la validación cruzada, podemos dividir los datos en Entrenamiento y Pruebas para cada ejecución. Usando solo los datos de entrenamiento, uno necesita ajustar el modelo y elegir los parámetros de ajuste en cada clase de modelos que se están considerando. Por ejemplo, en las redes neuronales, los parámetros de ajuste son el número de neuronas y las opciones para la función de activación. Para hacer esto, uno solo valida en los datos de entrenamiento .

Una vez que se encuentra el mejor modelo en cada clase, se evalúa el mejor modelo utilizando los datos de la prueba. El bucle de validación cruzada "externo" se puede utilizar para dar una mejor estimación del rendimiento de los datos de prueba, así como una estimación de la variabilidad. Una discusión puede comparar el rendimiento de la prueba para diferentes clases, por ejemplo, Neural Nets vs. SVM. Se elige una clase de modelo, con el tamaño del modelo fijo, y ahora se utilizan todos los datos para aprender el mejor modelo.

Ahora, si como parte de su algoritmo de aprendizaje automático desea seleccionar constantemente la mejor clase de modelo (por ejemplo, cada semana), ¡incluso esta opción debe evaluarse en los datos de entrenamiento! La medición de datos de prueba no se puede usar para juzgar la elección de clase de modelo si es una opción dinámica.

DataExplorer
fuente
0

¿Por qué usamos k-fold cross validation?

La validación cruzada es un método para estimar la habilidad de un método en datos no vistos. Como usar una división de prueba de tren.

La validación cruzada crea y evalúa sistemáticamente múltiples modelos en múltiples subconjuntos del conjunto de datos. Esto, a su vez, proporciona una población de medidas de desempeño .

  • Podemos calcular la media de estas medidas para tener una idea de qué tan bien funciona el procedimiento en promedio.
  • Podemos calcular la desviación estándar de estas medidas para tener una idea de cuánto se espera que varíe la habilidad del procedimiento en la práctica.

Esto también es útil para proporcionar una comparación más matizada de un procedimiento a otro cuando intenta elegir qué algoritmo y procedimientos de preparación de datos usar.

Además, esta información es invaluable, ya que puede usar la media y la difusión para proporcionar un intervalo de confianza en el rendimiento esperado en un procedimiento de aprendizaje automático en la práctica.

referencia

Saeed
fuente