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:
[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?