मुख्य सामग्री पर जाएँ

टाइम सीरीज़ फोरकास्टिंग ट्यूटोरियल

टाइम सीरीज़ फोरकास्टिंग पर एक विस्तृत मार्गदर्शिका। Python और सहायक फ़्रेमवर्क का उपयोग करना सीखें। इसमें शामिल सांख्यिकीय मॉडलिंग के बारे में जानें।
· 15 मि॰ पढ़ें

AI के साथ खोजें

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

नीचे टाइम सीरीज़ डेटा का एक उदाहरण है जो संयुक्त राज्य अमेरिका में CDC को रिपोर्ट किए गए COVID-19 मामलों की संख्या दिखाता है। x-अक्ष समय के गुजरने को दर्शाता है और y-अक्ष COVID-19 मामलों की संख्या (हज़ारों में) को दर्शाता है।


CDC को रिपोर्ट किए गए संयुक्त राज्य अमेरिका में COVID-19 मामलों की संख्या दिखाता टाइम सीरीज़ डेटा

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


सबसे अधिक COVID-19 मामलों वाले देशों का ट्रैक करना

क्रॉस-सेक्शनल और टाइम सीरीज़ डेटा के बीच अंतर करना बहुत कठिन नहीं है क्योंकि दोनों के विश्लेषण के उद्देश्य काफी अलग होते हैं। हमारे उदाहरणों में, हमने पहले समय की एक अवधि में COVID-19 मामलों का ट्रैक किया, उसके बाद एक निश्चित समयावधि में देश के अनुसार COVID-19 मामलों का विश्लेषण किया।

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

टाइम-सीरीज़ और क्रॉस-सेक्शनल डेटा का विश्लेषण करते समय उद्देश्य अलग होते हैं, और वास्तविक-जीवन का डेटासेट प्रायः दोनों का एक मिश्रण होता है।

टाइम सीरीज़ फोरकास्टिंग क्या है?

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

कंपनियां कई कारणों से भविष्य के मानों का पूर्वानुमान लगाना चाहती हैं, जैसे GDP, मासिक बिक्री, इन्वेंटरी, बेरोज़गारी, और वैश्विक तापमान:

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

टाइम सीरीज़ फोरकास्टिंग के प्रकार

टाइम सीरीज़ फोरकास्टिंग के तीन प्रकार होते हैं। किसका उपयोग करना है, यह आपके डेटा के प्रकार और उपयोग-केस पर निर्भर करता है:

यूनिवेरिएट फोरकास्ट

यूनिवेरिएट टाइम सीरीज़, जैसा कि नाम से स्पष्ट है, एक एकल समय-निर्भर चर वाली श्रृंखला है। उदाहरण के लिए, यदि आप किसी क्षेत्र के प्रति घंटा तापमान के मान ट्रैक कर रहे हैं और ऐतिहासिक तापमान का उपयोग करके भविष्य के तापमान का पूर्वानुमान लगाना चाहते हैं, तो यह यूनिवेरिएट टाइम सीरीज़ फोरकास्टिंग है। आपका डेटा कुछ इस तरह दिख सकता है:

यूनिवेरिएट फोरकास्ट

मल्टिवेरिएट फोरकास्ट

दूसरी ओर, मल्टिवेरिएट टाइम सीरीज़ में एक से अधिक समय-निर्भर चर होते हैं। प्रत्येक चर न केवल अपने पिछले मानों पर निर्भर होता है, बल्कि अन्य चरों पर भी कुछ निर्भरता रखता है। इस निर्भरता का उपयोग भविष्य के मानों का पूर्वानुमान लगाने के लिए किया जाता है।

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

मल्टिवेरिएट फोरकास्ट

आप अभी भी भविष्य के लिए तापमान का पूर्वानुमान लगा रहे हैं, लेकिन अब आप अपने फोरकास्ट में अन्य उपलब्ध जानकारी का उपयोग कर सकते हैं क्योंकि हम मानते हैं कि तापमान इन कारकों पर भी निर्भर होगा।

