Вам доведеться запустити набір штучних тестів, намагаючись виявити відповідні функції за допомогою різних методів, заздалегідь знаючи, які підмножини вхідних змінних впливають на вихідну змінну.
Хорошим прийомом було б зберігати набір випадкових змінних вхідних даних з різними розподілами та переконайтесь, що ваші символи вибору функції дійсно мітять їх як невідповідні.
Ще одним фокусом було б переконатися, що після permuting рядків змінні, позначені як відповідні, перестають класифікуватися як відповідні.
Вищезазначене стосується як підходів фільтра, так і обгортки.
Також обов'язково поводьтеся з випадками, коли їх взяття окремо (одна за одною) змінні не виявляють ніякого впливу на ціль, але коли спільно їх приймають, виявляють сильну залежність. Прикладом може бути відома проблема 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.
Доброю ідеєю було б створити своєрідний орієнтир для методів вибору функцій, чи хоче хтось брати участь?