स्टैटमॉडल ओएलएस और स्किकिट लीनियर रिग्रेशन के बीच अंतर


16

मेरे पास अलग-अलग पुस्तकालयों से दो अलग-अलग तरीकों के बारे में सवाल है जो एक ही काम कर रहे हैं। मैं रैखिक प्रतिगमन मॉडल बनाने की कोशिश कर रहा हूं।

यहां वह कोड है जो मैं ओएलएस के साथ स्टैटमोडेल लाइब्रेरी का उपयोग कर रहा हूं:

X_train, X_test, y_train, y_test = cross_validation.train_test_split(x, y, test_size=0.3, random_state=1)

x_train = sm.add_constant(X_train)
model = sm.OLS(y_train, x_train)
results = model.fit()

print "GFT + Wiki / GT  R-squared", results.rsquared

यह GFT + Wiki / GT R-squared 0.981434611923 प्रिंट करता है

और दूसरा है लाइब्रेरी जानें लीनियर मॉडल विधि:

model = LinearRegression()
model.fit(X_train, y_train)

predictions = model.predict(X_test)

print 'GFT + Wiki / GT R-squared: %.4f' % model.score(X_test, y_test)

यह जीएफटी + विकी / जीटी आर-स्क्वेर्ड प्रिंट आउट : 0.8543

तो मेरा प्रश्न है कि दोनों विधि हमारे R ^ 2 परिणाम को प्रिंट करती है, लेकिन एक प्रिंट 0.98 है और दूसरा 0.85 है।

मेरी समझ से, OLS प्रशिक्षण डेटासेट के साथ काम करता है। तो मेरे सवाल,

  • क्या कोई ऐसा तरीका है जो OLS के साथ परीक्षण डेटा सेट के साथ काम करता है?
  • क्या ट्रांसिंग डेटा सेट स्कोर हमें कोई अर्थ देता है (ओएलएस में हमने टेस्ट डेटा सेट का उपयोग नहीं किया है)? मेरे पिछले ज्ञान से हमें परीक्षण डेटा के साथ काम करना होगा।
  • OLS और scikit रैखिक रिग्रेशन में क्या अंतर है। मॉडल के स्कोर की गणना के लिए हम किसका उपयोग करते हैं?

किसी भी मदद के लिए धन्यवाद।

जवाबों:


15

उपयोग के मामले में पहले। आप आँकड़ेमैक्स में भविष्यवाणी को उसी तरह से प्राप्त कर सकते हैं जैसे कि scikit-learn में, सिवाय इसके कि हम परिणाम उदाहरण का उपयोग करेंfit

predictions = results.predict(X_test)

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

prediction_error = y_test - predictions

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

आपके अन्य दो बिंदुओं के लिए:

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

सबसे महत्वपूर्ण अंतर आसपास के बुनियादी ढांचे और उपयोग के मामलों में है जो सीधे समर्थित हैं।

Statsmodels काफी हद तक पारंपरिक मॉडल का अनुसरण करता है, जहां हम जानना चाहते हैं कि किसी दिए गए मॉडल में डेटा कितनी अच्छी तरह फिट बैठता है, और चर किस "व्याख्या" या परिणाम को प्रभावित करते हैं, या प्रभाव का आकार क्या है। स्किकिट-लर्न मशीन लर्निंग परंपरा का अनुसरण करता है जहां मुख्य समर्थित कार्य भविष्यवाणी के लिए "सर्वश्रेष्ठ" मॉडल को चुन रहा है।

परिणामस्वरूप, सांख्यिकीमॉडल की सहायक विशेषताओं में जोर प्रशिक्षण डेटा का विश्लेषण करने में है, जिसमें परिकल्पना परीक्षण और अच्छाई-से-फिट के उपाय शामिल हैं, जबकि स्किकिट-लर्निंग में सहायक बुनियादी ढांचे में जोर आउट-ऑफ के लिए मॉडल चयन पर है नमूना भविष्यवाणी और इसलिए "परीक्षण डेटा" पर क्रॉस-सत्यापन।

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


हम्म, मैं एक एम्मा मॉडल का उपयोग करने की कोशिश कर रहा हूं, वह है स्टैट्समोडल्स.टीएसए, लेकिन भविष्यवाणी का इंटरफ़ेस वहां पूरी तरह से अलग है। क्या आप जानते हैं कि इसे टेस्ट डाटा कैसे फीड करना है?
इफिस

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

आप सही हैं कि एक और सवाल है, फिर भी स्पष्टीकरण के लिए धन्यवाद। मैंने प्रलेखन पढ़ा है और इसे किसी तरह काम करने के लिए मिला है। लेकिन मुझे अभी भी समझ नहीं आया कि इंटरफ़ेस अलग क्यों है। विशेष रूप से क्यों सुविधा वैक्टर प्रदान करने और भविष्यवाणियां (पूर्वानुमान) प्राप्त करना संभव नहीं है।
इफिस

ARMA और SARIMAX व्याख्यात्मक चरों exogको अनुमान और पूर्वानुमान में शामिल करने की अनुमति देते हैं ।
जोसेफ

Stackowerlow पर यह सवाल इंटरफेस में अंतर को स्वीकार करता है: stackoverflow.com/questions/41045752/…
डेविड डेल

1

ओएलएस मॉडल में आप फिट और भविष्यवाणी करने के लिए प्रशिक्षण डेटा का उपयोग कर रहे हैं।

LinearRegression मॉडल के साथ आप डेटा को फिट करने और भविष्यवाणी करने के लिए परीक्षण करने के लिए प्रशिक्षण डेटा का उपयोग कर रहे हैं, इसलिए R2 स्कोर में भिन्न परिणाम हैं।

यदि आप OLS मॉडल में परीक्षण डेटा लेंगे, तो आपके पास समान परिणाम और कम मूल्य होना चाहिए


1

मैंने एक ऐसे ही मुद्दे का सामना किया है, जहां ओएलएस स्केलेर लीनियरराइजेशन मॉडल की तुलना में अलग-अलग रुपये और समायोजित रुपये के मूल्य दिए गए हैं।

इसका कारण: ओएलएस विचार नहीं करता है, डिफ़ॉल्ट हो, इंटरसेप्ट गुणांक है और इसके बिना मॉडल का निर्माण करता है और स्केलेर इसे मॉडल के निर्माण में मानता है।

समाधान: डेटासेट में 1 का एक कॉलम जोड़ें और मॉडल को ओएलएस के साथ फिट करें और आपको लगभग समान रुपये और एडज मिलेंगे। दोनों मॉडल के लिए रु।

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