मल्टिवेरिएट टाइम सीरीज़ फोरकास्टिंग इमेज स्रोत: Van Nguyen

जब हम मल्टिवेरिएट टाइम सीरीज़ फोरकास्टिंग से निपटते हैं, तो इनपुट चर दो प्रकार के हो सकते हैं:

  • एक्सोजेनस: ऐसे इनपुट चर जो अन्य इनपुट चरों से प्रभावित नहीं होते और जिन पर आउटपुट चर निर्भर करता है।
  • एंडोजेनस: ऐसे इनपुट चर जो अन्य इनपुट चरों से प्रभावित होते हैं और जिन पर आउटपुट चर निर्भर करता है।

यह ट्यूटोरियल कई क्लासिकल मॉडलों पर चर्चा करेगा, लेकिन उन सभी में मल्टिवेरिएट टाइम सीरीज़ फोरकास्टिंग का समर्थन नहीं है। ऐसी स्थितियों में, मशीन लर्निंग मदद करती है क्योंकि आप किसी भी टाइम सीरीज़ फोरकास्टिंग समस्या को रिग्रेशन के साथ मॉडल कर सकते हैं। हम आगे इस ट्यूटोरियल में इसका एक उदाहरण देखेंगे।

टाइम सीरीज़ फोरकास्टिंग के तरीके

टाइम सीरीज़ फोरकास्टिंग को व्यापक रूप से निम्नलिखित श्रेणियों में बांटा जा सकता है:

  • क्लासिकल / सांख्यिकीय मॉडल — मूविंग एवरेज, एक्सपोनेंशियल स्मूथिंग, ARIMA, SARIMA, TBATS
  • मशीन लर्निंग — लीनियर रिग्रेशन, XGBoost, रैंडम फॉरेस्ट, या कोई भी ML मॉडल रिडक्शन तरीकों के साथ
  • डीप लर्निंग — RNN, LSTM

यह ट्यूटोरियल पहले दो तरीकों पर केंद्रित है: क्लासिकल/सांख्यिकीय मॉडल और मशीन लर्निंग। डीप लर्निंग तरीके इस ट्यूटोरियल के दायरे से बाहर हैं।

सांख्यिकीय मॉडल

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

ARIMA

ARIMA टाइम सीरीज़ फोरकास्टिंग के लिए सबसे लोकप्रिय क्लासिकल तरीकों में से एक है। यह ऑटोरेग्रेसिव इंटीग्रेटेड मूविंग एवरेज के लिए खड़ा है और ऐसा मॉडल है जो दिए गए टाइम सीरीज़ का पूर्वानुमान उसी के पिछले मानों, यानी उसके अपने लैग्स और लैग्ड फोरकास्ट त्रुटियों के आधार पर करता है। ARIMA में तीन घटक होते हैं:

  • ऑटोरेग्रेसन (AR): ऐसा मॉडल जो किसी बदलते हुए चर को दर्शाता है जो अपने ही लैग्ड या पूर्व मानों पर रिग्रेस करता है।
  • इंटीग्रेटेड (I): कच्चे प्रेक्षणों को डिफरेंसिंग कर टाइम सीरीज़ को स्टेशनरी बनाने का प्रतिनिधित्व करता है (अर्थात, डेटा मानों को उनके और उनके पिछले मानों के अंतर से बदल दिया जाता है)।
  • मूविंग एवरेज (MA): किसी प्रेक्षण और मूविंग एवरेज मॉडल से प्राप्त अवशिष्ट त्रुटि के बीच निर्भरता को शामिल करता है जो लैग्ड प्रेक्षणों पर लागू होता है।

ARIMA के "AR" भाग का अर्थ है कि रुचि का विकसित होता चर अपने ही लैग्ड (यानी पूर्व में देखे गए) मानों पर रिग्रेस होता है। "MA" भाग इंगित करता है कि रिग्रेशन त्रुटि वास्तव में त्रुटि पदों का एक रैखिक संयोजन है जिनके मान वर्तमान और अतीत के विभिन्न समयों पर हुए थे। "I" ("इंटीग्रेटेड" के लिए) इंगित करता है कि डेटा मानों को उनके और उनके पिछले मानों के अंतर से बदल दिया गया है (और यह डिफरेंसिंग प्रक्रिया एक से अधिक बार की जा सकती है)। इन सभी विशेषताओं का उद्देश्य मॉडल को डेटा के अनुरूप यथासंभव बेहतर बनाना है।

