फ़ीचर चयन और क्रॉस-सत्यापन


76

मैं हाल ही में इस साइट पर बहुत कुछ पढ़ रहा हूं (@Aniko, @Dikran Marsupial, @Erik) और अन्य जगहों पर क्रॉस वैरिफिकेशन के साथ ओवरफिटिंग की समस्या के बारे में - (स्मियालॉस्की एट अल 2010 बायोइनफॉरमैटिक्स, हस्ती, सांख्यिकीय शिक्षा के तत्व)। सुझाव यह है कि किसी भी पर्यवेक्षित सुविधा चयन (वर्ग लेबल के साथ सहसंबंध का उपयोग करना) ने क्रॉस सत्यापन (या बूटस्ट्रैपिंग के रूप में अन्य मॉडल आकलन विधि) का उपयोग करके मॉडल प्रदर्शन अनुमान के बाहर प्रदर्शन किया हो सकता है।

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

इस प्रक्रिया के साथ कोई निश्चित रूप से एक इष्टतम सुविधा सेट का दावा नहीं कर सकता है, लेकिन क्या कोई अनदेखी डेटा पर चयनित सुविधा के प्रदर्शन को वैध के रूप में रिपोर्ट कर सकता है?

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

मेरे मामले में मेरे पास ५६ सुविधाएँ और २५ ९ मामले हैं और इसलिए # केस> # फीचर्स हैं। सुविधाएँ सेंसर डेटा से ली गई हैं।

क्षमा याचना यदि मेरा प्रश्न व्युत्पन्न लगता है, लेकिन यह स्पष्ट करने के लिए एक महत्वपूर्ण बिंदु लगता है।

संपादित करें: ऊपर दिए गए डेटा सेट पर क्रॉस सत्यापन के भीतर सुविधा चयन को लागू करने के लिए (नीचे दिए गए उत्तरों के लिए धन्यवाद), मैं पुष्टि कर सकता हूं कि इस डेटा सेट में क्रॉस-सत्यापन से पहले सुविधाओं का चयन एक महत्वपूर्ण पेश किया गयापूर्वाग्रह। यह पूर्वाग्रह / ओवरफिटिंग 3-क्लास फॉर्मूलेशन के लिए 2-क्लास फॉर्मूलेशन की तुलना में सबसे बड़ा था। मुझे लगता है कि इस तथ्य के कारण कि मैंने फ़ीचर चयन के लिए स्टेपवाइज़ रिग्रेशन का इस्तेमाल किया, इस ओवरफिटिंग में वृद्धि हुई; तुलनात्मक उद्देश्यों के लिए, एक अलग लेकिन संबंधित डेटा सेट पर, मैंने अनुक्रमिक फॉरवर्ड फीचर चयन रूटीन की तुलना में उन परिणामों के खिलाफ प्रदर्शन किया, जिन्हें मैंने पहले सीवी के भीतर फीचर चयन के साथ प्राप्त किया था। दोनों विधियों के बीच के परिणाम नाटकीय रूप से भिन्न नहीं थे। इसका मतलब यह हो सकता है कि चरणबद्ध प्रतिगमन अनुक्रमिक एफएस की तुलना में अधिक होने का खतरा है या इस डेटा सेट का एक क्विक हो सकता है।


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

3
+1 हालांकि इस मामले में भी क्रॉस-वेलिडेशन फ़ीचर चयन प्रक्रिया में भिन्नता का प्रतिनिधित्व नहीं करता है, जो कि फीचर चयन अस्थिर होने पर एक समस्या हो सकती है। यदि आप पहले स्क्रीनिंग करते हैं तो प्रत्येक तह में प्रदर्शन में परिवर्तनशीलता सही परिवर्तनशीलता को कम-प्रतिनिधित्व करेगी। यदि आप प्रत्येक तह में स्क्रीनिंग करते हैं, तो यह उचित रूप से प्रत्येक गुना में प्रदर्शन में परिवर्तनशीलता को बढ़ाएगा। अगर मैं कम्प्यूटेशनल खर्च उठा सकता हूं तो मैं हमेशा प्रत्येक तह में स्क्रीनिंग करूंगा।
डिक्रान मार्सुपियल

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

@MichaelChernick - सहमत हुए। मैंने अपने अर्थ को बेहतर ढंग से दर्शाने के लिए ऊपर संपादित किया है।
बीजीरीन

1
@Bgreene: इस मुद्दे पर एक हालिया चर्चा है जिसे goo.gl/C8BUa पर पढ़ा जा सकता है ।
१०:५० पर एलेक जूल

जवाबों:


68

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

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

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

HTH

