Vertex AI और BigQuery ML की मदद से टाइम सीरीज़ का अनुमान लगाना

1. खास जानकारी

इस लैब में, आपको TensorFlow की मदद से टाइम सीरीज़ का पूर्वानुमान मॉडल बनाने का तरीका बताया जाएगा. इसके बाद, यह भी बताया जाएगा कि इन मॉडल को Vertex AI की मदद से कैसे डिप्लॉय किया जा सकता है.

आपने क्या सीखा

आपको, इनके बारे में जानकारी मिलेगी:

  • डेटा में बदलाव करना, ताकि इसका इस्तेमाल एमएल मॉडल में किया जा सके
  • डेटा विज़ुअलाइज़ करना और उसके बारे में जानना
  • टाइम सीरीज़ अनुमान लगाने का मॉडल बनाने के लिए, BigQuery ML का इस्तेमाल करना
  • एलएसटीएम और सीएनएन आर्किटेक्चर का इस्तेमाल करके, TensorFlow की मदद से, टाइम सीरीज़ का पूर्वानुमान लगाने वाला मॉडल बनाएं

2. टाइम-सीरीज़ के अनुमान के बारे में जानकारी

इस कोडलैब का फ़ोकस, Google Cloud Platform का इस्तेमाल करके टाइम सीरीज़ अनुमान लगाने की तकनीकों को लागू करने के तरीके पर है. यह किसी टाइम सीरीज़ के अनुमान के बारे में बताने वाला कोर्स नहीं है, लेकिन कॉन्सेप्ट के बारे में कम शब्दों में जानकारी देने से, हमें उपयोगकर्ताओं को काफ़ी मदद मिल सकती है.

टाइम सीरीज़ का डेटा

सबसे पहले जानते हैं कि टाइम सीरीज़ क्या है? यह एक डेटासेट है, जिसमें नियमित समय के अंतराल पर रिकॉर्ड किया गया डेटा मौजूद होता है. टाइम-सीरीज़ के डेटासेट में समय और कम से कम एक वैरिएबल, दोनों शामिल होते हैं. यह वैरिएबल समय पर निर्भर करता है.

85af6a1ff05c69f2.png

कॉम्पोनेंट

टाइम-सीरीज़ को इन कॉम्पोनेंट में बांटा जा सकता है:

  • रुझान: यह जानकारी मिलते-जुलते पैटर्न के हिसाब से ऊपर या नीचे की ओर जाती है
  • सीज़न के हिसाब से: किसी खास अवधि के दौरान दोहराया जाता है. जैसे, दिन, हफ़्ता, महीना, सीज़न वगैरह.
  • रैंडम तरीके से: कम समय में होने वाले उतार-चढ़ाव

सीज़न के हिसाब से कई लेयर हो सकती हैं. उदाहरण के लिए, कॉल सेंटर को हफ़्ते के कुछ खास दिनों के साथ-साथ महीने के हिसाब से भी कॉल की संख्या का पैटर्न दिख सकता है. अवशिष्ट को समय के अलावा अन्य वैरिएबल के ज़रिए समझाया जा सकता है.

6e8d45bbbbc388ec.png

स्टेशनरिटी

पूर्वानुमान के सबसे अच्छे नतीजों के लिए, टाइम सीरीज़ के डेटा को स्टेशनरी बनाया जाना चाहिए. इसमें मीन और वैरिएंस जैसे आंकड़ों की प्रॉपर्टी समय के साथ स्थिर रहती हैं. रॉ डेटा को ज़्यादा स्थिर बनाने के लिए, इसमें अलग-अलग तरीकों का इस्तेमाल किया जा सकता है.

उदाहरण के लिए, CO2 की मात्रा के नीचे के प्लॉट में, सालाना पैटर्न में बढ़ोतरी का ट्रेंड दिखाया गया है. ( सोर्स)

ab82857e2e7d0b89.png

लीनियर ट्रेंड को हटाने के बाद, यह डेटा अनुमान लगाने के लिए बेहतर हो जाता है, क्योंकि अब इसका माध्य लगातार बना रहता है.