SARIMA

ARIMA का एक विस्तार जो श्रृंखला के मौसमी घटक का प्रत्यक्ष मॉडलिंग समर्थन करता है, SARIMA कहलाता है। ARIMA मॉडल की एक समस्या यह है कि यह मौसमी डेटा का समर्थन नहीं करता। यानी एक ऐसी टाइम सीरीज़ जिसमें दोहरावदार चक्र हो। ARIMA ऐसे डेटा की अपेक्षा करता है जो या तो मौसमी न हो या जिससे मौसमी घटक हटा दिया गया हो, जैसे मौसमी डिफरेंसिंग के माध्यम से। SARIMA श्रृंखला के मौसमी घटक के लिए ऑटोरेग्रेसन (AR), डिफरेंसिंग (I) और मूविंग एवरेज (MA) निर्दिष्ट करने हेतु तीन नए हाइपरपैरामीटर्स जोड़ता है।

SARIMA मॉडल का उपयोग करके फोरकास्ट SARIMA मॉडल का उपयोग करके फोरकास्ट

एक्सपोनेंशियल स्मूथिंग

एक्सपोनेंशियल स्मूथिंग यूनिवेरिएट डेटा के लिए टाइम सीरीज़ फोरकास्टिंग की एक विधि है। इसे ट्रेंड या मौसमी घटक वाले डेटा का समर्थन करने के लिए विस्तारित किया जा सकता है। यह लोकप्रिय ARIMA परिवार के मॉडलों का एक विकल्प हो सकता है।

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

  • सिंपल (सिंगल) एक्सपोनेंशियल स्मूथिंग घातीय रूप से घटते वज़नों के साथ वेटेड मूविंग एवरेज का उपयोग करता है।
  • होल्ट का एक्सपोनेंशियल स्मूथिंग आमतौर पर ट्रेंड दिखाने वाले डेटा को संभालने में अधिक विश्वसनीय होता है।
  • ट्रिपल एक्सपोनेंशियल स्मूथिंग (जिसे मल्टिप्लिकेटिव होल्ट-विन्टर्स भी कहते हैं) पराबोलिक ट्रेंड या ट्रेंड और मौसमी पैटर्न दोनों दिखाने वाले डेटा के लिए अधिक विश्वसनीय होता है।

सिंगल ES, डबल ES, और टू-स्टेज EWMA के बीच तुलना के परिणाम सिंगल ES, डबल ES, और टू-स्टेज EWMA के बीच तुलना के परिणाम

TBATS

TBATS मॉडल बहु-मौसमीता वाले टाइम सीरीज़ डेटा के लिए होते हैं। उदाहरण के लिए, रिटेल बिक्री डेटा में दैनिक, साप्ताहिक और वार्षिक पैटर्न हो सकते हैं।

TBATS में, मूल टाइम सीरीज़ पर Box-Cox रूपांतरण लागू किया जाता है, और फिर इसे एक्सपोनेंशियल स्मूथ्ड ट्रेंड, मौसमी घटक और ARMA घटक के रैखिक संयोजन के रूप में मॉडल किया जाता है।

TBATS का उपयोग करके फोरकास्ट TBATS का उपयोग करके फोरकास्ट

मशीन लर्निंग

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

इस ट्यूटोरियल के लिए, मैंने US एयरलाइन यात्रियों का डेटासेट इस्तेमाल किया है, जिसे Kaggle से डाउनलोड किया जा सकता है।

डेटासेट का नमूना

हम "Date" कॉलम से माह, वर्ष, वर्ष का सप्ताह आदि जैसे फीचर निकाल सकते हैं। उदाहरण देखें:

# extract month and year from dates
data['Month'] = [i.month for i in data['Date']]
data['Year'] = [i.year for i in data['Date']]

