python - machine - ¿Cuál es la diferencia entre validación cruzada y búsqueda en cuadrícula?
validacion cruzada python (3)
La validación cruzada es cuando reserva parte de sus datos para usarlos en la evaluación de su modelo. Existen diferentes métodos de validación cruzada. Conceptualmente, lo más simple es tomar solo el 70% de sus datos (no es necesario que sea el 70%) y usarlos para la capacitación, y luego usar el 30% restante de los datos para evaluar los modelos. actuación. La razón por la que necesita diferentes datos para la capacitación y la evaluación del modelo es para protegerse contra el sobreajuste. Por supuesto, existen otras técnicas de validación cruzada (un poco más complicadas), como la validación cruzada de k-fold, que a menudo se usan en la práctica.
La búsqueda de cuadrícula significa que tiene un conjunto de modelos (que difieren entre sí en sus valores de parámetros, que se encuentran en una cuadrícula). Lo que hace es entrenar cada uno de los modelos y evaluarlos mediante validación cruzada. A continuación, seleccione el que mejor desempeño.
Para dar un ejemplo concreto, si está utilizando una máquina de vectores de soporte, podría usar valores diferentes para gamma
y C
Entonces, por ejemplo, podría tener una cuadrícula con los siguientes valores para (gamma, C)
: (1, 1), (0.1, 1), (1, 10), (0.1, 10)
. Es una cuadrícula porque es como un producto de [1, 0.1]
para gamma
y [1, 10]
para C
Básicamente, Grid-search entrenaría un SVM para cada uno de estos cuatro pares de valores (gamma, C)
, luego lo evaluaría mediante validación cruzada y seleccionaría el que mejor funcionaba.
En palabras simples, ¿cuál es la diferencia entre la validación cruzada y la búsqueda de cuadrícula? ¿Cómo funciona la búsqueda de cuadrícula? ¿Debo hacer primero una validación cruzada y luego una búsqueda de cuadrícula?
La validación cruzada es un método para estimar de manera robusta el rendimiento del conjunto de pruebas (generalización) de un modelo. Grid-search es una forma de seleccionar el mejor de una familia de modelos, parametrizado por una cuadrícula de parámetros.
Aquí, por "modelo", no me refiero a una instancia entrenada, más los algoritmos junto con los parámetros, como SVC(C=1, kernel=''poly'')
.
Validación cruzada, simplemente separando datos de prueba y entrenamiento y validando resultados de entrenamiento con datos de prueba. Hay dos técnicas de validación cruzada que conozco.
En primer lugar, prueba / tren de validación cruzada. Dividiendo los datos como prueba y tren.
En segundo lugar, la validación cruzada de k-fold divide sus datos en k contenedores, usa cada bandeja como datos de prueba y usa el resto de los datos como datos de entrenamiento y valida contra los datos de prueba. Repetir el proceso k veces. Y consigue el rendimiento medio. La validación cruzada con k-fold es especialmente útil para conjuntos de datos pequeños, ya que maximiza tanto la prueba como los datos de entrenamiento.
Búsqueda de cuadrícula; Trabajando sistemáticamente a través de múltiples combinaciones de parámetros, valide las diferentes y determine cuál ofrece el mejor rendimiento. Puede trabajar con muchas combinaciones cambiando solo un poco los parámetros.