3 votos

Comparar diferentes algoritmos de clasificación después de la puesta a punto de hiperparámetros

Digamos que tengo un problema de clasificación con $c$ clases. Para esto, tengo un conjunto de datos que contiene $N$ vectores de características distintas con $n$ características. Supongamos que $N$ es del orden de $10^5$, y tanto $c$ como $n$ son del orden de $10$, por lo que hay suficientes datos de entrenamiento para hacer afirmaciones estadísticamente razonables.

Ahora tengo tres clasificadores diferentes (digamos un RandomForest, una NeuralNetwork y un SVM) que quiero entrenar en el conjunto de datos y luego obtener una estimación de qué tan bien se desempeñó cada uno de los clasificadores y qué tan bien generaliza cada clasificador. Cada clasificador tiene hiperparámetros (por ejemplo, profundidad del árbol para el RandomForest, número de capas en la NeuralNetwork, valor de C para SVM, etc.).

¿Cuál es la mejor manera de decidir ahora cuál clasificador se desempeña mejor? ¿Cómo puedo decir "El mejor RandomForest tiene una profundidad de árbol de $x$ y se desempeña un $p$% mejor que la mejor NeuralNetwork (que tiene $h$ capas ocultas)?"

Mi enfoque sería el siguiente:

  1. Para cada uno de los tres clasificadores diferentes, definir una cuadrícula de parámetros de los hiperparámetros que deben ser analizados.
  2. Para cada uno de los tres clasificadores, realizar una validación cruzada anidada individual: Según esta pregunta en este sitio, el bucle interno de la CV anidada selecciona de la cuadrícula de parámetros previamente definida el mejor conjunto de hiperparámetros. El bucle externo me dice, entonces, qué tan estable es esta elección de hiperparámetros. Si la desviación estándar entre las puntuaciones de los $k$ modelos externos resultantes es pequeña, entonces sé que la elección de hiperparámetros es estable y no depende fuertemente del subconjunto de datos que utilicé para el entrenamiento.
  3. El proceso en el paso 2 me permite identificar los mejores hiperparámetros para cada uno de los tres clasificadores. Fijo estos hiperparámetros. Supongamos que mi modelo es estable y que los hiperparámetros no varían mucho entre los pliegues.
  4. Utilizo los resultados de la validación cruzada externa del paso 2 para obtener una estimación imparcial de cuán bien se desempeña cada uno de los tres clasificadores. Aquel con la puntuación más alta en la CV anidada es el que probablemente se desempeña mejor en nuevos datos no vistos.
  5. Si quisiera usar uno de los tres clasificadores para una clasificación adicional de datos no vistos, seleccionaría el que tenga la puntuación más alta en la CV anidada, tal como se menciona en el paso 4, y volvería a entrenar este clasificador con todos los datos que tengo.

¿Es este un enfoque válido? ¿Puedo usar los resultados de la CV anidada para obtener una estimación de cuán bien se desempeña el clasificador en datos no vistos o debo hacer una nueva CV de k-fold con el mejor conjunto de hiperparámetros y usar los resultados de este como mi estimación?

Además: ¿Es válido realizar la CV anidada para los tres clasificadores de manera independiente - como se presenta aquí - o debo hacer lo siguiente:

Realizar la CV anidada donde en el bucle interno no solo se ajustan los hiperparámetros de un clasificador, sino que cada uno de los tres clasificadores con su cuadrícula de hiperparámetros respectiva es accesible. ¿En este enfoque no sabría cuán bien se desempeña el "mejor" de cada uno de los tres clasificadores, verdad?

1voto

user127216 Puntos 8

Intento responder mi propia pregunta.

Comencemos con la selección del modelo:

  1. ¿Debería usar una SVM, Redes Neuronales (NN) o Random Forest (RF)?

Para responder a esta pregunta, se debe hacer lo siguiente:

  • Para cada uno de los tres clasificadores diferentes, definir una cuadrícula de parámetros de los hiperparámetros que deben ser analizados
  • Para cada uno de los tres clasificadores, realizar una validación cruzada anidada por separado durante la cual se ajustan los hiperparámetros
  • La selección de hiperparámetros en el bucle interno variará de fold en fold. Por lo tanto, esta no es una forma de elegir cualquier hiperparámetro
  • En su lugar, usar solo el puntaje promedio de los bucles externos para obtener una estimación imparcial del modelo en consideración (donde modelo significa aquí SVM, NN o RF)
  • Para cada modelo (de nuevo: SVM, NN o RF) se recupera uno de estos valores de la CV anidada. Este valor es entonces una métrica imparcial para indicar qué modelo funciona mejor en la tarea. Seleccionar este modelo.

Ahora se ha seleccionado un modelo y puedo decir si quiero elegir una SVM, NN o RF. ¡Tenga en cuenta que la elección de hiperparámetros no se ha realizado hasta ahora!

  1. ¿Qué hiperparámetros debería usar para mi modelo (es decir, Random Forest)?

Para responder a esto, haga lo siguiente:

  • Usar la cuadrícula de hiperparámetros para el RandomForest definido anteriormente.
  • Recorrer los hiperparámetros (o combinaciones de hiperparámetros): for params in hyperparameters:
    • Hacer una validación cruzada k-fold (única, ¡no anidada!) durante la cual entrenamos el RF con params
    • Luego medir el puntaje promedio, es decir, el puntaje promedio sobre todos los k folds
  • Los hiperparámetros con el puntaje promedio más alto son los que deben ser elegidos para el modelo final

Ahora los hiperparámetros del Random Forest están determinados.

Tenemos dos valores de puntaje para el Random Forest: (i) el de la validación cruzada anidada donde (posiblemente y casi con seguridad) se consideraron diferentes hiperparámetros en cada fold interno y (ii) el puntaje de la validación cruzada única durante la cual encontramos nuestros mejores hiperparámetros para el RF.

El primero solo nos dijo qué modelo elegir, mientras que el segundo nos dice qué tan bien se desempeña el modelo que incluye hiperparámetros fijos.

Un modelo final utilizado para predecir datos nuevos e invisibles sería entonces el Random Forest con los hiperparámetros seleccionados entrenados en todos los datos.

Hay solo una pequeña cosa que queda abierta: Creo que el segundo valor de puntaje (el de la CV única) es una medida adecuada de qué tan bien nuestro modelo final (incluyendo hiper parámetros) funciona en datos nuevos. ¿Es esto correcto? ¿Y se podría decir que en general el puntaje de la cv anidada de este modelo es a) mayor b) menor o c) igual al puntaje no anidado? Se agradecería un comentario al respecto.

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