# create a sequence of numbers
data['Series'] = np.arange(1,len(data)+1)

# drop unnecessary columns and re-arrange
data.drop(['Date', 'MA12'], axis=1, inplace=True)
data = data[['Series', 'Year', 'Month', 'Passengers']]

# check the head of the dataset
data.head()

फीचर एक्सट्रैक्शन के बाद सैंपल पंक्तियाँ फीचर एक्सट्रैक्शन के बाद सैंपल पंक्तियाँ

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

# split data into train-test set
train = data[data['Year'] < 1960]
test = data[data['Year'] >= 1960]

# check shape
train.shape, test.shape
>>> ((132, 4), (12, 4))

अब जब हमने ट्रेन-टेस्ट-स्प्लिट कर लिया है, तो हम ट्रेन डेटा पर मशीन लर्निंग मॉडल प्रशिक्षित करने, टेस्ट डेटा पर उसका स्कोर निकालने और मॉडल का प्रदर्शन मूल्यांकित करने के लिए तैयार हैं। इस उदाहरण में, मैं PyCaret का उपयोग करूंगा; यह Python में एक ओपन-सोर्स, लो-कोड मशीन लर्निंग लाइब्रेरी है जो मशीन लर्निंग वर्कफ़्लो को स्वचालित करती है। PyCaret का उपयोग करने के लिए, आपको इसे pip से इंस्टॉल करना होगा।

# install pycaret
pip install pycaret

यदि आपको इंस्टॉलेशन के दौरान किसी मदद की आवश्यकता हो, तो कृपया आधिकारिक दस्तावेज़ देखें।

मान लेते हैं आपने PyCaret सफलतापूर्वक इंस्टॉल कर लिया है:

# import the regression module
from pycaret.regression import *

# initialize setup
s = setup(data = train, test_data = test, target = 'Passengers', fold_strategy = 'timeseries', numeric_features = ['Year', 'Series'], fold = 3, transform_target = True, session_id = 123)

अब मशीन लर्निंग मॉडल ट्रेन करने के लिए, आपको बस एक पंक्ति चलानी है:

best = compare_models(sort = 'MAE')

compare_models का आउटपुट compare_models का आउटपुट

मीन एब्सोल्यूट एरर (MAE) के आधार पर 3-फोल्ड क्रॉस-वैलिडेशन से सर्वश्रेष्ठ मॉडल लीस्ट एंगल रिग्रेशन निकला। अब हम इस मॉडल का उपयोग भविष्यवाणी के लिए कर सकते हैं। इसके लिए हमें भविष्य में "X वेरिएबल" बनाने होंगे। यह भविष्य की तिथियां बनाकर और उनसे फीचर निकालकर किया जा सकता है।

चूंकि हमने अपना मॉडल 1960 तक के डेटा पर प्रशिक्षित किया है, तो चलिए 1965 तक अगले पांच वर्षों की भविष्यवाणी करते हैं। अंतिम मॉडल का उपयोग कर भविष्य की भविष्यवाणियां उत्पन्न करने के लिए, हमें पहले भविष्य की तिथियों पर Month, Year, Series कॉलम से युक्त एक डेटासेट बनाना होगा। नीचे दिया गया कोड भविष्य का "X" डेटासेट बनाता है।

future_dates = pd.date_range(start = '1961-01-01', end = '1965-01-01', freq = 'MS')
future_df = pd.DataFrame()
future_df['Month'] = [i.month for i in future_dates]
future_df['Year'] = [i.year for i in future_dates]    
future_df['Series'] = np.arange(145,(145+len(future_dates)))
future_df.head()

future_df से सैंपल पंक्तियाँ future_df से सैंपल पंक्तियाँ

अब हम future_df का उपयोग करके भविष्यवाणी कर सकते हैं:

predictions_future = predict_model(best, data=future_df)
predictions_future.head()

predictions_future.head() का आउटपुट predictions_future.head() का आउटपुट

और अब हम इसे प्लॉट कर सकते हैं:

