¿Cómo comparar el rendimiento de los métodos de selección de funciones?

10

Existen varios enfoques de selección de características / selección de variables (ver, por ejemplo, Guyon y Elisseeff, 2003 ; Liu et al., 2010 ):

  • métodos de filtro (por ejemplo, basado en correlación, basado en entropía, basado en importancia aleatoria del bosque),
  • métodos de envoltura (p. ej., búsqueda hacia adelante, búsqueda de escalada) y
  • métodos integrados donde la selección de características es parte del modelo de aprendizaje.

Muchos algoritmos publicados también se implementan en las herramientas de aprendizaje automático como R, Python, etc.

¿Cuál sería un método apropiado para comparar diferentes algoritmos de selección de características y seleccionar el mejor método para un problema / conjunto de datos dado? Otra pregunta sería, ¿hay alguna métrica conocida que mida el rendimiento de los algoritmos de selección de características?

hopfk
fuente

Respuestas:

4

Este es un problema difícil y los investigadores están progresando mucho.

Si está buscando una selección de funciones supervisadas , recomendaría LASSO y sus variantes. La evaluación del algoritmo es muy sencilla con el aprendizaje supervisado: el rendimiento de cualquier métrica que elija en los datos de la prueba.

Dos advertencias principales de LASSO son que (1) las características seleccionadas no detectarán automáticamente una interacción, por lo que debe crear todas sus características a priori (es decir, antes de ejecutarlas en el modelo) y (2) LASSO no identificará relaciones lineales (p. ej., una relación cuadrática ).

Una forma de tratar de superar estas dos advertencias es utilizar máquinas potenciadas por gradiente, que sí selecciona automáticamente. Vale la pena señalar que las propiedades estadísticas de GBM son un poco más ambiguas que las de LASSO.

Si está buscando una selección de funciones sin supervisión, parece que hay un enfoque de regularización similar utilizado por estos investigadores, pero la evaluación en este caso particular se vuelve menos obvia. Las personas prueban muchas cosas diferentes como PCA / SVD o K-Means que finalmente tratarán de encontrar una aproximación lineal a los datos.

En ese caso, las medidas típicas de rendimiento son el error de reconstrucción o el RMSE de los clústeres.

En términos de software, R y Python tienen GBM, LASSO, K-Means, SVD y PCA. GLMNET y XGBoost en R y Sklearn para Python son las bibliotecas relevantes.

franciscojavierarceo
fuente
1

Siempre considero la selección de características como un paso hacia un resultado final.

A continuación, mezclo de alguna manera la selección de características y la reducción de dimensionalidad, lo que podría tener algunos objetivos y puede confundirse.

Algunos usos típicos:

  • reducción de los cálculos en el aprendizaje automático: la calidad de la selección es un factor del resultado final del aprendizaje y también, obviamente, la velocidad para realizar ese aprendizaje

  • visualización / comprensión de los datos, donde combina eventualmente múltiples dimensiones. Es bueno cuando no esconde cosas interesantes, y cuando eso es comprensible

  • simplificación de los resultados del aprendizaje, aún para hacerlos comprensibles (por ejemplo, análisis de causa raíz) Bueno si es simple pero aún suficiente en términos de calidad

  • controlando sobre el ajuste, como sugiere la respuesta anterior

  • ...

Entonces, no creo que haya una regla general (como siempre en ML), pero este es un problema caso por caso.

Solo una creencia personal ...

Michael Hooreman
fuente
0

Depende mucho de la situación específica y del problema que desea resolver. Existen algunas reglas generales, por ejemplo, los métodos de envoltura son más flexibles y también más propensos al sobreajuste.

El rendimiento de la selección de características se puede evaluar mediante el rendimiento general de la tarea de aprendizaje, por ejemplo, se pueden seleccionar características con diferentes métodos y luego usar estos diferentes conjuntos de características para la clasificación y comparar la precisión de los clasificadores obtenidos.

Otro factor importante en algunos escenarios, como algunas aplicaciones biológicas, es la interpretabilidad de las características seleccionadas y los resultados, por ejemplo, en un problema de agrupamiento, el significado de las características seleccionadas y los grupos resultantes es una medida muy importante del rendimiento.

Diente de león
fuente
0

Tendría que ejecutar un conjunto de pruebas artificiales, tratando de detectar características relevantes utilizando diferentes métodos y saber de antemano qué subconjuntos de variables de entrada afectan a la variable de salida.

Un buen truco sería mantener un conjunto de variables de entrada aleatorias con diferentes distribuciones y asegurarse de que sus algos de selección de características las etiqueten como no relevantes.

Otro truco sería asegurarse de que después de permutar filas, las variables etiquetadas como relevantes dejan de clasificarse como relevantes.

Lo anterior se aplica tanto a los enfoques de filtro como de envoltura.

También asegúrese de manejar los casos cuando si se toman por separado (una por una) las variables no muestran ninguna influencia en el objetivo, pero cuando se toman conjuntamente revelan una fuerte dependencia. El ejemplo sería un problema XOR bien conocido (consulte el código de Python):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression,mutual_info_classif

x=np.random.randn(5000,3)
y=np.where(np.logical_xor(x[:,0]>0,x[:,1]>0),1,0)

plt.scatter(x[y==1,0],x[y==1,1],c='r',marker='x')
plt.scatter(x[y==0,0],x[y==0,1],c='b',marker='o')
plt.show()
print(mutual_info_classif(x, y)) 

Salida:

Ilustración de Python 3 XOR

[0. 0. 0.00429746]

Entonces, el método de filtrado presumiblemente poderoso (pero univariante) (cálculo de información mutua entre variables de entrada y salida) no pudo detectar ninguna relación en el conjunto de datos. Mientras que sabemos con certeza que es una dependencia del 100% y podemos predecir Y con una precisión del 100% conociendo X.

Una buena idea sería crear una especie de punto de referencia para los métodos de selección de características, ¿alguien quiere participar?

Anatoly Alekseev
fuente