Validación cruzada y ajuste de parámetros

17

¿Alguien puede decirme qué da exactamente un análisis de validación cruzada como resultado? ¿Es solo la precisión promedio o da algún modelo con parámetros ajustados?

Porque, escuché en alguna parte que la validación cruzada se usa para el ajuste de parámetros.

Sana Sudheer
fuente

Respuestas:

26

La validación cruzada proporciona una medida de precisión fuera de la muestra al promediar varias particiones aleatorias de los datos en muestras de entrenamiento y prueba. A menudo se usa para el ajuste de parámetros haciendo validación cruzada para varios (o muchos) valores posibles de un parámetro y eligiendo el valor del parámetro que da el error promedio de validación cruzada más bajo.

Por lo tanto, el proceso en sí no le proporciona un modelo o estimación de parámetros, pero puede usarlo para ayudar a elegir entre alternativas.

Jonathan Christensen
fuente
12

Para agregar a la respuesta de Jonathan.

Sin embargo, si utiliza la validación cruzada para el ajuste de parámetros, las muestras externas se convertirán en parte de su modelo. Por lo tanto, necesita otra muestra independiente para medir correctamente el rendimiento del modelo final.

Empleado para medir el rendimiento del modelo, la validación cruzada puede medir más que solo la precisión promedio:
una segunda cosa que puede medir con la validación cruzada es la estabilidad del modelo con respecto a los datos de entrenamiento cambiantes: la validación cruzada construye muchos modelos "sustitutos" que se entrenan con conjuntos de entrenamiento ligeramente diferentes. Si los modelos son estables, todos estos modelos sustitutos son equivalentes, si el entrenamiento es inestable, los modelos sustitutos varían mucho. Puede cuantificar esto "varía mucho", por ejemplo, como la varianza de las predicciones de diferentes modelos sustitutos para la misma muestra (en validación cruzada iterada / repetida) o, por ejemplo, como la varianza de los parámetros de los modelos sustitutos.

cbeleites apoya a Monica
fuente
3

Para agregar a respuestas anteriores, comenzaremos desde el principio:

Hay pocas formas de adaptar sus modelos a los datos de entrenamiento, algunas son obvias, otras no tanto. Primero, y el más importante es el sobreajuste de los parámetros de entrenamiento (pesos) a los datos (parámetros de ajuste de curvas en regresión logística, pesos de red en redes neuronales, etc.). Luego modelaría el ruido en los datos: si sobreajusta, no solo captura la función generadora subyacente, sino también la aleatoriedad debido al tamaño de la muestra y al hecho de que la muestra no es una representación perfecta de la población. Este sobreajuste puede mitigarse en cierta medida penalizando ciertos atributos (en general, la complejidad) del modelo. Esto se puede hacer deteniendo el entrenamiento una vez que el rendimiento en la muestra del tren ya no mejora significativamente, eliminando algunas neuronas de una red neuronal (llamada abandono),https://ieeexplore.ieee.org/document/614177/ ) etc.). Sin embargo, estas estrategias de regularización están parametrizadas (¿cuándo se detienen ?, ¿cuántas neuronas eliminar? Etc.). Además, la mayoría de los modelos de aprendizaje automático tienen varios hiperparámetros que deben establecerse antes de que comience la capacitación. Y estos hiperparámetros se sintonizan en la fase de ajuste de parámetros.

Eso nos lleva al segundo y más sutil tipo de sobreajuste: sobreajuste de hiperparámetros. La validación cruzada se puede utilizar para encontrar los "mejores" hiperparámetros, entrenando repetidamente su modelo desde cero en los pliegues k-1 de la muestra y probando en el último pliegue.

