1. खास जानकारी
इस लैब में, आपको TensorFlow की मदद से टाइम-सीरीज़ का अनुमान लगाने वाला मॉडल बनाने का तरीका सीखने को मिलेगा. इसके बाद, आपको Vertex AI की मदद से इन मॉडल को डिप्लॉय करने का तरीका सीखने को मिलेगा.
आपको क्या सीखने को मिलेगा
आपको, इनके बारे में जानकारी मिलेगी:
- डेटा को इस तरह से बदलना कि उसका इस्तेमाल एमएल मॉडल में किया जा सके
- डेटा को विज़ुअलाइज़ करना और एक्सप्लोर करना
- टाइम-सीरीज़ के डेटा का अनुमान लगाने वाला मॉडल बनाने के लिए, BigQuery ML का इस्तेमाल करना
- एलएसटीएम और सीएनएन आर्किटेक्चर का इस्तेमाल करके, TensorFlow की मदद से टाइम-सीरीज़ का अनुमान लगाने वाला मॉडल बनाना
2. टाइम-सीरीज़ के अनुमान के बारे में जानकारी
इस कोडलैब में, Google Cloud Platform का इस्तेमाल करके, टाइम-सीरीज़ का अनुमान लगाने की तकनीकों को लागू करने के तरीके पर फ़ोकस किया गया है. यह सामान्य टाइम-सीरीज़ फ़ोरकास्टिंग कोर्स नहीं है. हालांकि, कॉन्सेप्ट के बारे में जानकारी देने वाला यह छोटा सा टूर, हमारे उपयोगकर्ताओं के लिए मददगार हो सकता है.
टाइम सीरीज़ डेटा
सबसे पहले, टाइम सीरीज़ क्या होती है? यह एक ऐसा डेटासेट है जिसमें डेटा को नियमित समयावधि पर रिकॉर्ड किया जाता है. टाइम-सीरीज़ डेटासेट में समय और कम से कम एक ऐसा वैरिएबल होता है जो समय पर निर्भर करता है.

कॉम्पोनेंट
टाइम-सीरीज़ को इन कॉम्पोनेंट में बांटा जा सकता है:
- ट्रेंड: इसमें अनुमान लगाया जा सकने वाला पैटर्न होता है, जो ऊपर या नीचे की ओर बढ़ता है
- सीज़नल: किसी खास अवधि में दोहराया जाता है, जैसे कि दिन, हफ़्ता, महीना, सीज़न वगैरह.
- रैंडम: बचे हुए उतार-चढ़ाव
सीज़न के हिसाब से मांग में होने वाले बदलाव की कई लेयर हो सकती हैं. उदाहरण के लिए, किसी कॉल सेंटर को हफ़्ते के कुछ दिनों और कुछ महीनों में कॉल की संख्या में पैटर्न दिख सकता है. समय के अलावा, अन्य वैरिएबल से भी रेसिड्युअल के बारे में जानकारी मिल सकती है.

स्टेशनैरिटी
पूर्वानुमान के बेहतर नतीजों के लिए, टाइम-सीरीज़ डेटा को स्टेशनरी बनाया जाना चाहिए. इसमें समय के साथ-साथ, औसत और विचरण जैसी सांख्यिकीय प्रॉपर्टी स्थिर होती हैं. रॉ डेटा को ज़्यादा स्थिर बनाने के लिए, अंतर और रुझान हटाने जैसी तकनीकों का इस्तेमाल किया जा सकता है.
उदाहरण के लिए, नीचे दिए गए CO2 के कॉन्संट्रेशन के प्लॉट में, हर साल दोहराए जाने वाला पैटर्न दिखाया गया है. साथ ही, इसमें ऊपर की ओर बढ़ता रुझान भी दिखाया गया है. ( सोर्स)

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

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

