"एफ प्रतिगमन" और मूल्यों पर आधारित सुविधाओं के चयन के बीच अंतर ?


16

क्या F-regressionव्यक्तिगत रूप से लेबल के साथ सहसंबंधी विशेषताओं का उपयोग करके सुविधाओं की तुलना करना और मान का अवलोकन करना है ?R2

मैंने अक्सर देखा है कि मेरे सहकर्मी F regressionअपनी मशीन लर्निंग पाइपलाइन में फ़ीचर चयन के लिए उपयोग करते हैं sklearn:

sklearn.feature_selection.SelectKBest(score_func=sklearn.feature_selection.f_regression...)`  

कुछ कृपया मुझे बताएं - यह लेबल / डिपेंडेंट वेरिएबल के साथ सहसंबंध रखने के समान परिणाम क्यों देता है?

यह मेरे लिए F_regressionसुविधा चयन में उपयोग करने का लाभ स्पष्ट नहीं है ।

यहाँ मेरा कोड है: मैं mtcarsडेटासेट का उपयोग कर रहा हूँ R:

import pandas as pd
import numpy as np
from sklearn import feature_selection
from sklearn.linear_model import LinearRegression

#....load mtcars dataset into a pandas dataframe called "df", not shown here for conciseness

# only using these numerical columns as features ['mpg', 'disp', 'drat', 'wt']
# using this column as the label:  ['qsec']

model = feature_selection.SelectKBest(score_func=feature_selection.f_regression,\
                                      k=4)

results = model.fit(df[columns], df['qsec'])

print results.scores_
print results.pvalues_

# Using just correlation coefficient:

columns = ['mpg', 'disp', 'drat', 'wt']
for col in columns:
    lm = LinearRegression(fit_intercept=True)
    lm.fit(df[[col]], df['qsec'])
    print lm.score(df[[col]], df['qsec'])

जैसा कि संदेह है, सुविधाओं की रैंकिंग बिल्कुल समान है:

scores using f_regression:

[ 6.376702    6.95008354  0.25164249  0.94460378]


 scores using coefficient of determination:

0.175296320261  
0.18809385182
0.00831830818303
0.0305256382746

जैसा कि आप देख सकते हैं, दूसरी विशेषता को सर्वोच्च स्थान दिया गया है, पहली विशेषता दूसरी है, चौथी विशेषता तीसरी है, और तीसरी विशेषता दोनों मामलों में अंतिम है।

क्या कभी कोई ऐसा मामला है, जो F_regressionअलग-अलग परिणाम देगा, या सुविधाओं को किसी तरह से अलग करेगा?

संपादित करें: संक्षेप में बताने के लिए, मैं जानना चाहता हूं कि क्या ये दो रैंकिंग की विशेषताएं कभी अलग परिणाम देती हैं:

1) व्यक्तिगत रूप से परिणाम के साथ उन्हें पुन: प्राप्त करते समय उनकी एफ-आँकड़ा द्वारा रैंकिंग सुविधाएँ (यह वही है जो स्केलेरन करता है) और,

2) उनके R- चुकता मूल्य से रैंकिंग सुविधाओं जब उन्हें परिणाम के साथ फिर से, व्यक्तिगत रूप से।


एसओ ने मुझे यह पोस्ट करने के तुरंत बाद नीचे चला गया, जो मुझे यकीन है कि इससे कोई भी ध्यान आकर्षित करने की संभावना पर चोट लगी है।
हुनले

1
आपके प्रश्न में "एफ-प्रतिगमन" शब्द शामिल है। वह क्या है और यह प्रतिगमन से कैसे अलग है? ... (संपादित करें :) कुछ मेरे साथ अभी होता है: क्या आप एक नी-नल (यानी केवल अवरोधन) के खिलाफ समग्र प्रतिगमन के लिए एक एफ-टेस्ट (या शायद सिर्फ एक एफ-स्टेटिस्टिक) की बात कर रहे हैं?
Glen_b -Reinstate Monica

मैं एफ-परीक्षण की बात कर रहा हूं। प्रतिगमन में, एफ-परीक्षण और इसलिए एफ-स्टेटिस्टिक का उपयोग शून्य परिकल्पना का परीक्षण करने के लिए किया जाता है कि रजिस्ट्रार और परिणाम / लेबल के बीच कोई संबंध नहीं है। sklearnइसे एफ-रिग्रेशन के रूप में संदर्भित करता है, जो शायद थोड़ा भ्रामक है क्योंकि यह वास्तव में एक परीक्षण है। scikit-learn.org/stable/modules/generated/…
Hunle

आपकी टिप्पणी से आपको पता चलता है कि आपके पास केवल एक प्रतिगामी चर है (जिस स्थिति में आप फीचर चयन की बात क्यों कर रहे हैं?)
Glen_b -Reinstate Monica

2
क्या आप कृपया उस स्पष्टीकरण को अपने प्रश्न में संपादित कर सकते हैं?
Glen_b -Reinstate मोनिका

जवाबों:


16

टी एल: डॉ

इसमें कोई अंतर नहीं होगा अगर F-regressionसिर्फ एफ स्टैटिस्टिक की गणना की जाए और सर्वश्रेष्ठ विशेषताओं को चुना जाए। रैंकिंग में अंतर हो सकता है, यह मानते हुए F-regressionकि निम्नलिखित है:

  • एक स्थिर मॉडल के साथ शुरू करें,M0
  • सभी मॉडलों की कोशिश करें जिसमें केवल एक ही विशेषता है और F आँकड़ा के अनुसार सबसे अच्छा चुनेंM1
  • सभी मॉडलों की कोशिश करें जिसमें प्लस एक अन्य सुविधा है और सबसे अच्छा है ...एम M2M1

जैसा कि सहसंबंध प्रत्येक पुनरावृत्ति पर समान नहीं होगा। लेकिन आप अभी भी प्रत्येक चरण में केवल सहसंबंध की गणना करके इस रैंकिंग को प्राप्त कर सकते हैं, इसलिए F-regressionएक अतिरिक्त कदम क्यों उठाता है? यह दो काम करता है:

  • फ़ीचर चयन: यदि आप किसी मशीन लर्निंग पाइपलाइन में सर्वोत्तम विशेषताओं का चयन करना चाहते हैं , जहाँ आप केवल सटीकता की परवाह करते हैं और अंडर / ओवरफ़िटिंग को समायोजित करने के उपाय करते हैं, तो आप केवल रैंकिंग के बारे में ध्यान रख सकते हैं और अतिरिक्त गणना उपयोगी नहीं है।k
  • महत्व के लिए टेस्ट: यदि आप एक अध्ययन में एक आउटपुट पर कुछ चर के प्रभाव को समझने की कोशिश कर रहे हैं, तो आप एक रेखीय मॉडल बनाने के लिए चाहते हो सकता है, और केवल चर हैं काफी कुछ के संबंध में अपने मॉडल को बेहतर, -value । यहाँ, काम में आता है।pF-regression

एफ-टेस्ट क्या है

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

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


क्या करता f_regressionहै

ध्यान दें कि मैं Scikit के कार्यान्वयन से परिचित नहीं हूं, लेकिन यह पता लगाने की कोशिश करता है कि क्या f_regressionकर रहा है। प्रलेखन कहा गया है कि प्रक्रिया अनुक्रमिक है। यदि शब्द अनुक्रमिक का अर्थ अन्य सांख्यिकीय पैकेजों में भी होता है, जैसे कि Matlab Sequential Feature Selection , यहाँ बताया गया है कि मैं इसे कैसे आगे बढ़ाऊंगा:

  • एक स्थिर मॉडल के साथ शुरू करें,M0
  • सभी मॉडलों की कोशिश करें जिसमें केवल एक ही विशेषता है और F आँकड़ा के अनुसार सबसे अच्छा चुनेंM1
  • सभी मॉडलों की कोशिश करें जिसमें प्लस एक अन्य सुविधा है और सबसे अच्छा है ...M2M1

अभी के लिए, मुझे लगता है कि यह आपके प्रश्न का उत्तर देने के लिए एक पर्याप्त पर्याप्त सन्निकटन है; f_regressionसहसंबंध द्वारा रैंकिंग और रैंकिंग के बीच अंतर है ।

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

मान लें कि आपके पास तीन विशेषताएं हैं, , जहां दोनों और आउटपुट साथ अत्यधिक सहसंबद्ध हैं , लेकिन एक दूसरे के साथ अत्यधिक सहसंबद्ध भी हैं, जबकि केवल साथ मध्य रूप से सहसंबद्ध है । स्कोर करने का आपका तरीका और को सर्वश्रेष्ठ स्कोर प्रदान करेगा , लेकिन अनुक्रमिक विधि नहीं हो सकती है। पहले दौर में, यह बनाने के लिए, का सबसे अच्छा फ़ीचर । फिर, यह दोनों मूल्यांकन करेगा और के लिए । जैसा किx1,x2,x3x1x2yx3yx1x2x1M1x2x3M2x2पहले से चयनित सुविधा के साथ अत्यधिक सहसंबद्ध है, इसमें शामिल अधिकांश जानकारी पहले से ही मॉडल में शामिल है, और इसलिए प्रक्रिया चयन कर । जबकि यह से कम सहसंबद्ध है , यह अवशिष्ट से अधिक सहसंबद्ध है , जो हिस्सा पहले से ही नहीं समझाता है, तुलना में । यह है कि आप जिस दो प्रक्रिया का प्रस्ताव करते हैं वह अलग है।x3yx1x2

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


एफ-परीक्षण का लक्ष्य महत्व स्तर प्रदान करना है। यदि आप यह सुनिश्चित करना चाहते हैं कि आपके द्वारा शामिल सुविधाएँ आपके -value के संबंध में महत्वपूर्ण हैं , तो आप F-test का उपयोग करते हैं। यदि आप केवल सर्वोत्तम विशेषताओं को शामिल करना चाहते हैं , तो आप केवल सहसंबंध का उपयोग कर सकते हैं।pk


अतिरिक्त सामग्री: यहां एफ-टेस्ट का परिचय दिया गया है जो आपको मददगार लग सकता है


ठीक है, अब मैं देखता हूं कि फीचर चयन का यह तरीका मल्टीकोलिनरिटी के खिलाफ कैसे पहरा दे सकता है। मुझे लगता है कि अगर मैं एक रैंडम फ़ॉरेस्ट की तरह कुछ चला रहा हूं, जो कि बहुसंस्कृति के लिए अतिसंवेदनशील नहीं है, तो यह सुविधा चयन विधि लागू नहीं हो सकती है। शुक्रिया @Winks
हुनले

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

" पी-वैल्यू के साथ थोड़ी सी समस्या " जिसे आप संदर्भित करते हैं? और, जब भी हम एक ही डेटा पर हर बार परीक्षण कर रहे हैं, तो कई तुलनाओं का मुद्दा है?
हुनले

एक आखिरी बात (कष्टप्रद होने के लिए क्षमा करें)। जैसा कि आप कहते हैं "... और फिर लिए आपके स्कोरिंग में अंतर होगा"। इस मध्यवर्ती कदम के लिए, मान हमेशा एक F वितरण में p- मान से संबंधित होगा, क्योंकि N और K, F-आँकड़ा (आँकड़े. stackexchange.com/questions/50x25/… ) की गणना में तय किए गए हैं। । इसलिए, मुझे लगता है कि मुझे एफ-टेस्ट या एफ वितरण की आवश्यकता समझ में नहीं आती है। क्या आप? M2R2
हन्ले

1
@ हुनले मैंने अपने उत्तर के अंत में एक एफ-परीक्षण का उपयोग करने का कारण जोड़ा। मूल रूप से, यदि आप महत्व की परवाह करते हैं। अंतराल के साथ थोड़ी सी समस्या केp बारे में , मुझे लगता है कि आप इस बिंदु पर हैं। मुझे ऐसा लगता है कि हम एक ही चीज़ को कई बार ( अनिवार्य XKCD ) परीक्षण कर रहे हैं । हालांकि, चूंकि एफ-परीक्षण व्यवहार में उपयोग किया जाता है, यह 1) वह नहीं कर सकता जो मुझे लगता है कि यह 2 करता है) एक समस्या नहीं है क्योंकि हम प्रत्येक चरण में एक ही चीज का परीक्षण नहीं कर रहे हैं ।
विंक्स

17

मैंने कुछ समय बिताने के लिए स्किकिट स्रोत कोड को देखा, ताकि यह समझ में आ सके कि f_regressionमैं अपनी टिप्पणियों को यहां पोस्ट करना चाहता हूं।

मूल प्रश्न था:

प्रश्न : उच्चतम स्कोर के साथ पहले 4 सुविधाओं SelectKBest(f_regression, k = 4)का उपयोग करने LinearRegression(fit_intercept=True)और चुनने के समान परिणाम देता है?

जवाब है हां । इसके अलावा, स्कोर द्वारा दिए गए सापेक्ष ऑर्डर समान हैं।

यहाँ f_regressionइनपुट मैट्रिक्स और एरे पर क्या होता है । प्रत्येक सुविधा यह : साथ सहसंबंध की गणना करता है। फिर यह एफ-स्टेटिस्टिक गणना करता है जहां , नमूनों की संख्या (थोड़ा अंतर है) यदि पैरामीटर है , तो यह साथ गुणा करता है )। इन एफ-मूल्यों को फिर से, संबंधित पी-मूल्यों के साथ वापस किया जाता है। तो परिणाम एक तुच्छ (एफ-मूल्यों, पी-मान) है। फिरXyX[:,i]y

ρi=(X[:,i]mean(X[:,i]))(ymean(y))std(X[:,i])std(y).
Fi=ρi21ρi2(n2),
n=len(y)centerFalsen1SelectKBestइस टपल का पहला घटक लेता है (ये स्कोर होंगे), इसे क्रमबद्ध करते हैं, और उच्चतम स्कोर के साथ के पहले विशेषताओं को चुनता है । कोई अनुक्रमिक अनुप्रयोग या कुछ भी नहीं है, और पी-मूल्यों का उपयोग नहीं किया जाता है।kX

अब को और लिए गणना करने वाला स्कोर । यह एकल चर पर एक प्रतिगमन है, इसलिए । फिर इसलिए कोई फर्क नहीं है और । हालांकि कोई क्रमिक रूप से एक मॉडल का निर्माण कर सकता है, यह वह नहीं है जो करता है। एक्स [ : , मैं ] y आर 2 मैं = ρ 2 मैं आर 2 मैं < आर 2 जेρ 2 मैंRi2LinearRegressionX[:,i]yRi2=ρi2

Ri2<Rj2ρi21ρi2<ρj21ρj2Fi<Fj.
f_regressionLinearRegressionSelectKBest

2
वाह, तो `SelectKBest` एक मॉडल का क्रमिक रूप से निर्माण नहीं करता है।
16

इसके लायक क्या है, मैं user43451 की व्याख्या से सहमत हूं। और, मेरी इच्छा है कि स्केलेरन इसे सिर्फ सिंगल फीचर्स की सहसंबंध रैंकिंग कहें। मेरे लिए एफ-टेस्ट, अनुक्रमिक मॉडल की धारणा में लाता है क्योंकि विंक्स ने अपने स्वीकृत उत्तर में कहा।
मृदफनर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.