सुविधा चयन विधियों के प्रदर्शन की तुलना कैसे करें?


10

कई सुविधा चयन / चर चयन दृष्टिकोण हैं (उदाहरण के लिए गुयोन और एलिससेफ, 2003 ; लियू एट अल।, 2010 ) देखें

  • फ़िल्टर विधियाँ (जैसे, सहसंबंध-आधारित, एन्ट्रापी-आधारित, यादृच्छिक वन महत्व आधारित),
  • आवरण विधियों (जैसे, आगे-खोज, पहाड़ी पर चढ़ने वाली खोज), और
  • एम्बेडेड तरीके जहां सुविधा का चयन मॉडल सीखने का हिस्सा है।

कई प्रकाशित एल्गोरिदम को मशीन लर्निंग टूल्स जैसे आर, पायथन आदि में भी लागू किया जाता है।

विभिन्न सुविधा चयन एल्गोरिदम की तुलना करने और किसी समस्या / डेटासेट के लिए सर्वोत्तम विधि का चयन करने के लिए एक उपयुक्त विधि क्या होगी? एक और सवाल यह होगा कि क्या कोई मेट्रिक्स ज्ञात हैं जो सुविधा चयन एल्गोरिदम के प्रदर्शन को मापते हैं?

जवाबों:


4

यह एक कठिन समस्या है और शोधकर्ता बहुत प्रगति कर रहे हैं।

यदि आप पर्यवेक्षित सुविधा चयन की तलाश कर रहे हैं , तो मैं LASSO और इसके वेरिएंट की सिफारिश करूंगा । पर्यवेक्षित शिक्षण के साथ एल्गोरिथ्म का मूल्यांकन बहुत सीधा है: जो भी आप परीक्षण डेटा पर मीट्रिक चुनते हैं, उसका प्रदर्शन।

LASSO के दो प्रमुख तथ्य यह है कि (1) चयनित विशेषताएं स्वचालित रूप से एक अंतःक्रिया का पता नहीं लगा सकेंगी, इसलिए आपको अपनी सभी विशेषताओं को प्राथमिकता देना होगा (अर्थात, उन्हें मॉडल के माध्यम से चलाने से पहले) और (2) LASSO गैर की पहचान नहीं करेगा -लाइन रिलेशनशिप (जैसे, द्विघात संबंध )।

इन दो कैविटीज़ को आज़माने और पाने का एक तरीका है ग्रेडिएंट बूस्टेड मशीन्स का इस्तेमाल करना जो फ़ीचर सिलेक्शन को अपने आप करता है। यह ध्यान देने योग्य है कि GBM के सांख्यिकीय गुण LASSO की तुलना में थोड़ा अधिक अस्पष्ट हैं।

यदि आप अनचाहे फ़ीचर चयन की तलाश कर रहे हैं, तो ऐसा लगता है कि इन शोधकर्ताओं द्वारा उपयोग किया जाने वाला एक समान नियमितीकरण दृष्टिकोण है , लेकिन इस विशेष मामले में मूल्यांकन कम स्पष्ट है। लोग पीसीए / एसवीडी या के-मीन्स जैसी कई अलग-अलग चीजों की कोशिश करते हैं जो अंततः डेटा के लिए एक रैखिक सन्निकटन खोजने की कोशिश करेंगे।

उस स्थिति में, प्रदर्शन के विशिष्ट उपाय पुनर्निर्माण त्रुटि या समूहों के आरएमएसई हैं।

सॉफ्टवेयर के संदर्भ में, आर और पायथन दोनों में GBM, LASSO, K-Means, SVD और PCA हैं। पायथन के लिए R और Sklearn में GLMNET और XGBoost प्रासंगिक पुस्तकालय हैं।


1

मैं हमेशा सुविधाओं के चयन को अंतिम परिणाम के लिए एक कदम मानता हूं।

यहाँ, मैं किसी भी तरह सुविधाओं के चयन और आयाम में कमी को मिलाता हूं, जिसमें कुछ लक्ष्य हो सकते हैं और भ्रमित हो सकते हैं।

