Bạn sẽ phải chạy một tập các thử nghiệm nhân tạo, cố gắng phát hiện các tính năng có liên quan bằng các phương pháp khác nhau trong khi biết trước tập hợp các biến đầu vào nào ảnh hưởng đến biến đầu ra.
Bí quyết tốt là giữ một tập hợp các biến đầu vào ngẫu nhiên với các bản phân phối khác nhau và đảm bảo các thuật toán lựa chọn tính năng của bạn thực sự gắn thẻ chúng là không liên quan.
Một mẹo khác là đảm bảo rằng sau khi hoán vị các hàng, các biến được gắn thẻ là có liên quan sẽ được phân loại là có liên quan.
Trên đây áp dụng cho cả hai cách tiếp cận bộ lọc và trình bao bọc.
Ngoài ra, hãy chắc chắn xử lý các trường hợp khi các biến được thực hiện riêng rẽ (từng cái một) không cho thấy bất kỳ ảnh hưởng nào đến mục tiêu, nhưng khi được thực hiện cùng nhau cho thấy sự phụ thuộc mạnh mẽ. Ví dụ sẽ là một vấn đề XOR nổi tiếng (kiểm tra mã 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))
Đầu ra:
[0. 0. 0,00429746]
Vì vậy, phương pháp lọc có lẽ mạnh mẽ (nhưng không biến đổi) (tính toán thông tin lẫn nhau giữa các biến đầu vào và đầu vào) không thể phát hiện bất kỳ mối quan hệ nào trong tập dữ liệu. Trong khi đó, chúng tôi biết chắc chắn đó là sự phụ thuộc 100% và chúng tôi có thể dự đoán Y với độ chính xác 100% khi biết X.
Ý tưởng tốt sẽ là tạo ra một loại điểm chuẩn cho các phương pháp lựa chọn tính năng, có ai muốn tham gia không?