입력 변수의 하위 집합이 출력 변수에 영향을 미치는 것을 미리 알고 다른 방법을 사용하여 관련 기능을 감지하려고 시도하는 일련의 인공 테스트를 실행해야합니다.
좋은 방법은 분포가 다른 무작위 입력 변수 세트를 유지하고 기능 선택이 실제로 관련성이없는 것으로 태그를 지정하는지 확인하는 것입니다.
또 다른 트릭은 행을 순열 한 후 관련 태그로 태그 지정된 변수가 관련 항목으로 분류되도록하는 것입니다.
위에서 말한 것은 필터와 래퍼 방식 모두에 적용됩니다.
또한 변수를 따로 따로 (하나씩) 가져다 놓으면 대상에 영향을 미치지 않는 경우를 함께 처리해야하지만 함께 사용하면 강한 의존성이 드러납니다. 잘 알려진 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.00429746]
따라서 강력한 (단일 변량) 필터링 방법 (출력 변수와 입력 변수 간의 상호 정보 계산)은 데이터 집합의 관계를 감지 할 수 없었습니다. 우리는 확실히 100 % 의존성이며 X를 알고 100 % 정확도로 Y를 예측할 수 있습니다.
기능 선택 방법에 대한 일종의 벤치 마크를 작성하는 것이 좋습니다. 누구나 참여하고 싶습니까?