concat_df = pd.concat([data,predictions_future], axis=0)
concat_df_i = pd.date_range(start='1949-01-01', end = '1965-01-01', freq = 'MS')
concat_df.set_index(concat_df_i, inplace=True)
fig = px.line(concat_df, x=concat_df.index, y=["Passengers", "Label"], template = 'plotly_dark')
fig.show()

वास्तविक (1949–1960) और अनुमानित (1961–1964) US एयरलाइन यात्री वास्तविक (1949–1960) और अनुमानित (1961–1964) US एयरलाइन यात्री

यहाँ कुछ महत्वपूर्ण बातें नोट करने लायक हैं। जब भी आप यूनिवेरिएट टाइम सीरीज़ से निपटते हैं, तो आप उन्हें हमेशा रिग्रेशन समस्याओं में बदलकर इस उदाहरण की तरह हल कर सकते हैं। हालांकि, आपको क्रॉस-वैलिडेशन के बारे में सावधान रहना होगा। आप टाइम-सीरीज़ मॉडलों पर रैंडम क्रॉस-वैलिडेशन नहीं कर सकते और आपको टाइम-सीरीज़ उपयुक्त तकनीकों का उपयोग करना चाहिए। इस उदाहरण में, PyCaret scikit-learn लाइब्रेरी के TimeSeriesSplit का उपयोग करता है।

फोरकास्टिंग के लिए Python फ़्रेमवर्क

Facebook Prophet

Prophet फेसबुक की कोर डेटा साइंस टीम द्वारा जारी ओपन-सोर्स सॉफ़्टवेयर है। यह CRAN और PyPI पर डाउनलोड के लिए उपलब्ध है।

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

इसके बारे में अधिक जानने के लिए, इस लिंक को देखें।

FB Prophet का उपयोग करके फोरकास्ट FB Prophet का उपयोग करके फोरकास्ट

sktime

sktime टाइम सीरीज़ के साथ मशीन लर्निंग के लिए एक ओपन-सोर्स, एकीकृत फ़्रेमवर्क है। यह टाइम सीरीज़ मशीन लर्निंग कार्यों की एक विस्तृत शृंखला के लिए आसान, लचीला और मॉड्यूलर प्लेटफ़ॉर्म प्रदान करता है। यह scikit-learn संगत इंटरफेस और मॉडल कंपोज़िशन टूल्स देता है, जिसका लक्ष्य पूरे इकोसिस्टम को अधिक उपयोगी और इंटरऑपरेबल बनाना है।

sktime sktime के बारे में अधिक जानने के लिए यह लिंक देखें।

pmdarima

Pmdarima एक सांख्यिकीय लाइब्रेरी है जो Python की टाइम सीरीज़ विश्लेषण क्षमताओं में खाली स्थान को भरने के लिए बनाई गई है। इसमें शामिल हैं:

  • R के auto.arima के समकक्ष कार्यक्षमता
  • स्टेशनैरिटी और सीज़नैलिटी के सांख्यिकीय परीक्षणों का संग्रह
  • मौसमी टाइम सीरीज़ डीकम्पोज़िशन
  • क्रॉस-वैलिडेशन यूटिलिटीज
  • प्रोटोटाइपिंग और उदाहरणों के लिए इन-बिल्ट टाइम सीरीज़ डेटासेट का समृद्ध संग्रह

pmdarima के बारे में अधिक जानने के लिए यह पेज देखें।

Kats

Kats फेसबुक का एक और शानदार ओपन-सोर्स प्रोजेक्ट है, जिसे उनकी इन्फ्रास्ट्रक्चर डेटा साइंस टीम ने जारी किया है। यह PyPI पर डाउनलोड के लिए उपलब्ध है।

Kats टाइम-सीरीज़ डेटा का विश्लेषण करने का टूलकिट है; एक हल्का, उपयोग में आसान और सामान्यीकृत फ़्रेमवर्क जो टाइम सीरीज़ विश्लेषण करता है। Kats का उद्देश्य टाइम सीरीज़ विश्लेषण के लिए एक वन-स्टॉप शॉप प्रदान करना है, जिसमें डिटेक्शन, फोरकास्टिंग, फीचर एक्सट्रैक्शन/एम्बेडिंग, और मल्टिवेरिएट विश्लेषण आदि शामिल हैं।

