क्या हमें डेटा के परीक्षण के लिए सामान्यीकरण लागू करना चाहिए?


17

मैं लेखक की पहचान की समस्या पर एक परियोजना कर रहा हूं। मैंने डेटा को प्रशिक्षित करने के लिए tf-idf सामान्यीकरण लागू किया था और फिर उस डेटा पर एक svm प्रशिक्षित किया था।

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

मैं इस क्षेत्र में नया हूं। तो कृपया नजरअंदाज करें यदि प्रश्न मूर्खतापूर्ण प्रतीत होता है?


4
आपका परीक्षण डेटा आपके प्रशिक्षण डेटा के समान पैमाने पर होना चाहिए।
जॉन

जवाबों:


37

हाँ, आपको डेटा का परीक्षण करने के लिए सामान्यीकरण लागू करने की आवश्यकता है, यदि आपका एल्गोरिथ्म सामान्यीकृत प्रशिक्षण डेटा के साथ काम करता है या आवश्यकता है *।

ऐसा इसलिए है क्योंकि आपका मॉडल इसके इनपुट वैक्टर द्वारा दिए गए प्रतिनिधित्व पर काम करता है। उन संख्याओं का पैमाना प्रतिनिधित्व का हिस्सा है। यह पैरों और मीटरों के बीच परिवर्तित होने जैसा है। । । एक मॉडल या सूत्र सामान्य रूप से केवल एक प्रकार की इकाई के साथ काम करेगा।

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

पायथन और SKLearn में, आप इस तरह से मानक स्केलर का उपयोग करके अपने इनपुट / एक्स मान को सामान्य कर सकते हैं :

scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )

ध्यान दें कि train_Xएक फ़ंक्शन का उपयोग करने का रूपांतरण जो फिट बैठता है (पैराम्स का आंकड़ा) फिर सामान्य हो जाता है। जबकि test_Xरूपांतरण ट्रेन के डेटा से सीखे गए उन्हीं पैरेम्स का उपयोग करते हुए रूपांतरण करता है।

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


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


+1 यह समझाने के लिए कि परीक्षण के लिए सामान्यीकरण मानदंड वही होना चाहिए जो प्रशिक्षण से निर्धारित होता है। यह मेरी समझ है कि यह तर्क किसी भी सत्यापन सेट तक फैला हुआ है।
ग्रीनस्टिक

@Greenstick: हाँ, यह मॉडल में खिलाए गए सभी डेटा के उपचार तक फैली हुई है। यदि उत्पादन में अनुमान के लिए किसी मॉडल का उपयोग किया जाएगा तो नया डेटा शामिल करना। मुझे लगता है कि इसका उत्तर सभी को कवर किए बिना काफी लंबा है, और जिस बिंदु पर आप सत्यापन डेटा को विभाजित करते हैं, वह बहुत भिन्न होता है (कई मॉडल ने इसे प्रशिक्षण चरण में बनाया है), इसलिए कोड उदाहरण नहीं दिखा सका।
नील स्लेटर

2
क्या आपको प्रशिक्षण डेटा के साथ परीक्षण डेटा पैमाने (fit_transform) करना चाहिए? या यह एक ही पैमाने (scaler.transform) का उपयोग करके अलग से करते हैं?
बॉब एबर्ट

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

मेरी धारणा की पुष्टि करने के लिए धन्यवाद कि मुझे परीक्षण डेटा के लिए प्रशिक्षण सेट-व्युत्पन्न स्केलिंग का उपयोग करने की आवश्यकता है। लेकिन क्या आप इसके पीछे की व्याख्या के साथ एक लिंक प्रदान कर सकते हैं? संपादित करें: कोई बात नहीं, स्पष्टीकरण यहाँ हैं: datascience.stackexchange.com/questions/58597/…
crazysantaclaus

6

निश्चित रूप से आपको अपना डेटा सामान्य करना चाहिए। आप निम्न उद्देश्यों के लिए डेटा को सामान्य करते हैं:

  • एक ही पैमाने में विभिन्न विशेषताओं के लिए, जो सीखने की प्रक्रिया में तेजी लाने के लिए है।

  • बड़े पैमाने पर देखभाल के बिना अलग-अलग सुविधाओं की देखभाल करने के लिए।

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

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