40 votos

¿Cómo deben ordenarse la selección de características y la optimización de hiperparámetros en el proceso de aprendizaje automático?

Mi objetivo es clasificar las señales de los sensores. El concepto de mi solución hasta ahora es : i) Diseñar características a partir de la señal sin procesar ii) Seleccionar las características relevantes con ReliefF y un enfoque de clustering iii) Aplicar N.N, Random Forest y SVM

Sin embargo, estoy atrapado en un dilema. En ii) y iii), hay hiperparámetros como k-Nearest Neigbours para ReliefF o la longitud de la ventana, para la que se evalúa la señal del sensor, o el número de unidades ocultas en cada capa de N.N.

Hay 3 problemas que veo aquí : 1) El ajuste de los parámetros de selección de características influirá en el rendimiento del clasificador 2) La optimización de los hiperparámetros del clasificador influirá en la elección de las características. 3) La evaluación de cada posible combinación de configuración es intratable.

Así que mis preguntas son : a) ¿Puedo hacer una suposición simplificadora, es decir, que los parámetros de selección de características se pueden desacoplar de los parámetros del clasificador? b) ¿Existen otras soluciones posibles?

34voto

Dennis Soemers Puntos 292

Como usted mismo ha observado, su elección de características (selección de características) puede tener un impacto en qué hiperparámetros para su algoritmo son óptimos, y qué hiperparámetros selecciona para su algoritmo puede tener un impacto en qué elección de características sería óptima.

Así que, sí, si realmente te preocupas por exprimir cada porcentaje de rendimiento de tu modelo, y puedes permitirte la cantidad de cálculo necesaria, la mejor solución es probablemente hacer la selección de características y el ajuste del hiperparámetro "al mismo tiempo". Sin embargo, probablemente no sea fácil (dependiendo de cómo se haga la selección de características). La forma en que imagino que funciona sería como tener diferentes conjuntos de características como candidatos, y tratar la selección de un conjunto de características de todos esos conjuntos candidatos como un hiperparámetro adicional.

Sin embargo, en la práctica eso puede no ser realmente factible. En general, si no puedes permitirte evaluar todas las combinaciones posibles, yo recomendaría:

  1. Optimizar muy libremente los hiperparámetros, sólo para asegurarse de no asignar valores extremadamente malos a algunos hiperparámetros. Esto se puede hacer a mano si se tiene una buena comprensión intuitiva de los hiperparámetros, o se puede hacer con un procedimiento de optimización de hiperparámetros muy breve utilizando sólo un grupo de características que se sabe que son decentemente buenas.

  2. Selección de características, con hiperparámetros que quizá no estén optimizados al 100%, pero al menos tampoco son extremadamente terribles. Si ya tienes al menos un algoritmo de aprendizaje automático algo decente, tener buenas características será significativamente más importante para tu rendimiento que micro-optimizar los hiperparámetros. Ejemplos extremos: Si no tienes características, no puedes predecir nada. Si tienes una característica engañosa que contiene la etiqueta de clase, puedes clasificar perfectamente todo.

  3. Optimizar los hiperparámetros con las características seleccionadas en el paso anterior. Esto debería ser un buen conjunto de características ahora, donde realmente puede valer la pena optimizar los hiperparámetros un poco.


Para responder a la pregunta adicional que Nikolas publicó en los comentarios, sobre cómo todas estas cosas (selección de características, optimización de hiperparámetros) interactúan con la validación cruzada k-fold: Yo diría que depende.

