34 votos

Selección del modelo y la validación cruzada: La forma correcta de

Hay numerosos hilos en CrossValidated sobre el tema de la selección del modelo y de la validación cruzada. He aquí unas cuantas:

Sin embargo, las respuestas a esos temas son bastante genéricas y sobre todo poner de relieve los problemas con métodos específicos de validación cruzada y de selección de modelo.

Para hacer las cosas lo más concreto posible, digamos por ejemplo que estamos trabajando con un SVM con kernel RBF: $K(x, x' ) = (\gamma \, \vert x - x'\vert)^2$, y eso que tengo un conjunto de datos de funciones de X y de las etiquetas y, y que quiero

  1. Encuentra los mejores valores posibles de mi modelo ( $\gamma$ $C$)
  2. Tren de la SVM con mi conjunto de datos (para la implementación final)
  3. Estimación de la generalización de error y la incertidumbre (varianza) en torno a este error

Para ello, me atrevo a hacer una cuadrícula de búsqueda, por ejemplo, yo intente todas las combinaciones posibles de $C$$\gamma$. Por simplicidad, asumimos los siguientes rangos:

  • $C \in \{10, 100, 1000\}$
  • $\gamma \in \{0.1, 0.2, 0.5, 1.0\}$

Más específicamente, el uso de mi completo conjunto de datos hago lo siguiente:

  1. Para cada ($C$,$\gamma$) par, hago repetidas iteraciones (por ejemplo, 100 repeticiones al azar) de $K$-fold cross validation (por ejemplo,$K=10$), en mi conjunto de datos, es decir, yo entreno a mi SVM en $K-1$ pliegues y evaluar el error en el pliegue de la izquierda, recorrer todos los $K$ pliegues. En general, puedo cobrar el 100 x 10 = 1000 prueba de errores.
  2. Para cada uno de dichos ($C$,$\gamma$) par, puedo calcular la media y la varianza de los 1000 prueba de errores $\mu_M, \sigma_M$.

Ahora quiero elegir el mejor modelo (el mejor de los parámetros del kernel) que iba a usar para entrenar a mi final SVM en la totalidad del conjunto de datos. Mi entendimiento es que la elección de la modelo que había el menor error de la media y la varianza $\mu_M$ $\sigma_M$ sería la elección correcta, y que este modelo es $\mu_M$ $\sigma_M$ son mis mejores estimaciones del modelo de la generalización de error de sesgo y la varianza en el entrenamiento con el conjunto de datos completo.

PERO, después de leer las respuestas en los hilos de arriba, yo tengo la impresión de que este método para elegir el mejor SVM para la implementación y/o para la estimación de su error (generalización de rendimiento), es errónea, y que hay mejores maneras de elegir la mejor SVM y los informes de su error. Si es así, ¿cuáles son? Estoy en busca de una respuesta concreta por favor.

Fiel a este problema, específicamente cómo puedo elegir el mejor modelo y estimar correctamente su generalización error?

20voto

John Richardson Puntos 1197

Mi papel en JMLR aborda esta pregunta exacta, y demuestra por qué el procedimiento sugerido en la pregunta (o al menos uno muy parecido) resultados en forma optimista sesgada estimaciones de rendimiento:

Gavin C. Cawley, Nicola L. C. Talbot, "En Más de ajuste en el Modelo de Selección y Posterior Sesgo de Selección en la Evaluación de Desempeño", Revista de la Máquina de Aprendizaje de la Investigación, 11(Julio):2079-2107, 2010. (www)

La cosa clave a recordar es que la validación cruzada es una técnica para estimar la generalización de desempeño de un método de generación de un modelo, en lugar del modelo en sí. Así que si la elección de los parámetros del kernel es la parte del proceso de generación del modelo, que necesita de la cruz-validar el modelo de proceso de selección así, de lo contrario terminarás con un optimismo sesgada rendimiento estimado (como sucederá con el procedimiento que se propone).

Supongamos que usted tiene una función fit_model, que se lleva en un conjunto de datos que consta de los atributos de X y respuestas deseadas y, y que devuelve el modelo ajustado para ese conjunto de datos, incluyendo la optimización de hyper-parámetros (en este caso el kernel y la regularización de los parámetros). Esta sintonía de hyper-parámetros se puede realizar de muchas maneras, por ejemplo, la minimización de la cruz-error de validación sobre X y T.

Paso 1 - ajustar el modelo a los datos disponibles, utilizando la función de fit_model. Esto le da a usted el modelo que va a utilizar en la operación.

Paso 2 - evaluación de Desempeño. Realizar repetidas de validación cruzada utilizando todos los datos disponibles. En cada pliegue, los datos se dividen en un conjunto de entrenamiento y un conjunto de pruebas. Ajuste del modelo utilizando el conjunto de entrenamiento (registro de hyper-valores de los parámetros para el modelo ajustado) y evaluar el rendimiento en la prueba de conjunto. El uso de la media a través de todos los conjuntos de la prueba como un rendimiento estimado (y quizás mirar en la difusión de los valores así).

Paso 3 - Variabilidad de hyper-configuración de parámetros - realizar análisis de hyper-valores de los parámetros recogidos en el paso 3. Sin embargo, debo señalar que no hay nada especial acerca de hyper-parámetros, que son sólo los parámetros del modelo que se ha estimado (indirectamente) a partir de los datos. Ellos son tratados como hyper-parámetros en lugar de los parámetros de cálculo/matemáticas comodidad, pero esto no tiene que ser el caso.

El problema con el uso de la validación cruzada aquí es que los datos de prueba y entrenamiento no son muestras independientes (como compartir datos), lo que significa que la estimación de la varianza del rendimiento de la estimación y de la hiper-parámetros es probable que sea sesgada (es decir, más pequeño de lo que sería verdaderamente independientes con muestras de datos en cada pliegue). Antes que repetir la validación cruzada, probablemente voy a usar bootstrap en su lugar y la bolsa de los modelos resultantes de si esto era computacionalmente factible.

El punto clave es que para obtener una evaluación imparcial y el rendimiento estimado, cualquiera que sea el procedimiento que utilice para generar el modelo final (fit_model) debe ser repetido en su totalidad de forma independiente en cada pliegue de la cruz-procedimiento de validación.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X