c936381ab1095528.png

मशीन लर्निंग के लिए, टाइम सीरीज़ डेटा का इस्तेमाल करना

मशीन लर्निंग की समस्या में टाइम सीरीज़ डेटा इस्तेमाल करने के लिए, इसे बदलना ज़रूरी है. इससे पिछली वैल्यू का इस्तेमाल करके, आने वाले समय की वैल्यू का अनुमान लगाया जा सकता है. यह टेबल एक उदाहरण दिखाती है कि टारगेट का अनुमान लगाने के लिए, लैग्ड वैरिएबल कैसे बनाए जाते हैं.

d667a941dbd470f5.png

हमने कुछ बुनियादी बातों पर चर्चा कर ली है. चलिए, अब डेटा को एक्सप्लोर करने और अनुमान लगाने की सुविधा के बारे में बात करते हैं!

3. अपना Notebook का एनवायरमेंट सेटअप करें

अब जबकि हमने डेटा के बारे में कम शब्दों में जानकारी दी है, तो चलिए अब अपना मॉडल डेवलपमेंट एनवायरमेंट सेट अप करते हैं.

पहला चरण: एपीआई चालू करना

BigQuery कनेक्टर, BigQuery Storage API का इस्तेमाल करता है. कंसोल में BigQuery Storage API खोजें और अगर एपीआई फ़िलहाल बंद है, तो उसे चालू करें.

9895a2fd3cdf8f8c.png

दूसरा चरण: Vertex AI Workbench notebook बनाएं

अपने Cloud Console के Vertex AI Workbench सेक्शन पर जाएं और नई नोटबुक पर क्लिक करें. इसके बाद, बिना जीपीयू के नया TensorFlow Enterprise 2.x नोटबुक टाइप चुनें:

4e7b73eabf2bc061.png

डिफ़ॉल्ट विकल्पों का इस्तेमाल करें और फिर बनाएं पर क्लिक करें. इंस्टेंस बनाने के बाद, JupyterLab खोलें को चुनें:

18c9f3c462aafaee.png

इसके बाद, JupyterLab से Python 3 नोटबुक बनाएं:

58523671a252b95a.png

तीसरा चरण: लैब का कॉन्टेंट डाउनलोड करना

JupyterLab इंटरफ़ेस से नई टर्मिनल विंडो बनाएं: फ़ाइल -> नया -> टर्मिनल.

वहां से, इस निर्देश की मदद से सोर्स मटीरियल का क्लोन बनाएं:

git clone https://github.com/GoogleCloudPlatform/training-data-analyst

4. डेटा एक्सप्लोर करें और विज़ुअलाइज़ करें

इस सेक्शन में आपको:

  • ऐसी क्वेरी बनाएं जो डेटा को टाइम सीरीज़ में शामिल करे
  • जो वैल्यू मौजूद नहीं हैं उन्हें भरें
  • डेटा को विज़ुअलाइज़ करना
  • टाइम सीरीज़ को ट्रेंड और सीज़न के हिसाब से अलग-अलग कॉम्पोनेंट में बांटें

कदम 1

Vertex AI Workbench में, training-data-analyst/courses/ai-for-time-series/notebooks पर जाएं और 01-explore.ipynb को खोलें.

दूसरा चरण

Notebook के सभी सेल मिटाएं (बदलाव करें > सभी आउटपुट मिटाएं), पहले कुछ सेल में से किसी एक में इलाका, प्रोजेक्ट, और बकेट की सेटिंग बदलें. इसके बाद, सेल को एक-एक करके चलाएं.

चरण 3

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

55839e7bc0427915.png

5. BigQuery टाइम सीरीज़ के अनुमान के लिए मॉडल बनाना

इस सेक्शन में आपको:

  • टाइम सीरीज़ के इनपुट डेटा को BigQuery टेबल में इंपोर्ट करना
  • BQML सिंटैक्स का इस्तेमाल करके टाइम सीरीज़ मॉडल बनाना
  • अपने मॉडल के पैरामीटर और उनके सटीक होने का आकलन करने का तरीका जानें
  • अपने मॉडल का इस्तेमाल करके अनुमान लगाएं