KATS का उपयोग करके फोरकास्ट KATS का उपयोग करके फोरकास्ट

KATS के बारे में अधिक जानने के लिए यह लिंक देखें।

Orbit

Orbit Uber का एक शानदार ओपन-सोर्स प्रोजेक्ट है। यह Bayesian टाइम सीरीज़ फोरकास्टिंग के लिए एक Python लाइब्रेरी है। यह टाइम सीरीज़ कार्यों के लिए परिचित और सहज initialize-fit-predict इंटरफ़ेस प्रदान करता है, जबकि अंदरूनी तौर पर प्रॉबैबिलिस्टिक प्रोग्रामिंग भाषाओं का उपयोग करता है।

Orbit का उपयोग करके फोरकास्ट Orbit का उपयोग करके फोरकास्ट

Orbit के बारे में अधिक जानने के लिए यह लिंक देखें।

PyCaret

PyCaret Python में एक ओपन-सोर्स, लो-कोड मशीन लर्निंग लाइब्रेरी है जो मशीन लर्निंग वर्कफ़्लो को स्वचालित करती है। PyCaret के साथ, आप कोडिंग में कम और विश्लेषण में अधिक समय बिताते हैं। आप अपना मॉडल प्रशिक्षित कर सकते हैं, उसका विश्लेषण कर सकते हैं, पहले से तेज़ी से इटरेट कर सकते हैं, और उसे तुरंत एक REST API के रूप में डिप्लॉय कर सकते हैं या एक सरल फ्रंट-एंड ML ऐप बना सकते हैं—वह भी अपने पसंदीदा नोटबुक से।

PyCaret टाइम सीरीज़ मॉड्यूल आर्किटेक्चर। लीड डेवलपर निखिल गुप्ता द्वारा विकसित। PyCaret टाइम सीरीज़ मॉड्यूल आर्किटेक्चर। लीड डेवलपर निखिल गुप्ता द्वारा विकसित।

अगले भाग में, हम PyCaret लाइब्रेरी का उपयोग करते हुए एंड-टू-एंड टाइम-सीरीज़ फोरकास्टिंग कार्य का एक उदाहरण देखेंगे।

एंड-टू-एंड उदाहरण

PyCaret का टाइम सीरीज़ मॉड्यूल बीटा में उपलब्ध है, आप इसे pip से डाउनलोड कर सकते हैं।

pip install pycaret-ts-alpha

इस ट्यूटोरियल का लिंक Colab पर।

डेटासेट

यहाँ, हमने एयरलाइन डेटासेट का उपयोग किया है, जो PyCaret के डेटा रिपॉज़िटरी में भी उपलब्ध है।

from pycaret.datasets import get_data
data = get_data('airlineer')

डेटासेट

data.plot()

data.plot()

एक्सपेरिमेंट सेटअप

PyCaret में एक्सपेरिमेंट setup फ़ंक्शन से शुरू होते हैं। यह फ़ंक्शन सभी प्रीप्रोसेसिंग स्टेप्स, ट्रेन-टेस्ट-स्प्लिट, क्रॉस-वैलिडेशन रणनीति, और कुछ अन्य कार्यों का ध्यान रखता है।

from pycaret.time_series import *
s = setup(data, session_id = 123)

setup फ़ंक्शन का आउटपुट setup फ़ंक्शन का आउटपुट

एक्सप्लोरेटरी डेटा एनालिसिस (EDA)

यूनिवेरिएट टाइम-सीरीज़ डेटा के EDA के लिए, कुछ चीज़ें हैं जो आप कर सकते हैं और करनी चाहिए।

क्लासिकल और सांख्यिकीय मॉडलों के उपयोग के लिए, आप कुछ सांख्यिकीय परीक्षण चला सकते हैं। PyCaret में एक फ़ंक्शन है जो यह आपके लिए करता है।

check_stats()

