Sie müssten eine Reihe künstlicher Tests durchführen und versuchen, relevante Merkmale mit verschiedenen Methoden zu erkennen, während Sie im Voraus wissen, welche Teilmengen von Eingabevariablen die Ausgabevariable beeinflussen.
Ein guter Trick wäre, eine Reihe von zufälligen Eingabevariablen mit unterschiedlichen Verteilungen beizubehalten und sicherzustellen, dass Ihre Funktionsauswahlalgen sie tatsächlich als nicht relevant kennzeichnen.
Ein weiterer Trick wäre, sicherzustellen, dass die als relevant gekennzeichneten Variablen nach dem Permutieren von Zeilen nicht mehr als relevant klassifiziert werden.
Das oben Gesagte gilt sowohl für Filter- als auch für Wrapper-Ansätze.
Behandeln Sie auch Fälle, in denen Variablen, wenn sie einzeln (einzeln) genommen werden, keinen Einfluss auf das Ziel haben, aber wenn sie gemeinsam genommen werden, eine starke Abhängigkeit aufzeigen. Beispiel wäre ein bekanntes XOR-Problem (siehe Python-Code):
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))
Ausgabe:
[0. 0. 0.00429746]
Eine vermutlich leistungsstarke (aber univariate) Filtermethode (Berechnung der gegenseitigen Information zwischen Ausgangs- und Eingabevariablen) konnte daher keine Beziehungen im Datensatz erkennen. Während wir sicher wissen, dass es sich um eine 100% ige Abhängigkeit handelt und wir Y mit 100% iger Genauigkeit vorhersagen können, wenn wir X kennen.
Eine gute Idee wäre, eine Art Benchmark für Methoden zur Auswahl von Features zu erstellen. Möchte jemand teilnehmen?