मशीन लर्निंग - तारीख / समय डेटा से इंजीनियरिंग सुविधाएँ


45

मशीन लर्निंग एप्लिकेशन के लिए समय डेटा को संभालने के लिए सामान्य / सर्वोत्तम अभ्यास क्या हैं?

उदाहरण के लिए, यदि डेटा सेट में घटना के टाइमस्टैम्प के साथ एक कॉलम है, जैसे "2014-05-05", तो आप इस कॉलम से उपयोगी सुविधाओं को कैसे निकाल सकते हैं यदि कोई हो?

अग्रिम में धन्यवाद!

जवाबों:


44

मैं समय चर बनाम अन्य चर को रेखांकन और रुझानों की तलाश करके शुरू करूंगा।

उदाहरण के लिए

यहाँ छवि विवरण दर्ज करें

इस मामले में एक आवधिक साप्ताहिक प्रवृत्ति और एक लंबी अवधि ऊपर की ओर प्रवृत्ति है। इसलिए आप दो समय चर को एन्कोड करना चाहेंगे:

  • day_of_week
  • absolute_time

सामान्य रूप में

कई सामान्य समय-सीमाएँ होती हैं, जिनमें रुझान होता है:

  • absolute_time
  • day_of_year
  • day_of_week
  • month_of_year
  • hour_of_day
  • minute_of_hour

इन सभी में रुझान देखें।

अजीब रुझान

अजीब प्रवृत्तियों के लिए भी देखो। उदाहरण के लिए आप दुर्लभ लेकिन लगातार समय आधारित रुझान देख सकते हैं:

  • is_easter
  • is_superbowl
  • is_national_emergency
  • etc.

इन्हें अक्सर आवश्यकता होती है कि आप अपने डेटा को कुछ बाहरी स्रोत के खिलाफ देखें जो समय-समय पर घटनाओं को मैप करते हैं।

ग्राफ क्यों?

दो कारण हैं कि मुझे लगता है कि रेखांकन इतना महत्वपूर्ण है।

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

  • डेटा त्रुटियां
    सभी अक्सर डेटा में गंभीर त्रुटियां होती हैं। उदाहरण के लिए, आप पा सकते हैं कि दिनांक दो स्वरूपों में एन्कोड किए गए थे और उनमें से केवल एक को आपके प्रोग्राम में सही ढंग से लोड किया गया है। ऐसी समस्याओं के असंख्य हैं और वे आश्चर्यजनक रूप से सामान्य हैं। यह अन्य कारण है जो मुझे लगता है कि रेखांकन महत्वपूर्ण है, न केवल समय श्रृंखला के लिए, बल्कि किसी भी डेटा के लिए।


7

डेटा को विंडोज़ में विभाजित करें और उन विंडो के लिए विशेषताएँ खोजें जैसे कि ऑटोकैरेलेशन गुणांक, तरंगिकाएं आदि, और सीखने के लिए उन सुविधाओं का उपयोग करें।

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


7

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


6

कई मामलों में एक समय श्रृंखला के अंदर डेटा और घटनाएं मौसमी हैं। ऐसे मामलों में घटना का महीना और वर्ष बहुत मायने रखता है। इसलिए इस तरह के परिदृश्यों में आप बाइनरी चर का उपयोग यह दर्शाने के लिए कर सकते हैं कि घटना किसी दिए गए महीने / वर्ष के दौरान है या नहीं।

उम्मीद है कि यह आपके प्रश्न का उत्तर देगा। यदि नहीं तो कृपया थोड़ा और विशिष्ट होना चाहिए कि आप क्या हासिल करने की कोशिश कर रहे हैं


4

जैसा कि बेन और नर ने अच्छी तरह से समझाया, डेट-टाइम ऑब्जेक्ट को डेट और टाइम भागों के बकेट में तोड़ना मौसमी रुझानों का पता लगाने में मदद करेगा, जहां पूर्ण (और आमतौर पर और भी बदतर - अद्वितीय) डेट-टाइम ऑब्जेक्ट को याद होगा।

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

