मल्टी-डाइमेंशनल और मल्टीवीरेट टाइम-सीरीज़ का पूर्वानुमान (RNN / LSTM) केरस


12

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

मेरा डेटासेट:

  • कई शहर
  • जिसके लिए मेरे पास तापमान, कार यातायात, आर्द्रता के बारे में जानकारी है
  • पिछले 2 वर्षों के लिए (प्रत्येक दिन के लिए एक रिकॉर्ड)

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

मैं किस बारे में भ्रमित हूं: यदि मेरे पास 2 शहर हैं, जिसके लिए मैंने 365 दिनों के लिए 3 सुविधाएँ दर्ज की हैं। मुझे अपने इनपुट को कैसे आकार देना चाहिए ताकि मॉडल इन दो शहरों के लिए 365 दिनों के लिए पूर्वानुमान का उत्पादन कर सके (यानी 365 दिनों के लिए तापमान की 2 श्रृंखला)?

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

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

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


1
यहाँ इस विषय पर एक अच्छा ट्यूटोरियल है: tensorflow.org/beta/tutorials/text/time_series
CubeBot88

जवाबों:


13

एक LSTM के लिए इनपुट आकार होना चाहिए (num_samples, num_time_steps, num_features)। आपके उदाहरण के मामले में, इनपुट के रूप में दोनों शहरों को मिलाकर num_features2x3 = 6 होगा।

यदि आप अपने सभी 365 समय कदमों को एक नमूने में रखते हैं, तो पहला आयाम 1 - एक एकल नमूना होगा! आप कुल डेटा बिंदुओं का उपयोग करके भी स्वच्छता जांच कर सकते हैं। आपके पास 2 शहर हैं, जिनमें से प्रत्येक में 365 समय-चरण और 3 विशेषताएं हैं: 2x365x3 = 2190। यह स्पष्ट रूप से 1x365x6 (जैसा कि मैंने ऊपर कहा गया है) के समान है - इसलिए यह एक संभावना होगी (केरस चलेगा) - लेकिन यह स्पष्ट रूप से सभी को सामान्य बनाना नहीं सीखेगा, केवल इसे एक नमूना दे।

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

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

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


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

आपका स्वागत है! डीप नेट हमेशा अधिक डेटा से लाभान्वित होते हैं। ऊपर दिए गए मेरे सुझावों में बहुत सारे पैरामीटर होंगे- केवल 365 बिंदुओं के साथ, आप उन शहरों को ओवरफिट करने का जोखिम चलाते हैं (अर्थात कोई सामान्यीकरण नहीं)! आप डेटा वृद्धि की कोशिश कर सकते हैं- कैसे , आपके डेटा पर निर्भर करता है। यदि आपके पास पर्याप्त डेटा था, तो आप अच्छी तरह से सामान्यीकरण कर सकते हैं - मैं Word2Vec प्रकार के परिणाम (पाठ विश्लेषण / एनएलपी में आम) की कल्पना कर सकता हूं , जहां चर के बीच संबंध व्याख्यात्मक हो जाते हैं। जानकारी के लिए इसे देखें , और यह अधिक अंतर्ज्ञान / मज़े के लिए । आपके परिणाम मौसम के नक्शे की साजिश कर सकते हैं!
n1k31t4

हाँ समझ में आता है, इसलिए कुछ रोलिंग विंडोज़ काम कर रही हैं तो "अधिक डेटा" को छाँट देगी अगर मैं समझ गया कि आपने क्या कहा?
बैस्टियन

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

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