कदम 1

हम अभी-अभी एक्सप्लोर किए गए CSV के रॉ डेटा की मदद से, एक BigQuery टेबल बनाने जा रहे हैं. चलिए, Notebook के एनवायरमेंट से CSV डाउनलोड करके शुरुआत करते हैं.

training-data-analyst/courses/ai-for-time-series/notebooks/data डायरेक्ट्री से, cta_ridership.csv पर राइट क्लिक करें. इसके बाद, उसे अपने लोकल एनवायरमेंट में डाउनलोड करें.

दूसरा चरण

इसके बाद, हम इस डेटा को BigQuery टेबल में अपलोड करेंगे.

कंसोल में BigQuery पर जाएं (इस लिंक को खोजकर या इसका इस्तेमाल करके):

649e7ab1c44b75e8.png

टेबल को नए या मौजूदा डेटासेट में जोड़ा जा सकता है. इससे मिलती-जुलती टेबल को ग्रुप में बांटा जा सकता है. अगर आपने पहले से डेटासेट नहीं बनाया है, तो नीचे बाएं कोने में मौजूद अपने प्रोजेक्ट पर क्लिक करें. इसके बाद, नीचे दाएं कोने में मौजूद डेटासेट बनाएं चुनें.

281b97020cd52f29.png

अपनी पसंद का कोई नाम चुनें, जैसे कि demo. डिफ़ॉल्ट नाम स्वीकार करें और जारी रखें.

उस डेटासेट को चुनने के बाद, नई टेबल बनाने के लिए नीचे दाएं कोने में टेबल बनाएं चुनें.

ad47810d44cfb289.png

टेबल बनाने के विकल्पों के लिए, इन्हें चुनें:

  • इससे टेबल बनाएं: अपलोड करें
  • फ़ाइल चुनें: cta_ridership.csv
  • टेबल का नाम: cta_ridership
  • स्कीमा: स्कीमा और इनपुट पैरामीटर का अपने-आप पता लगाने के लिए, बॉक्स पर सही का निशान लगाएं

213e4177e9e79544.png

चरण 3

अब हमारा मॉडल बनाने का समय आ गया है! BigQuery ML, एसक्यूएल की तरह एक आसान सिंटैक्स देता है. इसकी मदद से, कई तरह के मॉडल बनाए जा सकते हैं.

क्वेरी एडिटर में, इस क्वेरी में चिपकाएं या टाइप करें और अगर ज़रूरी हो, तो दोनों जगहों पर अपने डेटासेट के नाम से डेमो को बदलें:

CREATE OR REPLACE MODEL
  `demo.cta_ridership_model` OPTIONS(MODEL_TYPE='ARIMA',
    TIME_SERIES_TIMESTAMP_COL='service_date',
    TIME_SERIES_DATA_COL='total_rides',
    HOLIDAY_REGION='us') AS
SELECT
  service_date, total_rides
FROM
  `demo.cta_ridership`

आइए, इन बातों को समझने के लिए सिंटैक्स के मुख्य एलिमेंट के बारे में जानते हैं:

CREATE OR REPLACE MODEL
demo.cta_ridership_model

इस स्टेटमेंट से मॉडल बनता है. इस स्टेटमेंट के कई वैरिएंट होते हैं, जैसे कि CREATE MODEL, लेकिन हमने यहां एक मौजूदा मॉडल को उसी नाम से बदलना चुना है.