Siempre que utilices los datos de uno de los pliegues para cualquier cosa, y luego evalúes el rendimiento en ese mismo pliegue, obtendrás una estimación sesgada de tu rendimiento (sobreestimarás el rendimiento). Por lo tanto, si usted utiliza los datos en todos los pliegues para el paso de selección de características, y luego evaluar el rendimiento en cada uno de esos pliegues, obtendrá estimaciones sesgadas de rendimiento para cada uno de ellos (que no es bueno). Del mismo modo, si tiene una optimización de hiperparámetros basada en datos y utiliza datos de ciertos pliegues (o de todos los pliegues), y luego evalúa en esos mismos pliegues, obtendrá de nuevo estimaciones sesgadas del rendimiento. Las posibles soluciones son:

  1. Repita el proceso completo dentro de cada pliegue por separado (por ejemplo, dentro de cada pliegue, haga la selección de características + la optimización de hiperparámetros y el modelo de entrenamiento). Hacer esto significa que la validación cruzada de k pliegues le da estimaciones no sesgadas del rendimiento de esta tubería completa .

  2. Divida su conjunto de datos inicial en un "conjunto de datos de preprocesamiento" y un "conjunto de datos de entrenamiento/prueba". Puedes hacer tu selección de características + optimización de hiperparámetros en el ''conjunto de datos de preprocesamiento''. A continuación, se fijan las características seleccionadas y los hiperparámetros, y se realiza una validación cruzada k-fold en el conjunto de datos de ''entrenamiento/prueba''. Hacer esto significa que la validación cruzada k-fold le da estimaciones insesgadas del rendimiento de su algoritmo de ML dado el conjunto de características y los valores de los hiperparámetros fijos .

Obsérvese que las dos soluciones dan lugar a estimaciones de rendimiento ligeramente diferentes. Cuál de las dos es más interesante depende de tu caso de uso, depende de cómo planees desplegar tus soluciones de aprendizaje automático en la práctica. Si eres, por ejemplo, una empresa que pretende tener el pipeline completo de selección de características + optimización de hiperparámetros + entrenamiento ejecutándose automáticamente cada día/semana/mes/año/lo que sea, también estarás interesado en el rendimiento de ese pipeline completo, y querrás la primera solución.

Si, por el contrario, sólo puede permitirse hacer la selección de características + la optimización de los hiperparámetros una sola vez en su vida, y después volver a entrenar su algoritmo con cierta regularidad (con los valores del conjunto de características y de los hiperparámetros fijos), entonces lo que le interesa es el rendimiento de sólo ese paso, y debería optar por la segunda solución

4voto

Arttu Puntos 81

Nadie ha mencionado los enfoques que hacen que la sintonización de hiperparámetros y la selección de características sean iguales, así que hablaré de ello. Para este caso debes diseñar todas las características que quieras al principio e incluirlas todas.

En la actualidad, los investigadores de la comunidad estadística han intentado hacer de la selección de características un criterio de ajuste. Básicamente, se penaliza a un modelo de tal manera que se le incentiva a elegir sólo unas pocas características que le ayuden a hacer la mejor predicción. Pero se añade un parámetro de ajuste para determinar la magnitud de la penalización.

En otras palabras, dejas que el modelo elija las características por ti y tienes más o menos el control del número de características. De hecho, esto reduce el cálculo porque ya no tienes que decidir qué características, sino cuántas, y el modelo se encarga del resto.

Así que cuando se hace la validación cruzada en el parámetro, entonces se está haciendo efectivamente la validación cruzada en la selección de características también.

Ya hay muchos modelos de ML que incorporan esta selección de características de una forma u otra.

  • Máquinas de vectores de apoyo doblemente regularizadas que es como la SVM normal pero con selección de características
  • Red elástica que se ocupa de la regresión lineal
  • Regularización de la deserción en las redes neuronales (no tengo referencia para esto)
  • El bosque aleatorio normalmente hace subconjuntos aleatorios de las características, por lo que maneja la selección de características por usted.

En resumen, se ha intentado incorporar el ajuste de parámetros y la selección de características al mismo tiempo para reducir la complejidad y poder hacer una validación cruzada

4voto

xiao li Puntos 20

@DennisSoemers tiene una gran solución. Voy a añadir dos soluciones similares que son un poco más explícitas y se basan en Ingeniería y selección de características: Un enfoque práctico para los modelos predictivos por Max Kuhn y Kjell Johnson.