यहां कुछ MATLAB कोड है जो 56 सेट और 259 मामलों के साथ इस सेट के मोंटे-कार्लो सिमुलेशन को निष्पादित करता है, आपके उदाहरण से मेल खाने के लिए, यह जो आउटपुट देता है वह है:

बायस्ड अनुमानक: erate = 0.429210 (0.397683 - 0.451737)

निष्पक्ष अनुमानक: erate = 0.499689 (0.397683 - 0.590734)

पक्षपाती अनुमानक वह है जहां सुविधा चयन क्रॉस-वैलिडेशन से पहले किया जाता है, निष्पक्ष अनुमानक वह होता है जहां क्रॉस-वेलिडेशन के प्रत्येक तह में स्वतंत्र रूप से सुविधा का चयन किया जाता है। इससे पता चलता है कि इस मामले में पूर्वाग्रह काफी गंभीर हो सकते हैं, यह सीखने के कार्य की प्रकृति पर निर्भर करता है।

NF    = 56;
NC    = 259;
NFOLD = 10;
NMC   = 1e+4;

% perform Monte-Carlo simulation of biased estimator

erate = zeros(NMC,1);

for i=1:NMC

   y = randn(NC,1)  >= 0;
   x = randn(NC,NF) >= 0;

   % perform feature selection

   err       = mean(repmat(y,1,NF) ~= x);
   [err,idx] = min(err);

   % perform cross-validation

   partition = mod(1:NC, NFOLD)+1;
   y_xval    = zeros(size(y));

   for j=1:NFOLD

      y_xval(partition==j) = x(partition==j,idx(1));

   end

   erate(i) = mean(y_xval ~= y);

   plot(erate);
   drawnow;

end

erate = sort(erate);

fprintf(1, '  Biased estimator: erate = %f (%f - %f)\n', mean(erate), erate(ceil(0.025*end)), erate(floor(0.975*end)));

% perform Monte-Carlo simulation of unbiased estimator

erate = zeros(NMC,1);

for i=1:NMC

   y = randn(NC,1)  >= 0;
   x = randn(NC,NF) >= 0;

   % perform cross-validation

   partition = mod(1:NC, NFOLD)+1;
   y_xval    = zeros(size(y));

   for j=1:NFOLD

      % perform feature selection

      err       = mean(repmat(y(partition~=j),1,NF) ~= x(partition~=j,:));
      [err,idx] = min(err);

      y_xval(partition==j) = x(partition==j,idx(1));

   end

   erate(i) = mean(y_xval ~= y);

   plot(erate);
   drawnow;

end

erate = sort(erate);

fprintf(1, 'Unbiased estimator: erate = %f (%f - %f)\n', mean(erate), erate(ceil(0.025*end)), erate(floor(0.975*end)));

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

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

2
इस मामले में हम क्रॉस-वेलिडेशन (संभवतः कई अलग-अलग फीचर सेट) के आधार पर वर्गीकरण परिणामों की रिपोर्ट कर रहे हैं, लेकिन फिर भी मॉडल को उन फीचर सेटों में से केवल एक को रिपोर्ट करने के लिए रिपोर्टिंग करते हैं, अर्थात क्रॉस-वैरिफाइड वर्गीकरण परिणाम आवश्यक रूप से फीचर सेट से मेल नहीं खाते हैं?
बीजीरीन

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

3
यह इतना महत्वपूर्ण पद है। कमाल है कि कितने इस पर लागू नहीं होते हैं।
क्रिस ए।

12

समस्या का थोड़ा अलग और अधिक सामान्य विवरण जोड़ने के लिए:

यदि आप किसी प्रकार का डेटा-चालित पूर्व-प्रसंस्करण करते हैं , उदाहरण के लिए

  1. क्रॉस वैलिडेशन / आउट-ऑफ-बूटस्ट्रैप द्वारा निर्देशित पैरामीटर अनुकूलन
  2. मॉडल के लिए इनपुट तैयार करने के लिए पीसीए या पीएलएस जैसी तकनीकों के साथ आयाम में कमी (जैसे पीएलएस-एलडीए, पीसीए-एलडीए)
  3. ...

और अंतिम मॉडल के प्रदर्शन का अनुमान लगाने के लिए क्रॉस सत्यापन / आउट-ऑफ-बूटस्ट्रैप (/ होल्ड आउट) सत्यापन का उपयोग करना चाहते हैं , सरोगेट प्रशिक्षण डेटा पर डेटा-संचालित पूर्व-प्रसंस्करण की आवश्यकता है, अर्थात प्रत्येक सरोगेट मॉडल के लिए अलग से।