आपके उदाहरण में मैं दिनांक-केवल मान 2014-05-05 से 1399248000 (यूनिक्स समय 5 मई 2014, यूटीसी की शुरुआत का प्रतिनिधित्व करता है) को सामान्य करूंगा।

[कोई यह तर्क दे सकता है कि आप उस तारीख-समय को हर संभव तारीख-समय वाले भाग में लाकर प्राप्त कर सकते हैं .. लेकिन इससे आपके डेटासेट के आयाम में काफी वृद्धि होगी। इसलिए, मैं दूरी के मापन के लिए यूनिक्स-समय के संयोजन का सुझाव दूंगा, और कुछ समय-समय की बाल्टियों के]


3

बेन स्थिर सुविधाओं के बारे में बात कर रहा है , और टाइमस्टैम्प सुविधाओं का उपयोग करें।

एक विस्तार के रूप में, मैं लैग सुविधाओं को पेश करूंगा , मैं कच्चे समय श्रृंखला पर बात नहीं कर रहा हूं, लेकिन इस पर समुच्चय हैं।

सबसे रहस्यमय हिस्सा यह है कि भविष्य का मूल्य हमारे लिए अनदेखी है, हम प्रशिक्षण डेटा में उस समग्र सुविधाओं का उपयोग कैसे कर सकते हैं?

एक छोटा सा उदाहरण: 1991 से 2015 तक वार्षिक बिजली की खपत के आंकड़े हैं, मैं भविष्य में 5 साल, 2016 से 2020 तक बिजली की खपत की भविष्यवाणी करना चाहता हूं। मैं 2020 के फीचर वैल्यू के रूप में पिछले 5 साल के बिजली की खपत के औसत औसत की गणना करूंगा, लेकिन 2016 से 2020 हमारे लिए अज्ञात है, इसलिए हम 5 साल की टाइम सीरीज़ (लैगिंग के विपरीत) को 2010 से 2015 तक मूविंग एवरेज करते हैं, फिर इस वैल्यू को 2020 के फीचर वैल्यू के रूप में इस्तेमाल करते हैं। इसलिए, हम भविष्य के 5 साल के फीचर डेटा का निर्माण कर सकते हैं।

अगला चरण केवल चल समारोह का उपयोग कर रहा है (गिनती \ mean \ median \ min \ max.etc) और विभिन्न विंडो आज़माएं, फिर आप बहुत सारी सुविधाओं का निर्माण करेंगे!


2

आप दिनांक / समय की जानकारी के साथ क्या रुचि रखते हैं, इसके आधार पर, आप इसे बिन कर सकते हैं। उदाहरण के लिए, यदि आप एक प्रारंभिक बिंदु से दूरी में रुचि रखते हैं (उदाहरण के लिए, 1 जनवरी 2015), और आप इसे महीनों में मापना चाहते हैं, तो मैं इसे महीने 1 के रूप में कोड करूँगा (जनवरी 1-31, 2015 के लिए), 2 (फरवरी 1-28, 2015), 3, 4, 5, 6, आदि। चूंकि आरंभ की तारीखों के बीच की दूरी लगभग समान होती है, यह एक सीधे निरंतर प्रारूप में समय की दूरी का प्रतिनिधित्व करता है। और मैं निरंतर कहता हूं क्योंकि आप महीने 6.5 कह सकते हैं और यह जान सकते हैं कि यह जून, 2015 के माध्यम से आधा है, फिर आपको वास्तविक तिथि कोडिंग के बारे में चिंता करने की आवश्यकता नहीं है और आप अपने सभी विशिष्ट वर्गीकरण विधियों का उपयोग कर सकते हैं।

यदि आप दिनों में मापना चाहते हैं, तो मुझे पता है कि MySql का 'to_days' फ़ंक्शन है, यदि आप ऐसा करते हैं कि वर्गीकरण से पहले डेटा खींचने के लिए उपयोग करें। अजगर के पास शायद कुछ ऐसा ही है, या मॉर्क द्वारा सुझाए गए यूनिक्स-टाइम प्रारूप का उपयोग करें।

उम्मीद है की यह मदद करेगा!


