एक से अधिक प्रतिगमन में चर की संख्या को कम करना


9

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

ऐसा करने के बारे में कुछ (शायद भोले) विचार:

  1. प्रत्येक चर के साथ एक सरल रैखिक प्रतिगमन करें और सबसे बड़े मानों के साथ दस चुनें । बेशक, इस बात की कोई गारंटी नहीं है कि संयुक्त रूप से दस सबसे अच्छा वैरिएबल दस का सबसे अच्छा समूह होगा।R2
  2. एक प्रमुख घटक विश्लेषण करें और पहले कुछ प्रमुख अक्षों के साथ सबसे बड़े संघों के साथ दस मूल चर खोजने की कोशिश करें।

मुझे नहीं लगता कि मैं एक पदानुक्रमित प्रतिगमन कर सकता हूं क्योंकि चर वास्तव में नेस्टेड नहीं हैं। दस चर के सभी संभावित संयोजनों की कोशिश करना कम्प्यूटेशनल रूप से संभव है क्योंकि बहुत सारे संयोजन हैं।

क्या एक बहु प्रतिगमन में चर की संख्या को कम करने की इस समस्या से निपटने के लिए एक मानक दृष्टिकोण है?

ऐसा लगता है कि यह एक पर्याप्त सामान्य समस्या होगी कि एक मानक दृष्टिकोण होगा।

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

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


1
माइक, आप ESL के अध्याय 3 के माध्यम से ब्राउज़ कर सकते हैं , यदि आप इससे अपरिचित हैं। लिंक पर मौजूद पेज टेक्स्ट के मुफ्त, कानूनी पीडीएफ को अंक प्रदान करता है।
कार्डिनल

क्या आप स्पष्ट कर सकते हैं कि आप मूल चर के दस ही कहे, कह रहे हैं, या उन विधियों में भी दिलचस्पी लेंगे जो मूल चर के रैखिक संयोजनों के एक छोटे उपसमुच्चय का उपयोग करते हैं (बाद में एक पारंपरिक प्रमुख-घटक प्रतिगमन जैसा कुछ होना तुम्हें दे) गी।
कार्डिनल

3
यह उत्तर विधि के साथ (कई) समस्याओं में से एक का एक ठोस उदाहरण देता है 1. फ्रैंककार्ड के लिए @cardinal द्वारा एक टिप्पणी हार्लेल का जवाब विधि 2 के साथ समस्या के क्रॉक्स को जाता है: आप अकेले स्वतंत्र चर के साथ कुछ भी करते हैं, उनके विचार के बिना आश्रित चर के संबंध, जोखिम अप्रासंगिक या बदतर। जहाँ तक मानक या "कैनोनिकल" उत्तर चलते हैं, यहाँ एक पूछना थोड़ा सा है जैसे कि अण्डाकार वक्रों पर तर्कसंगत बिंदुओं को खोजने के लिए सभी तरीकों की चर्चा करना, उनके पेशेवरों और विपक्षों के साथ :-)।
whuber

2
जैसा कि अन्य लोगों ने यहां बताया है, विधि 1 से समस्याएं पैदा होंगी। एक सहज ज्ञान युक्त सुलभ उपचार के लिए ऐसा क्यों सच है / इस दृष्टिकोण के साथ मुद्दों में से एक का वर्णन, आप इसे पढ़ना चाह सकते हैं: आंकड़े.stackexchange.com/questions/20836/…
मोनिका

1
पहले विचार के साथ समस्याओं के स्पष्टीकरण के लिए व्हीबर और गंग के लिए धन्यवाद।
माइक स्पिवी

जवाबों:


1

इस समस्या को आमतौर पर सबसेट सिलेक्शन कहा जाता है और कुछ अलग तरीके हैं। संबंधित लेखों के अवलोकन के लिए Google विद्वान देखें ।


धन्यवाद। समस्या का नाम जानना काफी मददगार है!
माइक स्पाइवे

6

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


+1। "वैरिएबल क्लस्टरिंग" से, क्या आप कारक विश्लेषण का मतलब है - यह एक ऐसी रणनीति है जिसका मैं उपयोग कर सकता हूं (y देखने से पहले भी)। मुझे लगता है कि चर विश्लेषण, चर के बजाय टिप्पणियों को समूहीकृत करने के रूप में करता है, लेकिन मुझे क्लस्टर विश्लेषण का केवल सतही ज्ञान है।
गूँग - मोनिका

1
ऐसा लगता नहीं है कि यह मानने का कोई पूर्व- कारण है कि भविष्यवाणियों के अधिकतम संस्करण की दिशाएं आवश्यक रूप से प्रतिक्रिया के साथ अत्यधिक सहसंबद्ध हैं । शायद मैं गलत हूं या आपकी टिप्पणी को गलत समझा। क्या आप स्पष्ट कर सकते हैं?
कार्डिनल