यदि डेटा-चालित पूर्व-प्रसंस्करण प्रकार 1 का है, तो यह "डबल" या "नेस्टेड" क्रॉस सत्यापन की ओर जाता है: पैरामीटर अनुमान केवल "बाहरी" क्रॉस सत्यापन के प्रशिक्षण सेट का उपयोग करके क्रॉस सत्यापन में किया जाता है। ElemStatLearn में एक चित्रण ( https://web.stanford.edu/~hastie/Papers/ESLII.pdf पृष्ठ 222 का प्रिंट 5) है।

आप कह सकते हैं कि प्री-प्रोसेसिंग वास्तव में मॉडल के निर्माण का हिस्सा है। केवल पूर्व-प्रसंस्करण जो किया जाता है

  • प्रत्येक मामले के लिए स्वतंत्र रूप से या
  • वास्तविक डेटा सेट से स्वतंत्र

संगणना को बचाने के लिए सत्यापन लूप से बाहर निकाला जा सकता है।

तो दूसरा तरीका दौर: यदि आपका मॉडल पूरी तरह से ज्ञान बाहरी द्वारा विशेष डेटा सेट के लिए बनाया गया है (जैसे आप अपने विशेषज्ञ ज्ञान से पहले ही तय कर लेते हैं कि माप चैनल 63 - 79 संभवतः समस्या को हल करने में मदद नहीं कर सकते हैं, तो आप निश्चित रूप से इन चैनलों को बाहर कर सकते हैं। , मॉडल का निर्माण करें और इसे क्रॉस-वैलिडेट करें। वही, अगर आप पीएलएस रिग्रेशन करते हैं और अपने अनुभव से तय करते हैं कि 3 अव्यक्त चर एक उचित विकल्प हैं (लेकिन आसपास नहीं खेलते हैं कि 2 या 5 एलवी बेहतर परिणाम देते हैं) तो आप कर सकते हैं एक सामान्य आउट-ऑफ-बूटस्ट्रैप / क्रॉस सत्यापन के साथ आगे बढ़ें।


दुर्भाग्य से ElemStatLearn पुस्तक के प्रिंट 5 के लिए लिंक काम नहीं कर रहा है। मैं सोच रहा था कि क्या आप जिस चित्रण का उल्लेख कर रहे हैं वह अभी भी उसी पृष्ठ पर है। कृपया कैप्शन का भी उल्लेख करें।
rradd88

इसलिए, अगर मेरे पास डेटा के दो सेट हैं, तो उनमें से एक पर फीचर सेलेक्शन / इंजीनियरिंग करें, और दूसरे पर सीवी, कोई समस्या नहीं होगी?
मिलोस

1
@Milos: नहीं, जब तक कि वे सुविधाएँ क्रॉस-वेलिडेशन के लिए मॉडल के लिए निश्चित पैरामीटर नहीं बन जातीं, तब तक ठीक होना चाहिए। यह एक उचित परिकल्पना पीढ़ी (= डेटा सेट ए पर सुविधा विकास) / परिकल्पना परीक्षण (= डेटा सेट बी के साथ अब तय सुविधाओं के प्रदर्शन को मापने) होगा।
cbeleites

@cbeleites हाँ, यही तो मैं करना चाहता था। A पर सुविधाओं का निर्धारण करें, फिर उन विशेषताओं को ठीक करें और B. धन्यवाद पर मॉडलों के लिए क्रॉस-सत्यापन करें। :)
मिलोस

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

5

आइए इसे थोड़ा सहज बनाने की कोशिश करें। इस उदाहरण पर विचार करें: आपके पास एक द्विआधारी आश्रित और दो बाइनरी भविष्यवक्ता हैं। आप सिर्फ एक भविष्यवक्ता के साथ एक मॉडल चाहते हैं। दोनों भविष्यवक्ताओं के पास आश्रित के बराबर 95% और आश्रित से असहमत होने के लिए 5% का मौका है।

अब, आपके डेटा पर संयोग से एक भविष्यवक्ता 97% समय में पूरे डेटा पर निर्भर करता है और दूसरा केवल 93% समय में। आप 97% के साथ भविष्यवक्ता को चुनेंगे और अपने मॉडल बनाएंगे। क्रॉस-मान्यता के प्रत्येक गुना में आपके पास मॉडल आश्रित = पूर्वसूचक होगा, क्योंकि यह लगभग हमेशा सही होता है। इसलिए आपको 97% का क्रॉस पूर्वानुमानित प्रदर्शन मिलेगा।

अब, आप कह सकते हैं, ठीक है कि सिर्फ दुर्भाग्य है। लेकिन यदि भविष्यवाणियों का निर्माण ऊपर के रूप में किया जाता है, तो आपके पास कम से कम 75% सटीकता के साथ मौका है> पूरे डेटा सेट पर 95% सटीकता है और वह वह है जिसे आप चुनेंगे। तो आपके पास प्रदर्शन को पछाड़ने के लिए 75% का मौका है।

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

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


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