Você precisaria executar um conjunto de testes artificiais, tentando detectar recursos relevantes usando métodos diferentes, sabendo com antecedência quais subconjuntos de variáveis de entrada afetam a variável de saída.
Um bom truque seria manter um conjunto de variáveis de entrada aleatória com diferentes distribuições e garantir que os algos de seleção de recursos os identifiquem como não relevantes.
Outro truque seria garantir que, depois de permutar linhas, as variáveis marcadas como relevantes deixem de ser classificadas como relevantes.
O que foi dito acima se aplica às abordagens de filtro e invólucro.
Também lembre-se de lidar com os casos em que, se tomadas separadamente (uma por uma), as variáveis não mostram nenhuma influência sobre o alvo, mas, quando tomadas em conjunto, revelam uma forte dependência. O exemplo seria um problema conhecido do XOR (confira o código 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))
Resultado:
[0. 0. 0.00429746]
Portanto, o método de filtragem presumivelmente poderoso (mas univariado) (computação de informações mútuas entre variáveis de entrada e saída) não foi capaz de detectar nenhum relacionamento no conjunto de dados. Considerando que sabemos com certeza que é uma dependência de 100% e podemos prever Y com 100% de precisão sabendo X.
Uma boa idéia seria criar um tipo de referência para os métodos de seleção de recursos. Alguém quer participar?