1

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


1

मुझे नहीं पता कि यह एक सामान्य / सर्वोत्तम अभ्यास है, लेकिन यह इस मामले को देखने का एक और बिंदु है।

यदि आपके पास है, तो हम कहते हैं, एक तारीख, आप प्रत्येक क्षेत्र को "निरंतर चर" के बजाय "श्रेणी चर" के रूप में मान सकते हैं। दिन का सेट {1, 2 ..., 31} में एक मान होगा, महीने का मूल्य {1, ..., 12} में होगा और वर्ष के लिए, आप एक न्यूनतम और अधिकतम मूल्य चुनते हैं। और एक सेट का निर्माण।

फिर, दिनों, महीनों और वर्षों के विशिष्ट संख्यात्मक मान डेटा में रुझानों को खोजने के लिए उपयोगी नहीं हो सकते हैं, संख्यात्मक मानों को सांकेतिक शब्दों में बदलना करने के लिए एक द्विआधारी प्रतिनिधित्व का उपयोग करें, प्रत्येक बिट एक विशेषता है। उदाहरण के लिए, 5 महीने 0 0 0 0 1 0 0 0 0 0 0 0(11 0 की 1 ए 5 वीं स्थिति में, प्रत्येक बिट एक विशेषता है) होगा।

इसलिए, उदाहरण के लिए, "वर्ष के सेट" में 10 साल, एक तारीख को 43 विशेषताओं (= 31 + 12 + 10) के वेक्टर में बदल दिया जाएगा। "विरल वैक्टर" का उपयोग करते हुए, सुविधाओं की मात्रा में समस्या नहीं होनी चाहिए।

कुछ ऐसा ही समय डेटा, सप्ताह के दिन, महीने के दिन के लिए किया जा सकता है ...

यह सब उस सवाल पर निर्भर करता है जिसे आप चाहते हैं कि आपका मशीन लर्निंग मॉडल जवाब दे।


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

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

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

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

@PacoBarter ने कहा, एक्टुआल ने कहा कि वन-हॉट एन्कोडिंग श्रेणियों के बीच की अलग-अलग दूरी को नजरअंदाज करती है। यह नहीं है कि आसानी से निपटने में सक्षम हैं क्योंकि ये सुविधाएँ आंतरिक रूप से चरण की जानकारी हैं, जबकि अधिकांश मशीन लर्निंग मॉडल में कोई चरण प्रकार इनपुट नहीं है। दूरी के मैट्रिक्स पर कुछ DIY हालांकि कर सकते हैं।
plpopk

0

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

सलाह : पारंपरिक सांख्यिकीय पूर्वानुमान रणनीतियों को पहले देखें (यानी घातांक चौरसाई, SARIMAX या गतिशील प्रतिगमन) भविष्यवाणी प्रदर्शन के लिए आधार रेखा के रूप में। यद्यपि मशीन लर्निंग ने कई प्रकार के अनुप्रयोगों के लिए कई बार वादे किए हैं, कई बार श्रृंखला के लिए कोशिश की गई है और सही सांख्यिकीय तरीके हैं जो आपके आवेदन के लिए बेहतर सेवा प्रदान कर सकते हैं। मैं आपका ध्यान हाल के दो लेखों की ओर आकर्षित करूंगा:

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

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

चीयर्स,

सांख्यिकीय पूर्वानुमान सीखने के लिए संसाधन : मैं यहां रोब जे ह्यंडमैन द्वारा मुफ्त पाठ्यपुस्तक की समीक्षा करके शुरू करूंगा: https://otexts.org/fpp2/ । पाठ एक R पैकेज पर आधारित है जिसे आप आसानी से अपने विश्लेषण में शामिल कर सकते हैं: https://otexts.org/fpp2/appendix-using-r.html । अंत में, कृपया यहां दिए गए विवरण के रूप में क्रॉस सेक्शनल क्रॉस वेलिडेशन और टाइम सीरीज़ क्रॉस वेलिडेशन के बीच अंतर के बारे में पता करें: https://robjhyndman.com/hyndsight/tscv/

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