1
इसके अलावा, ऐसा लगता है कि ओपी अपनी विधि 2 में प्रमुख-घटक प्रतिगमन का वर्णन करते हुए (काफी) नहीं है
कार्डिनल

मैं अपने मूल पोस्ट में पूरी तरह से स्पष्ट नहीं था, लेकिन मुझे मूल चर का सबसेट चाहिए । तो एक सीधे प्रमुख घटक विश्लेषण या क्लस्टरिंग वास्तव में मैं क्या कर रहा हूँ नहीं है।
माइक स्पिवी

1
परिवर्तनीय क्लस्टरिंग कारक विश्लेषण से संबंधित है लेकिन सरल है। चर को कैसे एक दूसरे के साथ सहसंबद्ध किया जाता है, में वर्गीकृत किया गया है। varclusR Hmiscपैकेज में फ़ंक्शन देखें , या SAS में PROC VARCLUS। यदि आप थोड़ी सावधानी बरतते हैं तो डेटा में कमी चर को कम करने में मदद कर सकती है; आप एक पूरे क्लस्टर को हटा सकते हैं अगर इसकेP-वृद्धि 0.3 है। प्रमुख घटकों के साथ बैटरी कटौती जैसी तकनीकें हैं जहां आप अनिवार्य रूप से पीसी को उनके घटक चर के सबसेट के साथ अनुमानित करते हैं।
फ्रैंक हेरेल

3

डेटा खनन के अध्याय 5 में आर के साथ, लेखक सबसे उपयोगी भविष्यवक्ताओं को चुनने के कुछ तरीके दिखाता है। (जैव सूचना विज्ञान के संदर्भ में, जहां प्रत्येक नमूना पंक्ति में 12,000+ कॉलम हैं!)

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

फिर वह दिखाता है कि यादृच्छिक वन का उपयोग कैसे किया जाए ताकि यह पता चल सके कि कौन से सबसे उपयोगी भविष्यवक्ता हैं। यहाँ एक आत्म-निहित सार उदाहरण है। आप देख सकते हैं कि मुझे 5 अच्छे भविष्यवक्ता मिले हैं, 5 बुरे। कोड दिखाता है कि कैसे सबसे अच्छा 3 रखने के लिए।

set.seed(99)

d=data.frame(
  y=c(1:20),
  x1=log(c(1:20)),
  x2=sample(1:100,20),
  x3=c(1:20)*c(11:30),
  x4=runif(20),
  x5=-c(1:20),
  x6=rnorm(20),
  x7=c(1:20),
  x8=rnorm(20,mean=100,sd=20),
  x9=jitter(c(1:20)),
  x10=jitter(rep(3.14,20))
  )

library(randomForest)
rf=randomForest(y~.,d,importance=T)
print(importance(rf))
#         %IncMSE IncNodePurity
# x1  12.19922383    130.094641
# x2  -1.90923082      6.455262
# ...

i=importance(rf)
best3=rownames(i)[order(i[,"%IncMSE"],decreasing=T)[1:3]]
print(best3)
#[1] "x1" "x5" "x9"

reduced_dataset=d[,c(best3,'y')]

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

10 कॉलम में से 3 चुनने के लिए यहां ऊपर के समान डेटा का उपयोग करते हुए कुछ कोड दिए गए हैं:

library(Hmisc)
d_without_answer=d[,names(d)!='y']
vc=varclus(as.matrix(d_without_answer))
print(cutree(vc$hclust,3))
# x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 
#  1   2   1   3   1   1   1   2   1   3 

मेरा नमूना डेटा इस दृष्टिकोण के अनुरूप नहीं है, क्योंकि मेरे पास 5 अच्छे भविष्यवक्ता और 5 हैं जो केवल शोर हैं। यदि सभी 10 भविष्यवाणियों के साथ थोड़ा सहसंबंधित था y, और एक साथ उपयोग किए जाने पर बेहतर होने का एक अच्छा मौका था (जो कि वित्तीय डोमेन में काफी संभव है), तो यह एक अच्छा दृष्टिकोण हो सकता है।


2

आप LASSO की तरह एक विधि का उपयोग करने पर विचार कर सकते हैं जो मापदंडों के वेक्टर के एक मानक को कम करने वाले समाधान का चयन करके कम से कम वर्गों को नियमित करता है। यह पता चला है कि पैरामीटर वेक्टर में नॉनज़ेरो प्रविष्टियों की संख्या को कम करने के अभ्यास में इसका प्रभाव है। हालांकि LASSO कुछ सांख्यिकीय हलकों में लोकप्रिय है, कई अन्य संबंधित तरीकों को संपीड़ित संवेदन की दुनिया में माना गया है।


धन्यवाद। मैं LASSO देखूंगा। (ऐसा लगता है कि यह संदर्भ कार्डिनल देता है, में भी उल्लेख किया गया है।)
माइक स्पाइवे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.