Entonces, ¿cómo se hace exactamente? Dependiendo de la estrategia de búsqueda (dada por tenshi), usted establece hiperparámetros del modelo y entrena su modelo k veces, cada vez usando diferentes pliegues de prueba. Usted "recuerda" el rendimiento promedio del modelo en todos los pliegues de prueba y repite todo el procedimiento para otro conjunto de hiperparámetros. Luego, elige un conjunto de hiperparámetros que corresponde al mejor rendimiento durante la validación cruzada. Como puede ver, el costo de cálculo de este procedimiento depende en gran medida del número de conjuntos de hiperparámetros que deben considerarse. Es por eso que se han desarrollado algunas estrategias para elegir este conjunto (aquí voy a generalizar lo que dijo tenshi):

  1. Búsqueda de cuadrícula: para cada hiperparámetro enumera un número finito de valores posibles. Luego, el procedimiento se realiza exhaustivamente para todas las combinaciones de hiperparámetros enumerados. Obviamente, si tiene hiperparámetros continuos, no puede probarlos todos.
  2. Búsqueda de cuadrícula aleatoria: similar a la búsqueda de cuadrícula normal, pero esta vez no prueba todas las combinaciones exhaustivamente, sino que muestra una cantidad fija de veces para todos los valores posibles. Tenga en cuenta que aquí es posible no solo enumerar los valores posibles para un hiperparámetro, sino que también puede proporcionar una distribución para muestrear.
  3. BayesianSearch: la combinación de valores de hiperparámetros se elige para maximizar la mejora esperada de la puntuación. Para más información: http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf . Y una biblioteca que solo se ocupa de eso: https://github.com/hyperopt/hyperopt . Como no es tan fácil combinar con sklearn como lo que tenshi recomendó, úselo solo si no está trabajando con sklearn.
  4. Otras formas de búsqueda guiada en el espacio de hiperparámetros. Según mi experiencia, rara vez se usan, por lo que no los cubriré aquí.

Sin embargo, este no es el final de la historia, ya que los hiperparámetros también pueden (y lo harán) sobreajustar los datos. Para la mayoría de los casos, puede vivir con él, pero si desea maximizar el poder de generalización de su modelo, también puede intentar regularizar los hiperparámetros. Primero, puede evaluar el rendimiento de los datos fuera de la muestra un poco mejor mediante la búsqueda de cuadrícula anidada (detalles: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html , discusión: validación cruzada anidada para la selección del modelo), o simplemente use un conjunto de validación que no se use para el ajuste de hiperparámetros. En cuanto a la regularización en el espacio de hiperparámetros, es una pregunta más o menos abierta. Algunas ideas incluyen elegir no el mejor conjunto de valores de hiperparámetros, sino algo más cercano al medio; El razonamiento es el siguiente: los mejores valores de hiperparámetros probablemente sobreajusten los datos solo porque funcionan mejor que los otros datos del tren, los parámetros malos son simplemente malos, pero los que están en el medio pueden lograr una mejor generalización que los mejores. . Andrew Ng escribió un artículo al respecto. Otra opción es limitar su espacio de búsqueda (está regularizando introduciendo un fuerte sesgo aquí; los valores fuera del espacio de búsqueda nunca se seleccionarán obviamente).

Observación secundaria: usar la precisión como una métrica de rendimiento es, en la mayoría de los casos, una muy mala idea, analizar las puntuaciones f1 y f_beta: estas métricas en la mayoría de los casos reflejarán mejor lo que realmente está tratando de optimizar en problemas de clasificación binaria.

Para resumir: la validación cruzada en sí misma se usa para evaluar el rendimiento del modelo en datos fuera de la muestra, pero también se puede usar para ajustar hiperparámetros junto con una de las estrategias de búsqueda en el espacio de hiperparámetros. Encontrar buenos hiperparámetros permite evitar o al menos reducir el sobreajuste, pero tenga en cuenta que los hiperparámetros también pueden sobreajustar los datos.

Wojtek
fuente
2

Si usted tiene antecedentes de scikit-learn, esta respuesta podría ser útil.

La validación cruzada k-fold se utiliza para dividir los datos en kparticiones, el estimador se entrena en k-1particiones y luego se prueba en la kthpartición. De esta manera, eligiendo qué partición debería ser la kthpartición, hay kposibilidades. Por lo tanto, obtiene kresultados de todas las kposibilidades de su estimador.

estos son métodos computacionalmente caros, pero si va a probar diferentes estimadores, puede probar estos tres para hacer el ajuste de hiperparámetro junto con CV:

yo. GridSearchCV : una lista exhaustiva de todos los P y C posibles para los hiperparámetros de todos los estimadores. Al final da los mejores hiperparámetros usando la media de ese estimador particular de la media del CV.

ii) RandomizedSearchCV : no realiza todos los P y C de los hiperparámetros, pero en un enfoque aleatorio, proporciona el estimador preciso más cercano posible ahorrando más en el cálculo.

iii) BayesSearchCV : no forma parte de scikit-learnla optimización bayesiana para realizar una búsqueda aleatoria y ajustar los resultados.

tl: dr : CV solo se utiliza para evitar un alto sesgo y una gran varianza para su estimador debido a los datos que está pasando. Espero que haya sido útil.

tenshi
fuente