OPTIONS(MODEL_TYPE=‘ARIMA' ... )

यहां, हम मॉडल के लिए विकल्प तय करते हैं. पहला विकल्प, मॉडल टाइप है. ARIMA को चुनने से, टाइम सीरीज़ का पूर्वानुमान मॉडल बन जाएगा.

TIME_SERIES_TIMESTAMP_COL=‘service_date'

तारीख/समय की जानकारी वाला कॉलम

TIME_SERIES_DATA_COL=‘total_rides'

डेटा कॉलम

HOLIDAY_REGION=‘us'

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

AS SELECT ... FROM ...

इस सेक्शन में, वह इनपुट डेटा चुना जाता है जिसका इस्तेमाल हम मॉडल को ट्रेनिंग देने के लिए करेंगे.

क्वेरी में कई और विकल्प जोड़े जा सकते हैं. जैसे, अगर आपके पास एक से ज़्यादा टाइम सीरीज़ हैं, तो कॉलम तय करें या यह चुनना कि ARIMA मॉडल के पैरामीटर अपने-आप खोजे जाएं या नहीं. ज़्यादा जानकारी के लिए, टाइम सीरीज़ मॉडल के लिए मॉडल बनाएं स्टेटमेंट सिंटैक्स रेफ़रंस में ज़्यादा जानकारी पाएं.

चौथा चरण

आइए हमारे मॉडल के बारे में अधिक जानें. ट्रेनिंग पूरी होने के बाद, ज़रूरत पड़ने पर डेमो को बदलकर, दूसरी क्वेरी चलाएं:

SELECT
  *
FROM
  ML.EVALUATE(MODEL `demo.cta_ridership_model`)

चलिए, नतीजों को समझते हैं. हर लाइन में, आपको उम्मीदवार का मॉडल दिखेगा, जिसमें उसके पैरामीटर और आकलन के आंकड़े होंगे. नतीजे, AIC या Akaike जानकारी मानदंड के बढ़ते क्रम में दिखाए जाते हैं. इससे मॉडल की क्वालिटी के बारे में पता चलता है. इसलिए, पहली लाइन में मौजूद मॉडल का एआईसी सबसे कम है और इसे सबसे अच्छा मॉडल माना जाता है.

आपके पास ARIMA मॉडल के p, d, और q पैरामीटर को देखने का विकल्प होगा. साथ ही, इस मॉडल में पाया गया सीज़न भी दिखेगा. इस मामले में, टॉप मॉडल में हफ़्ते और साल, दोनों तरह के सीज़न शामिल हैं.

5b5b1e129c70a340.png

पांचवां चरण

अब हम ML.FORECAST फ़ंक्शन की मदद से अनुमान लगाने के लिए तैयार हैं!

यहां चिपकाएं/टाइप करें (अगर ज़रूरी हो, तो डेमो को बदलें):

SELECT
  *
FROM
  ML.FORECAST(MODEL `demo.cta_ridership_model`,
    STRUCT(7 AS horizon))

यह क्वेरी हमारे मॉडल का इस्तेमाल करके सिर्फ़ सात दिन पूरे होने का पूर्वानुमान लगाती है! हम नीचे दी गई सात पंक्तियां देख सकते हैं. अनुमान में एक कॉन्फ़िडेंस इंटरवल भी शामिल होता है. यह डिफ़ॉल्ट रूप से 0.95 पर सेट होता है, लेकिन क्वेरी में इसे कॉन्फ़िगर किया जा सकता है.

b8a7f22657dc2d27.png

बहुत बढ़िया: हमने कुछ BQML क्वेरी के साथ एक टाइम सीरीज़ मॉडल बनाया है.

6. पसंद के मुताबिक पूर्वानुमान मॉडल बनाएं

इस सेक्शन में आपको:

  • डेटा से आउटलायर हटाएं
  • कई चरणों में पूर्वानुमान लगाएं
  • टाइम सीरीज़ मॉडल में अतिरिक्त सुविधाएं शामिल करें
  • टाइम सीरीज़ का पूर्वानुमान लगाने के लिए, न्यूरल नेटवर्क आर्किटेक्चर के बारे में जानें: LSTM और CNN
  • हॉल्ट-विंटर एक्सपोनेन्शियल स्मूदिंग के साथ-साथ आंकड़ों वाले मॉडल के बारे में जानें
  • एन्सेंबल मॉडल

कदम 1

Vertex AI Workbench में, training-data-analyst/courses/ai-for-time-series/notebooks पर जाएं और 02-model.ipynb को खोलें.

दूसरा चरण

Notebook के सभी सेल मिटाएं (बदलाव करें > सभी आउटपुट मिटाएं), पहले कुछ सेल में से किसी एक में इलाका, प्रोजेक्ट, और बकेट की सेटिंग बदलें. इसके बाद, सेल को एक-एक करके चलाएं.

चरण 3

अब आपने notebook में कई मॉडल आर्किटेक्चर को एक्सप्लोर किया है: LSTM, CNN, और आंकड़ों वाले मॉडल. हर मॉडल के लिए, यह देखा जा सकता है कि टेस्ट डेटा के सामने मॉडल की परफ़ॉर्मेंस कैसी है:

a528df58f4e6d372.png

7. क्लाउड में ट्रेनिंग पाएं और अनुमान लगाएं

इस सेक्शन में आपको:

  • क्लाउड पर ट्रेनिंग के लिए, डेटा और मॉडल तैयार करना
  • AI Platform की ट्रेनिंग की मदद से, अपने मॉडल को ट्रेनिंग दें और काम की प्रोग्रेस मॉनिटर करें
  • AI Platform के अनुमानों की मदद से, मॉडल का इस्तेमाल करके अनुमान लगाना

कदम 1

Vertex AI Workbench में, training-data-analyst/courses/ai-for-time-series/notebooks पर जाएं और 03-cloud-training.ipynb को खोलें.

दूसरा चरण

Notebook के सभी सेल मिटाएं (बदलाव करें > सभी आउटपुट मिटाएं), पहले कुछ सेल में से किसी एक में इलाका, प्रोजेक्ट, और बकेट की सेटिंग बदलें. इसके बाद, सेल को एक-एक करके चलाएं.

चरण 3

पिछले सेक्शन में, हमने एक मॉडल को ट्रेनिंग दी और इसके साथ इसका अनुमान लगाया. यह सब एक वर्कबेंच नोटबुक में था. इस सेक्शन में, हमने बताया है कि अपने notebook से Vertex AI के लिए Python SDK कैसे इस्तेमाल करें, ताकि ट्रेनिंग और डिप्लॉयमेंट के लिए Vertex AI की सेवाओं का इस्तेमाल किया जा सके.

a3f6b5dc895a24fb.png

8. चुनौती

इस सेक्शन में, सीखे गए कॉन्सेप्ट को नए डेटासेट में लागू करने की कोशिश की जाएगी!

हम पूरे निर्देश नहीं देंगे, सिर्फ़ कुछ संकेत देंगे (अगर आपको उनकी ज़रूरत है!).

इसका लक्ष्य, न्यूयॉर्क से 311 सेवा अनुरोधों का अनुमान लगाना है. इन अनुरोधों में, ग़ैर-ज़रूरी आवाज़ों की शिकायत, स्ट्रीट लाइट से जुड़ी समस्याओं वगैरह के बारे में बताया जाता है.

कदम 1

आइए, डेटासेट को समझने से शुरुआत करते हैं.

सबसे पहले, City of New York 311 सेवा के अनुरोध डेटासेट को ऐक्सेस करें.

डेटा को बेहतर ढंग से जानने के लिए, डेटासेट की जानकारी में दी गई कुछ सैंपल क्वेरी आज़माएं:

  • आइसक्रीम ट्रक से जुड़े 311 अनुरोधों की संख्या कितनी है?
  • किन दिनों में पक्षों से जुड़े सबसे ज़्यादा 311 अनुरोध मिलते हैं?

BigQuery यूज़र इंटरफ़ेस (यूआई) में, डेटासेट ऐक्सेस करने का तरीका देखने के लिए, क्वेरी बनाएं चुनें. ध्यान दें कि चुने गए स्टेटमेंट के लिए bigquery-public-data.new_york_311.311_service_requests से क्वेरी की जा रही है.

दूसरा चरण

हम शुरू करने के लिए तैयार हैं. इस सेक्शन में, एक्सप्लोर करें और विज़ुअलाइज़ करें नोटबुक में बदलाव करें, ताकि इस डेटा के साथ काम किया जा सके.

हिंट

  • 01-explore.ipynb notebook का डुप्लीकेट बनाएं और उससे काम करना शुरू करें.
  • डेटा को एक्सप्लोर करने के लिए, यह क्वेरी आज़माएं:
from google.cloud import bigquery as bq

sql = """
SELECT * FROM `bigquery-public-data.new_york_311.311_service_requests` LIMIT 5
"""

client = bq.Client(project=PROJECT)
df = client.query(sql).to_dataframe()

df.head()
  • महीने के हिसाब से मामलों की संख्या जानने के लिए, इस क्वेरी का इस्तेमाल करें:
SELECT
  COUNT(unique_key) as y,
  DATE_TRUNC(DATE(created_date), month) as ds  
FROM `bigquery-public-data.new_york_311.311_service_requests`
GROUP by ds ORDER BY ds asc
  • कॉन्सटेंट सेक्शन में कॉलम वैरिएबल अपडेट करें. ऊपर दी गई क्वेरी में, टारगेट कॉलम y है और तारीख का कॉलम ds है. कोई अतिरिक्त सुविधा उपलब्ध नहीं है.
  • उस फ़ाइल का नाम बदलने के बारे में सोचें जिसमें आपको अगली लैब का डेटा एक्सपोर्ट करना है.
  • df.to_csv(YOUR-EXPORT-FILENAME, index=False) का इस्तेमाल करके डेटा एक्सपोर्ट करें

चरण 3

आइए, अब महीने के डेटा के साथ टाइम सीरीज़ मॉडल बनाते हैं.

संकेत:

  • 02-model.ipynb notebook का डुप्लीकेट बनाएं और उससे काम करना शुरू करें.
  • डेटासेट पैरामीटर को अपडेट करें:
  • अपने नए डेटासेट से मैच करने के लिए, target_col और ts_col पैरामीटर को अपडेट करें.
  • मॉडल पैरामीटर अपडेट करें:
  • महीने की फ़्रीक्वेंसी (महीने की शुरुआत का कोड 'MS' है)
  • इनपुट के चरण: 12 (लुकबैक विंडो 12 महीने की है)
  • आउटपुट के चरण: तीन (तीन महीने बाद का अनुमान)
  • सीज़न: 12 (सीज़न 12 महीने है)
  • अगर आपने पिछली notebook में इनपुट फ़ाइल का नाम बदला था, तो उसे बदलें.
  • अगर क्वेरी को महीने के बीच में चलाया जाता है, तो आखिरी महीने का कुल डेटा उम्मीद से काफ़ी कम होगा. इसलिए, इस लैब के लिए, डेटासेट से आखिरी महीने को इसका इस्तेमाल करके हटा दें: df = df[:-1]
  • डेटा में साफ़ तौर पर कोई आउटलायर नहीं दिख रहा है, इसलिए उन सेल को स्किप करें या उन पर टिप्पणी करें.
  • इस नए मॉडल के लिए LSTM यूनिट और CNN फ़िल्टर और कर्नेल का साइज़ अडजस्ट करें.

9. साफ़-सफ़ाई सेवा

अगर आपको इस notebook का इस्तेमाल जारी रखना है, तो हमारा सुझाव है कि इस्तेमाल में न होने पर इसे बंद कर दें. अपने Cloud Console में Workbench यूज़र इंटरफ़ेस (यूआई) से, नोटबुक चुनें और फिर बंद करें चुनें:

57213ef2edad9257.png

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

अपने Cloud Console में नेविगेशन मेन्यू का इस्तेमाल करके, स्टोरेज पर जाएं और अपने मॉडल ऐसेट को स्टोर करने के लिए बनाए गए दोनों बकेट को मिटाएं (चेतावनी: ऐसा तब ही करें, जब आपने सिर्फ़ इस लैब के लिए नए बकेट बनाए हों).