अब हमने कुछ बुनियादी बातों के बारे में जान लिया है. इसलिए, आइए डेटा एक्सप्लोर करना और अनुमान लगाना शुरू करें!
3. Notebook का एनवायरमेंट सेट अप करना
अब हमने डेटा के बारे में कुछ जानकारी हासिल कर ली है. इसलिए, अब हम मॉडल डेवलपमेंट एनवायरमेंट सेट अप करते हैं.
पहला चरण: एपीआई चालू करना
BigQuery कनेक्टर, BigQuery Storage API का इस्तेमाल करता है. कंसोल में BigQuery Storage API खोजें. अगर यह एपीआई फ़िलहाल बंद है, तो इसे चालू करें.

दूसरा चरण: Vertex AI Workbench नोटबुक बनाना
अपने Cloud Console के Vertex AI Workbench सेक्शन पर जाएं और नई नोटबुक पर क्लिक करें. इसके बाद, TensorFlow Enterprise 2.x का सबसे नया notebook टाइप without GPUs चुनें:
डिफ़ॉल्ट विकल्पों का इस्तेमाल करें. इसके बाद, बनाएं पर क्लिक करें. इंस्टेंस बन जाने के बाद, JupyterLab खोलें को चुनें:

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

तीसरा चरण: लैब के लिए उपलब्ध संसाधन डाउनलोड करना
JupyterLab इंटरफ़ेस से नई टर्मिनल विंडो बनाएं: फ़ाइल -> नया -> टर्मिनल.
इसके बाद, इस कमांड का इस्तेमाल करके सोर्स मटीरियल को क्लोन करें:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
4. डेटा एक्सप्लोर और विज़ुअलाइज़ करना
इस सेक्शन में, आपको यह जानकारी मिलेगी:
- ऐसी क्वेरी बनाएं जो डेटा को टाइम-सीरीज़ में ग्रुप करती हो
- मौजूद नहीं है वैल्यू
- डेटा को विज़ुअलाइज़ करना
- टाइम-सीरीज़ को ट्रेंड और सीज़नल कॉम्पोनेंट में डिकंपोज़ करना
पहला चरण
Vertex AI Workbench में, training-data-analyst/courses/ai-for-time-series/notebooks पर जाएं और 01-explore.ipynb खोलें.
दूसरा चरण
नोटबुक की सभी सेल मिटाएं (बदलाव करें > सभी आउटपुट मिटाएं). इसके बाद, शुरुआती कुछ सेल में से किसी एक में क्षेत्र, प्रोजेक्ट, और बकेट की सेटिंग बदलें. इसके बाद, एक-एक करके सेल चलाएं.
चरण 3
इस सेक्शन में, आपने डेटा इंपोर्ट किया है और उसके अलग-अलग डाइमेंशन को विज़ुअलाइज़ किया है. अब आपको डेटा के बारे में ज़्यादा जानकारी मिल गई है. इसलिए, इस डेटा का इस्तेमाल करके मशीन लर्निंग मॉडलिंग की जा सकती है.

5. BigQuery की टाइम सीरीज़ फ़ोरकास्टिंग सुविधा का इस्तेमाल करके मॉडल बनाना
इस सेक्शन में, आपको यह जानकारी मिलेगी:
- टाइम सीरीज़ के इनपुट डेटा को BigQuery टेबल में इंपोर्ट करना
- BQML सिंटैक्स का इस्तेमाल करके टाइम सीरीज़ मॉडल बनाना
- अपने मॉडल के पैरामीटर और सटीकता का आकलन करने का तरीका जानें
- अपने मॉडल का इस्तेमाल करके अनुमान लगाना
पहला चरण
हम CSV फ़ाइल से मिले रॉ डेटा की मदद से, एक BigQuery टेबल बनाने जा रहे हैं. चलिए, नोटबुक एनवायरमेंट से CSV फ़ाइल डाउनलोड करके शुरू करते हैं.
training-data-analyst/courses/ai-for-time-series/notebooks/data डायरेक्ट्री में जाकर, cta_ridership.csv पर राइट क्लिक करें. इसके बाद, इसे अपने लोकल एनवायरमेंट में डाउनलोड करें.
दूसरा चरण
इसके बाद, हम इस डेटा को BigQuery टेबल में अपलोड करेंगे.
कंसोल में BigQuery पर जाएं. इसके लिए, खोजें या इस लिंक का इस्तेमाल करें:

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

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

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