check_stats फ़ंक्शन का आउटपुट check_stats फ़ंक्शन का आउटपुट

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

plot_model(plot = 'decomp_classical")

plot_model फ़ंक्शन का आउटपुट ## Model Training and Selection ## plot_model फ़ंक्शन का आउटपुट<c/entre> ## Model Training and Selection ## कई मॉडल ट्रेन करने और उनमें से एक चुनने के लिए, हम सिर्फ एक पंक्ति का कोड चलाते हैं। best = compare_models() compare_models फ़ंक्शन का आउटपुट compare_models फ़ंक्शन का आउटपुट

PyCaret ने टाइम-सीरीज़ उपयुक्त क्रॉस-वैलिडेशन का उपयोग करते हुए 25 से अधिक मॉडल ट्रेन किए हैं और उच्च से निम्न प्रदर्शन के क्रम में मॉडलों की सूची प्रस्तुत की है। इस डेटासेट के लिए इस एक्सपेरिमेंट में सर्वश्रेष्ठ मॉडल एक्सपोनेंशियल स्मूथिंग निकला, जिसका मीन एब्सोल्यूट एरर 7.781 है।

मॉडल विश्लेषण

इस मॉडल को भविष्य के लिए भविष्यवाणियां उत्पन्न करने हेतु डिप्लॉय करने से पहले, हम मॉडल की गुणवत्ता पर टिप्पणी करने के लिए कुछ विश्लेषणात्मक प्लॉट देख सकते हैं।

plot_model(best, plot = 'forecast', data_kwargs = {'fh': 24})

टाइम सीरीज़ फोरकास्ट प्लॉट टाइम सीरीज़ फोरकास्ट प्लॉट

plot_model(best, plot = 'residuals')

टाइम-सीरीज़ रेजिडुअल्स प्लॉट टाइम-सीरीज़ रेजिडुअल्स प्लॉट

plot_model(best, plot = 'insample')

टाइम-सीरीज़ इनसैंपल प्लॉट टाइम-सीरीज़ इनसैंपल प्लॉट

मॉडल डिप्लॉयमेंट

इस बिंदु पर, हम मॉडल को फ़ाइनलाइज़ कर उसे भविष्य के उपयोग के लिए सेव करने के लिए तैयार हैं।

# finalize model
final_best = finalize_model(best)

# save model
final_best = finalize_model(best)

मॉडल डिप्लॉयमेंट

इस फ़ाइल को वापस लोड करने और भविष्य के डेटा पर भविष्यवाणियां जनरेट करने के लिए:

# load model
loaded_model = load_model('my_best_model')

# generate predictions for the next 48 months
predict_model(loaded_model, fh = 48)

आउटपुट ट्रंकेटेड आउटपुट ट्रंकेटेड

निष्कर्ष

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

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

  • सांख्यिकीय मॉडल — एक्सपोनेंशियल स्मूथिंग, ARIMA, SARIMA, TBATS, आदि।
  • मशीन लर्निंग — लीनियर रिग्रेशन, XGBoost, रैंडम फॉरेस्ट, आदि।
  • डीप लर्निंग — RNN, LSTM

यदि आप टाइम सीरीज़ फोरकास्टिंग में अपना ज्ञान और कौशल आगे बढ़ाना चाहते हैं, तो Datacamp का यह बेहतरीन ट्रैक "Time Series with Python" देखें। इस ट्रैक में, आप pandas का उपयोग करके टाइम सीरीज़ डेटा में बदलाव करना, NumPy और statsmodels सहित सांख्यिकीय लाइब्रेरीज़ के साथ डेटा का विश्लेषण करना, और Matplotlib, SciPy, तथा seaborn का उपयोग करके अपनी विज़ुअलाइज़ेशन स्किल्स विकसित करना सीखेंगे। ट्रैक के अंत तक, आप ARIMA क्लास मॉडलों का उपयोग कर भविष्य का फोरकास्ट बनाना और मशीन लर्निंग मॉडलों का उपयोग कर भविष्यवाणियां और इनसाइट्स जनरेट करना जानेंगे।

विषय