¿Cómo se debe ordenar la selección de características y la optimización de hiperparámetros en la tubería de aprendizaje automático?


14

Mi objetivo es clasificar las señales del sensor. El concepto de mi solución hasta ahora es: i) Características de ingeniería de la señal sin procesar ii) Seleccionar características relevantes con ReliefF y un enfoque de agrupamiento iii) Aplicar NN, Bosque aleatorio 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 cual se evalúa la señal del sensor, o el número de unidades ocultas en cada capa de NN

Hay 3 problemas que veo aquí: 1) Los parámetros de selección de características de ajuste influirán 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 combinación posible de configuración es intratable.

Entonces, mis preguntas son: a) ¿Puedo hacer una suposición simplificadora, los parámetros de selección de la función de sintonización pueden ser desacoplados de los parámetros del clasificador de sintonización? b) ¿Hay alguna otra solución posible?


Creo que el ajuste de la selección de características de desacoplamiento y el ajuste del clasificador es válido, ya que la heurítica para el alivio F tiene como objetivo maximizar la varianza entre clases y minimizar la varianza intraclase, lo que también indica un buen clasificador. Por lo tanto, ajustar los parámetros óptimos para el alivio F también hace que un buen clasificador sea más 'probable'. Sin embargo, tener una formulación matemática para respaldar esta idea, sería muy bueno.
Grunwalski