Kuhn utiliza el término resample para describir un fold de un conjunto de datos, pero el término dominante en StackExchange parece ser fold por lo que utilizaré el término fold abajo.

Opción 1 - búsqueda anidada

Si la potencia de cálculo no es un factor limitante, se recomienda un enfoque de validación anidado, en el que hay 3 niveles de anidación:

1) los pliegues externos, cada uno con un subconjunto de características diferente

2) los pliegues internos, cada pliegue con una búsqueda de hiperparámetros

3) los pliegues internos de cada búsqueda de hiperparámetros, cada pliegue con un conjunto de hiperparámetros diferente.

Este es el algoritmo:

-> Split data into train and test sets.
-> For each external fold of train set:
    -> Select feature subset.
    -> Split into external train and test sets.

    -> For each internal fold of external train set:
        -> Split into internal train and test sets.
        -> Perform hyperparameter tuning on the internal train set. Note that this
           step is another level of nesting in which the internal train set is split
           into multiple folds and different hyperparameter sets are trained and tested on
           different folds.
    -> Examine the performance of the best hyperparameter tuned model 
       from each of the inner test folds. If performance is consistent, redo 
       the internal hyperparameter tuning step on the entire external train set.
    -> Test the model with the best hyperparameter set on the external test set.

-> Choose the feature set with the best external test score.
-> Retrain the model on all of the training data using the best feature set 
   and best hyperparameters for that feature set. 

enter image description here Imagen del capítulo 11.2: Filtros simples

El -> Select feature subset se supone que es aleatorio, pero hay otras técnicas, que se describen en el libro en Capítulo 11 .

Para aclarar el -> Perform hyperparameter tuning step puede leer sobre el enfoque recomendado de validación cruzada anidada . La idea es comprobar la solidez de un proceso de formación realizando repetidamente el proceso de formación y prueba en diferentes pliegues de los datos, y observando la media de los resultados de la prueba.

Opción 2 - búsqueda separada de hiperparámetros y selección de características

-> Split data into hyperameter_train, feature_selection_train, and test sets.

-> Select a reasonable subset of features using expert knowledge.

-> Perform nested cross validation with the initial features and the 
   hyperparameter_train set to find the best hyperparameters as outlined in option 1.

-> Use the best hyperparameters and the feature_selection_train set to find 
   the best set of features. Again, this process could be nested cross 
   validation or not, depending on the computational cost that it would take 
   and the cost that is tolerable.

Así es como Kuhn y Johsnon expresan el proceso:

Cuando se combina un método de búsqueda global con un modelo que tiene sintonía recomendamos que, cuando sea posible, el conjunto de características sea primero de características utilizando el conocimiento de los expertos sobre el problema. A continuación, es importante importante identificar un rango razonable de valores de los parámetros de ajuste. Si se dispone de un número suficiente de muestras, una parte de ellas de ellas puede dividirse y utilizarse para encontrar un rango de valores de parámetros potencialmente buenos utilizando todas las características. valores de los parámetros potencialmente buenos utilizando todas las características. Los valores de los parámetros de ajuste de los parámetros de ajuste pueden no ser la elección perfecta para los subconjuntos de características, pero deberían ser razonablemente eficaces para encontrar un subconjunto óptimo.

Capítulo 12.5: Métodos de búsqueda global

-1voto

THN Puntos 221

Creo que está pensando demasiado en ello. La selección de características, que forma parte de la ingeniería de características, suele ser útil, pero algunas características redundantes no son muy perjudiciales en la fase inicial de un sistema de aprendizaje automático. Así que la mejor práctica es generar primero todas las características significativas, y luego utilizarlas para seleccionar algoritmos y ajustar los modelos, después de ajustar el modelo se puede recortar el conjunto de características o decidir el uso de nuevas características.

El procedimiento de aprendizaje automático es en realidad un proceso iterativo, en el que se hace ingeniería de características, luego se prueba con algunos algoritmos, luego se afinan los modelos y se vuelve atrás hasta que se está satisfecho con el resultado.

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