विभिन्न परीक्षण सेट और प्रशिक्षण सेट वितरण


15

मैं एक डेटा विज्ञान प्रतियोगिता पर काम कर रहा हूं जिसके लिए मेरे परीक्षण सेट का वितरण प्रशिक्षण सेट से अलग है। मैं प्रशिक्षण सेट से टिप्पणियों को कम करना चाहता हूं जो परीक्षण सेट के समान है।

मैं यह कैसे कर सकता हूँ?


रैंडम अंडर का नमूना लेना, रैंडम से अधिक का नमूना लेना, क्लस्टर आधारित ओवर का नमूना लेना, सूचित से अधिक का नमूना लेना: सिंथेटिक अल्पसंख्यक से अधिक नमूने तकनीक, संशोधित सिंथेटिक अल्पसंख्यक oversampling तकनीक (MSMOTE) आदि ..
आदित्य

यदि आप उनमें से किसी के साथ खुश हैं तो आप किसी एक उत्तर को "स्वीकृत उत्तर" के रूप में चिह्नित करते हैं।
ट्विनपेंगिन्स

जवाबों:


17

महान सवाल, यह मशीन लर्निंग प्रतिमान में या तो "कोवरिएट शिफ्ट" के रूप में जाना जाता है, या "मॉडल बहाव" या "गैर-प्रचार" और इसी तरह।

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

मेरे लिए, आपका प्रश्न एक ही श्रेणी में आता है। हालांकि मेरे पास सही समाधान नहीं है (प्रस्ताव को लागू करने के लिए), लेकिन मुझे लगता है कि आप देख सकते हैं:

  • यह ब्लॉग पोस्ट आपको पायथन में प्रदान किए गए कोड के साथ प्रशिक्षण डेटा की सबसामलिंग को संभालने का एक सरल तरीका देता है!
  • इस शोध पत्र को देखें । वे प्रशिक्षण डेटा reweighting ताकि प्रशिक्षण के वितरण का उपयोग कर परीक्षण के वितरण के करीब है द्वारा समस्या को हल करने का प्रस्ताव Kullback-Leibler महत्व आकलन प्रक्रिया पर "आधार Kullback-Leibler विचलन " प्रमेय। मुझे नहीं पता कि वे एक कार्यान्वयन प्रदान करते हैं या इसे आसानी से लागू किया जा सकता है, लेकिन मुझे लगता है कि यह खुदाई के लायक हो सकता है क्योंकि यह वितरण बेमेल से निपटने के लिए एक पेशेवर तरीका लगता है।

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


5

मैं प्रशिक्षण सेट से टिप्पणियों को कम करना चाहता हूं जो परीक्षण सेट के समान है।

मुझे यकीन नहीं है कि आप ऐसा करना चाहते हैं। पूरे उद्देश्य के बजाय अपने एल्गोरिथ्म को प्रशिक्षित करना है ताकि यह अनदेखी डेटा के लिए अच्छी तरह से सामान्य हो जाए।

आमतौर पर, किसी को अपने परीक्षण डेटा को अपने ट्रेन डेटा (जैसे ट्रेन डेटा के अनुसार परीक्षण डेटा मानकीकृत करना) के अनुकूल होना चाहिए, न कि दूसरे तरीके से। व्यवहार में, आप अपने परीक्षण डेटा को नहीं जानते हैं।


3

ट्रेन सेट सबसम्प्लिंग सबसे अच्छा समाधान नहीं हो सकता है!

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

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

ये मेरे सुझाव हैं:

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

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

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


1
पी(y|एक्स)

-1

अजगर में एक अच्छा पैकेज है (डरावना सीखें)

http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html

आप इस पैकेज का उपयोग करके प्रशिक्षण सेट से अपनी टिप्पणियों को कम कर सकते हैं।


1
जहां तक ​​मैं इस प्रश्न को समझता हूं, ट्रेन / परीक्षण वितरण अलग-अलग होते हैं जिन्हें अगर ध्यान में नहीं रखा जाता है तो यह "कोवरिएट शिफ्ट" के रूप में जाना जाता है। "ट्रेन_test_split" का उपयोग करते हुए सरल सबक्राइक, यहाँ बताए गए स्किकिट में कार्यान्वयन को विभाजित करने के दौरान वितरण में नहीं लिया जाएगा! इस प्रकार उत्तर प्रासंगिक नहीं है।
ट्विनपेंग्जिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.