चरण 3
अब मॉडल बनाने का समय आ गया है! BigQuery ML, एसक्यूएल जैसा आसान सिंटैक्स उपलब्ध कराता है. इसकी मदद से, अलग-अलग तरह के मॉडल बनाए जा सकते हैं.
क्वेरी एडिटर में, इस क्वेरी को चिपकाएं/टाइप करें. अगर ज़रूरी हो, तो दोनों जगहों पर demo की जगह अपने डेटासेट का नाम डालें:
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`
आइए, समझने के लिए सिंटैक्स के मुख्य एलिमेंट के बारे में जानें:
| इस स्टेटमेंट से मॉडल बनता है. इस स्टेटमेंट के कई वैरिएंट हैं.जैसे, |
| यहां हम मॉडल के विकल्पों को तय करते हैं. इसमें पहला विकल्प, मॉडल टाइप होता है. ARIMA को चुनने पर, टाइम-सीरीज़ का अनुमान लगाने वाला मॉडल बन जाएगा. |
| तारीख/समय की जानकारी वाला कॉलम |
| डेटा कॉलम |
| इस वैकल्पिक पैरामीटर की मदद से, हम मॉडल में छुट्टियों को शामिल कर सकते हैं. पिछले चरण में डेटा एक्सप्लोरेशन से पता चला कि छुट्टियों के दौरान राइडरशिप कम थी. साथ ही, यह डेटा अमेरिका के इलिनॉय राज्य के शिकागो शहर से मिला है. इसलिए, हम मॉडल में अमेरिका की छुट्टियों को शामिल कर रहे हैं. |
| इस सेक्शन में, वह इनपुट डेटा चुना जाता है जिसका इस्तेमाल मॉडल को ट्रेनिंग देने के लिए किया जाएगा. |
क्वेरी में कई अन्य विकल्प जोड़े जा सकते हैं. जैसे, अगर आपके पास कई टाइम सीरीज़ हैं, तो कॉलम तय करना या यह चुनना कि ARIMA मॉडल के पैरामीटर अपने-आप खोजे जाएं या नहीं. ज़्यादा जानकारी के लिए, टाइम सीरीज़ मॉडल के लिए CREATE MODEL स्टेटमेंट का सिंटैक्स रेफ़रंस देखें.
चौथा चरण
आइए, हमारे मॉडल के बारे में ज़्यादा जानें. ट्रेनिंग पूरी होने के बाद, एक और क्वेरी चलाएं. अगर ज़रूरत हो, तो demo को फिर से बदलें:
SELECT * FROM ML.EVALUATE(MODEL `demo.cta_ridership_model`)
आइए, नतीजों को समझते हैं. आपको हर लाइन में, एक कैंडिडेट मॉडल दिखेगा. साथ ही, उसके पैरामीटर और आकलन के आंकड़े भी दिखेंगे. नतीजे, एआईसी या अकाइके इन्फ़ॉर्मेशन क्राइटेरियन के बढ़ते क्रम में दिखाए जाते हैं. इससे मॉडल की क्वालिटी का पता चलता है. इसलिए, पहली लाइन में मौजूद मॉडल का एआईसी सबसे कम है. इसे सबसे अच्छा मॉडल माना जाता है.
आपको ARIMA मॉडल के p, d, और q पैरामीटर के साथ-साथ मॉडल में मिली सीज़नलिटी भी दिखेगी. इस मामले में, टॉप मॉडल में साप्ताहिक और सालाना सीज़नलिटी, दोनों शामिल हैं.

पांचवां चरण
अब हम ML.FORECAST फ़ंक्शन का इस्तेमाल करके, अनुमान लगाने के लिए तैयार हैं!
यहां दिया गया कोड चिपकाएं/टाइप करें. अगर ज़रूरी हो, तो demo की जगह कोई दूसरा नाम डालें:
SELECT
*
FROM
ML.FORECAST(MODEL `demo.cta_ridership_model`,
STRUCT(7 AS horizon))
यह क्वेरी, हमारे मॉडल का इस्तेमाल करके सिर्फ़ सात दिनों का अनुमान लगाती है! यहां दिखाई गई सात पंक्तियां, क्वेरी के नतीजे के तौर पर मिली हैं. पूर्वानुमान में कॉन्फ़िडेंस इंटरवल भी शामिल होता है. इसकी डिफ़ॉल्ट वैल्यू 0.95 होती है. हालांकि, इसे क्वेरी में कॉन्फ़िगर किया जा सकता है.

बहुत बढ़िया: हमने सिर्फ़ कुछ BQML क्वेरी की मदद से, टाइम सीरीज़ मॉडल बनाया है.
6. पसंद के मुताबिक पूर्वानुमान मॉडल बनाना
इस सेक्शन में, आपको यह जानकारी मिलेगी:
- डेटा से आउटलायर हटाना
- कई चरणों में अनुमान लगाना
- टाइम-सीरीज़ मॉडल में अतिरिक्त सुविधाएं शामिल करना
- टाइम-सीरीज़ फ़ोरकास्टिंग के लिए न्यूरल नेटवर्क आर्किटेक्चर के बारे में जानें: एलएसटीएम और सीएनएन
- स्टैटिस्टिकल मॉडल के बारे में जानें. इनमें हॉल्ट-विंटर्स एक्सपोनेंशियल स्मूदिंग भी शामिल है
- Ensemble मॉडल
पहला चरण
Vertex AI Workbench में, training-data-analyst/courses/ai-for-time-series/notebooks पर जाएं और 02-model.ipynb खोलें.
दूसरा चरण
नोटबुक की सभी सेल मिटाएं (बदलाव करें > सभी आउटपुट मिटाएं). इसके बाद, शुरुआती कुछ सेल में से किसी एक में क्षेत्र, प्रोजेक्ट, और बकेट की सेटिंग बदलें. इसके बाद, एक-एक करके सेल चलाएं.
चरण 3
आपने नोटबुक में, अब कई मॉडल आर्किटेक्चर एक्सप्लोर किए हैं: एलएसटीएम, सीएनएन, और स्टैटिस्टिकल मॉडल. हर मॉडल के लिए, यह देखा जा सकता है कि टेस्ट डेटा के हिसाब से मॉडल की परफ़ॉर्मेंस कैसी है:

7. क्लाउड में ट्रेनिंग और अनुमान लगाना
इस सेक्शन में, आपको यह जानकारी मिलेगी:
- क्लाउड में ट्रेनिंग के लिए डेटा और मॉडल तैयार करना
- AI Platform Training की मदद से, अपने मॉडल को ट्रेन करें और जॉब की प्रोग्रेस को मॉनिटर करें
- AI Platform Predictions की मदद से, मॉडल का इस्तेमाल करके अनुमान लगाना
पहला चरण
Vertex AI Workbench में, training-data-analyst/courses/ai-for-time-series/notebooks पर जाएं और 03-cloud-training.ipynb खोलें.
दूसरा चरण
नोटबुक की सभी सेल मिटाएं (बदलाव करें > सभी आउटपुट मिटाएं). इसके बाद, शुरुआती कुछ सेल में से किसी एक में क्षेत्र, प्रोजेक्ट, और बकेट की सेटिंग बदलें. इसके बाद, एक-एक करके सेल चलाएं.
चरण 3
पिछले सेक्शन में, हमने Workbench नोटबुक में एक मॉडल को ट्रेन किया और उससे अनुमान लगाया. इस सेक्शन में, हमने यह दिखाया है कि ट्रेनिंग और डिप्लॉयमेंट के लिए Vertex AI की सेवाओं का इस्तेमाल करने के लिए, अपनी नोटबुक से Vertex AI के लिए Python SDK का इस्तेमाल कैसे करें.

8. चुनौती
इस सेक्शन में, आपने जो कॉन्सेप्ट सीखे हैं उन्हें नए डेटासेट पर लागू करने की कोशिश करें!
हम आपको पूरी जानकारी नहीं देंगे. हालांकि, अगर आपको चाहिए, तो हम आपको कुछ सुराग दे सकते हैं!
इस समस्या को हल करने के लिए, न्यूयॉर्क शहर से मिले 311 सेवा अनुरोधों का अनुमान लगाना है. इन गैर-ज़रूरी अनुरोधों में, शोर की शिकायतें, स्ट्रीट लाइट की समस्याएं वगैरह शामिल हैं.
पहला चरण
सबसे पहले, डेटासेट के बारे में जानते हैं.
सबसे पहले, City of New York 311 Service Requests डेटासेट को ऐक्सेस करें.
डेटा को बेहतर तरीके से समझने के लिए, डेटासेट के ब्यौरे में दी गई कुछ सैंपल क्वेरी आज़माएं:
- आइसक्रीम ट्रक से जुड़े 311 अनुरोधों की संख्या कितनी है?
- पार्टियों से जुड़े सबसे ज़्यादा 311 अनुरोध किस दिन मिलते हैं?
डेटासेट को ऐक्सेस करने का तरीका जानने के लिए, BigQuery के यूज़र इंटरफ़ेस (यूआई) में क्वेरी बनाएं को चुनें. ध्यान दें कि select स्टेटमेंट, bigquery-public-data.new_york_311.311_service_requests से क्वेरी कर रहा है.
दूसरा चरण
हम शुरू करने के लिए तैयार हैं. इस सेक्शन में, इस डेटा के साथ काम करने के लिए एक्सप्लोर और विज़ुअलाइज़ करें नोटबुक में बदलाव करें.
संकेत
01-explore.ipynbनोटबुक की डुप्लीकेट कॉपी बनाएं और उस पर काम करना शुरू करें.- डेटा एक्सप्लोर करने के लिए, यह क्वेरी आज़माएं:
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नोटबुक की डुप्लीकेट कॉपी बनाएं और उस पर काम करना शुरू करें.- डेटासेट के पैरामीटर अपडेट करें:
- अपने नए डेटासेट से मेल खाने के लिए,
target_colऔरts_colपैरामीटर अपडेट करें. - मॉडल के पैरामीटर अपडेट करें:
- हर महीने के हिसाब से (महीने की शुरुआत के लिए कोड ‘MS' है)
- इनपुट चरण: 12 (लुकबैक विंडो 12 महीने की है)
- आउटपुट के चरण: 3 (तीन महीने आगे का अनुमान लगाएं)
- सीज़न: 12 (सीज़नल बदलाव 12 महीनों का होता है)
- अगर आपने पिछली नोटबुक में इनपुट फ़ाइल का नाम बदला है, तो यहां भी उसे बदलें.
- अगर आपने महीने के बीच में क्वेरी चलाई है, तो आखिरी महीने का कुल डेटा, आपकी उम्मीद से काफ़ी कम होगा. इसलिए, इस लैब के लिए, आइए हम डेटासेट से आखिरी महीने का डेटा हटा दें. इसके लिए,
df = df[:-1]का इस्तेमाल करें - डेटा में कोई भी वैल्यू ऐसी नहीं दिख रही है जो बाकी वैल्यू से अलग हो. इसलिए, उन सेल को छोड़ दें या उन पर टिप्पणी करें.
- इस नए मॉडल के लिए, एलएसटीएम यूनिट, सीएनएन फ़िल्टर, और कर्नल साइज़ में बदलाव करें.
9. साफ़-सफ़ाई सेवा
अगर आपको इस नोटबुक का इस्तेमाल जारी रखना है, तो हमारा सुझाव है कि इस्तेमाल न करने पर इसे बंद कर दें. Cloud Console में Workbench के यूज़र इंटरफ़ेस (यूआई) में जाकर, नोटबुक चुनें. इसके बाद, बंद करें को चुनें:

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