Вы должны будете запустить набор искусственных тестов, пытаясь обнаружить соответствующие функции, используя различные методы, заранее зная, какие подмножества входных переменных влияют на выходную переменную.
Хорошим трюком было бы сохранить набор случайных входных переменных с различным распределением и убедиться, что ваши алгоритмы выбора объектов действительно помечают их как неактуальные.
Другим трюком было бы убедиться, что после перестановки строк переменные, помеченные как релевантные, перестали классифицироваться как релевантные.
Выше сказанное относится как к фильтрам, так и к оберткам.
Также обязательно разберитесь со случаями, когда взятые отдельно (одна за другой) переменные не оказывают какого-либо влияния на цель, но вместе взятые выявляют сильную зависимость. Примером будет хорошо известная проблема XOR (посмотрите код 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))
Вывод:
[0. 0. 0.00429746]
Таким образом, предположительно мощный (но одномерный) метод фильтрации (вычисление взаимной информации между исходными и входными переменными) не смог обнаружить никаких связей в наборе данных. Принимая во внимание, что мы точно знаем, что это 100% -ая зависимость, и мы можем предсказать Y со 100% точностью, зная X.
Хорошей идеей будет создание своего рода эталона для методов выбора функций, кто-нибудь хочет участвовать?