Una variante específica de esta pregunta: ¿Debería la selección de características ser parte de la rutina de validación cruzada (como en: # para cada conjunto de hiperparam de classifer: # para cada ejecución de K-fold CV: 1) selección de características, 2) escala de características, 3) ajuste del clasificador 4) ¿predecir en el conjunto de prueba?
Nikolas Rieble

1
@NikolasRieble Acabo de escribir una respuesta a la pregunta original, y también
incluí

Respuestas:


14

Como ya lo observó, 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 que seleccione para su algoritmo pueden tener un impacto en qué elección de características sería óptima.

Entonces, sí, si realmente le importa exprimir cada uno por ciento del rendimiento de su modelo, y puede permitirse la cantidad requerida de cómputo, la mejor solución es probablemente hacer la selección de características y el ajuste de hiperparamter "al mismo tiempo". Sin embargo, eso probablemente no sea fácil (dependiendo de cómo haga la selección de funciones). La forma en que me 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 puede permitirse evaluar todas las combinaciones posibles, le recomendaría:

  1. Optimice muy libremente los hiperparámetros, solo para asegurarse de no asignar valores extremadamente malos a algunos hiperparámetros. Esto a menudo se puede hacer a mano si tiene una buena comprensión intuitiva de sus hiperparámetros, o si se realiza con un breve procedimiento de optimización de hiperparámetros utilizando solo un conjunto de características que, de lo contrario, sabe que son bastante buenas.

  2. Selección de funciones, con hiperparámetros que tal vez no estén 100% optimizados pero al menos tampoco extremadamente terribles. Si ya tiene al menos un algoritmo de aprendizaje automático configurado de forma decente, tener buenas características será significativamente más importante para su rendimiento que los hiperparámetros de microoptimización. Ejemplos extremos: si no tiene características, no puede predecir nada. Si tiene una función de trampa que contiene la etiqueta de clase, puede clasificar perfectamente todo.

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


Para abordar 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 use datos en uno de los pliegues para algo, y luego evalúe el rendimiento en ese mismo pliegue, obtendrá una estimación sesgada de su rendimiento (sobreestimará el rendimiento). Por lo tanto, si usa datos en todos los pliegues para el paso de selección de características y luego evalúa el rendimiento en cada uno de esos pliegues, obtendrá estimaciones sesgadas del rendimiento para cada uno de ellos (lo cual no es bueno). Del mismo modo, si tiene una optimización de hiperparámetros basada en datos y utiliza datos de ciertos pliegues (o todos los pliegues), y luego evalúa en esos mismos pliegues, nuevamente obtendrá estimaciones sesgadas de rendimiento. Las posibles soluciones son:

  1. Repita la tubería completa dentro de cada pliegue por separado (por ejemplo, dentro de cada pliegue, haga la selección de características + optimización de hiperparámetro y modelo de entrenamiento). Hacer esto significa que la validación cruzada k-fold le brinda estimaciones imparciales 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". Puede hacer su selección de funciones + optimización de hiperparámetros en el "conjunto de datos de preprocesamiento". Luego, arregla las características e hiperparámetros seleccionados y realiza la validación cruzada k-fold en el "conjunto de datos de tren / prueba". Hacer esto significa que la validación cruzada k-fold le brinda estimaciones imparciales del rendimiento de su algoritmo ML dado el conjunto de características fijas y los valores de hiperparámetro .

Observe cómo las dos soluciones dan como resultado estimaciones de rendimiento ligeramente diferentes. Cuál es más interesante depende de su caso de uso, depende de cómo planea implementar sus soluciones de aprendizaje automático en la práctica. Si usted es, por ejemplo, una empresa que tiene la intención de tener la cartera completa de selección de funciones + optimización de hiperparámetros + capacitación que se ejecuta automáticamente todos los días / semana / mes / año / lo que sea, también le interesará el desempeño de esa completa tubería, y querrás la primera solución.

Si, por otro lado, solo puede permitirse el lujo de hacer la selección de funciones + optimización de hiperparámetros una sola vez en su vida, y luego solo volver a entrenar su algoritmo de forma regular (con los valores de conjunto de características e hiperparam fijos), entonces el rendimiento solo de ese paso será lo que le interesa, y debe optar por la segunda solución


¿Puedes proporcionar referencias también?
Nikolas Rieble

1
Hay algunas fotos de un libro conocido en esta publicación: nodalpoint.com/not-perform-feature-selection . Parecen estar de acuerdo con mi "posible solución 1". No tengo una referencia necesariamente para el otro caso, aparte de ... ¿yo mismo? Proporcioné mi razonamiento / motivación allí, que en mi opinión se
confirma

1
Ese capítulo de ESL debe ser 100% de lectura obligatoria para cualquier modelador predictivo.
Matthew Drury el

Entonces, con respecto a la solución 1, ¿cómo obtiene su conjunto de características finales e hiperparámetros modelo después de ejecutar la selección de características (fs) y la optimización de hiperparam (ho) en varios iters de cv? Además, cuando los realizamos en un itv de cv, ¿ejecutamos fs primero y luego usamos esas funciones?
sma

1
K1

4

Nadie mencionó los enfoques que hacen que el ajuste de hiperparámetros y la selección de características sean los mismos, por lo que hablaré sobre ello. Para este caso, debe diseñar todas las funciones que desee al principio e incluirlas todas.

La investigación ahora en la comunidad de estadísticas ha tratado de hacer que la selección de características sea un criterio de ajuste. Básicamente, penaliza un modelo de tal manera que se incentive a elegir solo algunas características que lo ayuden a hacer la mejor predicción. Pero agrega un parámetro de ajuste para determinar qué tan grande debe ser la penalización.

En otras palabras, permite que el modelo elija las características para usted y tiene más o menos control sobre la cantidad de características. En realidad, esto reduce el cálculo porque ya no tiene que decidir qué características, sino cuántas funciones y el modelo hace el resto.

Entonces, cuando realiza una validación cruzada en el parámetro, también está efectivamente haciendo una validación cruzada en la selección de características.

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

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

En resumen, las personas han intentado incorporar el ajuste de parámetros y la selección de características al mismo tiempo para reducir la complejidad y poder realizar la validación cruzada


0

Creo que estás pensando demasiado allí. 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 etapa inicial de un sistema de aprendizaje automático. Entonces, la mejor práctica es generar primero todas las características significativas, luego usarlas para seleccionar algoritmos y ajustar modelos, después de ajustar el modelo puede recortar el conjunto de características o decidir usar nuevas características.

El procedimiento de aprendizaje automático es en realidad un proceso iterativo, en el que realiza ingeniería de características, luego prueba con algunos algoritmos, luego ajusta los modelos y retrocede hasta que esté satisfecho con el resultado.


Quiere decir que está intentando hasta que funciona: D
Grunwalski

Intentando en un procedimiento de ML, no al azar. En realidad, ML es en realidad un poco de piratería per se.
THN
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.