आपको कृत्रिम परीक्षणों का एक सेट चलाना होगा, अलग-अलग तरीकों का उपयोग करके प्रासंगिक विशेषताओं का पता लगाने की कोशिश करते हुए, यह जानते हुए कि इनपुट चर के सबसेट आउटपुट आउटपुट चर को प्रभावित करते हैं।
अलग-अलग वितरण के साथ यादृच्छिक इनपुट चर का एक सेट रखने के लिए अच्छी चाल होगी और सुनिश्चित करें कि आपकी सुविधा चयन एल्गो वास्तव में उन्हें प्रासंगिक नहीं के रूप में टैग करती है।
एक और चाल यह सुनिश्चित करने के लिए होगी कि पंक्तियों को अनुमति देने के बाद चर को संबंधित स्टॉप के रूप में टैग किया जाए जो प्रासंगिक के रूप में वर्गीकृत किया जा रहा है।
ऊपर कहा गया है कि फ़िल्टर और आवरण दोनों तरीकों पर लागू होता है।
मामलों को संभालना सुनिश्चित करें जब अलग से (एक के बाद एक) चर लक्ष्य पर कोई प्रभाव नहीं दिखाते हैं, लेकिन जब संयुक्त रूप से लिया जाता है तो एक मजबूत निर्भरता प्रकट होती है। उदाहरण एक प्रसिद्ध XOR समस्या होगी (अजगर कोड देखें):
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. ०.००४२ ९ ]४६]
इसलिए, संभवतः शक्तिशाली (लेकिन अविभाज्य) फ़िल्टरिंग विधि (बाहर और इनपुट चर के बीच पारस्परिक जानकारी की गणना) डेटासेट में किसी भी रिश्ते का पता लगाने में सक्षम नहीं थी। जबकि हम जानते हैं कि यह 100% निर्भरता है और हम X को जानकर 100% सटीकता के साथ Y की भविष्यवाणी कर सकते हैं।
अच्छा विचार यह होगा कि सुविधाओं के चयन के तरीकों के लिए एक तरह का बेंचमार्क बनाया जाए, क्या कोई भाग लेना चाहता है?