कुछ विशिष्ट उपयोग:

  • मशीन लर्निंग में कम्प्यूटेशन की कमी: चयन की गुणवत्ता अंतिम शिक्षण परिणाम का एक कारक है और जाहिर है, उस सीखने को प्राप्त करने की गति

  • विज़ुअलाइज़ेशन / डेटा की समझ, जहाँ आप अंततः कई आयामों को जोड़ते हैं। यह अच्छा है जब यह दिलचस्प सामान नहीं छुपाता है, और जब यह समझ में आता है

  • सीखने के परिणामों का सरलीकरण, अभी भी उन्हें समझने योग्य बनाने के लिए (जैसे मूल कारण विश्लेषण)। अच्छा है अगर सरल लेकिन गुणवत्ता के मामले में अभी भी पर्याप्त है

  • फिटिंग पर नियंत्रण, जैसा कि पिछले उत्तर से पता चलता है

  • ...

इसलिए, मुझे नहीं लगता कि सामान्य नियम (जैसा कि हमेशा एमएल में होता है) होता है, लेकिन यह केस की समस्या है।

बस एक व्यक्तिगत विश्वास ...


0

यह विशिष्ट स्थिति और उस समस्या पर निर्भर करता है जिसे आप हल करना चाहते हैं। कुछ सामान्य नियम मौजूद हैं, उदाहरण के लिए रैपर तरीके अधिक लचीले होते हैं और ओवरफिटिंग की संभावना भी अधिक होती है।

फ़ीचर चयन प्रदर्शन का मूल्यांकन सीखने के कार्य के समग्र प्रदर्शन द्वारा किया जा सकता है उदाहरण के लिए, विभिन्न विधियों के साथ सुविधाओं का चयन कर सकते हैं और फिर वर्गीकरण के लिए इन अलग-अलग फ़ीचर सेट का उपयोग कर सकते हैं और प्राप्त क्लासिफायर की सटीकता की तुलना कर सकते हैं।

कुछ जैविक अनुप्रयोगों जैसे कुछ परिदृश्यों में एक अन्य महत्वपूर्ण कारक चयनित सुविधाओं और परिणामों की व्याख्या है, उदाहरण के लिए एक क्लस्टरिंग समस्या में, चयनित सुविधाओं का अर्थ और परिणामी क्लस्टर प्रदर्शन का एक बहुत ही महत्वपूर्ण उपाय है।


0

आपको कृत्रिम परीक्षणों का एक सेट चलाना होगा, अलग-अलग तरीकों का उपयोग करके प्रासंगिक विशेषताओं का पता लगाने की कोशिश करते हुए, यह जानते हुए कि इनपुट चर के सबसेट आउटपुट आउटपुट चर को प्रभावित करते हैं।

अलग-अलग वितरण के साथ यादृच्छिक इनपुट चर का एक सेट रखने के लिए अच्छी चाल होगी और सुनिश्चित करें कि आपकी सुविधा चयन एल्गो वास्तव में उन्हें प्रासंगिक नहीं के रूप में टैग करती है।

एक और चाल यह सुनिश्चित करने के लिए होगी कि पंक्तियों को अनुमति देने के बाद चर को संबंधित स्टॉप के रूप में टैग किया जाए जो प्रासंगिक के रूप में वर्गीकृत किया जा रहा है।

ऊपर कहा गया है कि फ़िल्टर और आवरण दोनों तरीकों पर लागू होता है।

मामलों को संभालना सुनिश्चित करें जब अलग से (एक के बाद एक) चर लक्ष्य पर कोई प्रभाव नहीं दिखाते हैं, लेकिन जब संयुक्त रूप से लिया जाता है तो एक मजबूत निर्भरता प्रकट होती है। उदाहरण एक प्रसिद्ध 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)) 

आउटपुट:

पायथन 3 XOR चित्रण

[0. ०.००४२ ९ ]४६]

इसलिए, संभवतः शक्तिशाली (लेकिन अविभाज्य) फ़िल्टरिंग विधि (बाहर और इनपुट चर के बीच पारस्परिक जानकारी की गणना) डेटासेट में किसी भी रिश्ते का पता लगाने में सक्षम नहीं थी। जबकि हम जानते हैं कि यह 100% निर्भरता है और हम X को जानकर 100% सटीकता के साथ Y की भविष्यवाणी कर सकते हैं।

अच्छा विचार यह होगा कि सुविधाओं के चयन के तरीकों के लिए एक तरह का बेंचमार्क बनाया जाए, क्या कोई भाग लेना चाहता है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.