1. खास जानकारी
BigQuery ML (BQML) की मदद से, उपयोगकर्ता BigQuery में SQL क्वेरी का इस्तेमाल करके मशीन लर्निंग मॉडल बना सकते हैं और उन्हें लागू कर सकते हैं. इसका मकसद, मशीन लर्निंग को सभी के लिए उपलब्ध कराना है. इसके लिए, SQL का इस्तेमाल करने वालों को मौजूदा टूल का इस्तेमाल करके मॉडल बनाने की सुविधा दी जाती है. साथ ही, डेटा को एक जगह से दूसरी जगह ले जाने की ज़रूरत को खत्म करके, डेवलपमेंट की स्पीड को बढ़ाया जाता है.
आपको क्या बनाने को मिलेगा
आपको Analytics 360 के सैंपल डेटासेट का इस्तेमाल करके एक ऐसा मॉडल बनाना होगा जो यह अनुमान लगाए कि कोई विज़िटर लेन-देन करेगा या नहीं.
आपको क्या सीखने को मिलेगा
BigQuery में मशीन लर्निंग मॉडल बनाने, उनका आकलन करने, और उनका इस्तेमाल करने का तरीका
आपको किन चीज़ों की ज़रूरत होगी
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.
- इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें बताया गया है कि संसाधनों को कैसे बंद किया जाए, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.
BigQuery Console खोलें
Google Developer Console में, स्क्रीन पर सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें.

मेन्यू में सबसे नीचे तक स्क्रोल करें और BigQuery: पर क्लिक करें

इससे BigQuery कंसोल, नए ब्राउज़र टैब में खुलेगा. यह इस तरह दिखेगा:

लेकिन, इसमें कुछ भी नहीं है! अच्छी बात यह है कि BigQuery में, एक्सप्लोर करने के लिए कई सार्वजनिक डेटासेट उपलब्ध हैं.
3. डेटासेट बनाना
डेटासेट बनाने के लिए, अपने प्रोजेक्ट के नाम के बगल में मौजूद ऐरो पर क्लिक करें. इसके बाद, नया डेटासेट बनाएं को चुनें.

इसके बाद, अपने डेटासेट का नाम bqml_codelab रखें और ठीक है पर क्लिक करें.

4. मॉडल बनाना
Analytics 360 के लिए लॉजिस्टिक रिग्रेशन
अब हम अपने टास्क पर आगे बढ़ते हैं. यहां बताया गया है कि किसी मॉडल को कैसे बनाया जाता है, ताकि यह अनुमान लगाया जा सके कि कोई व्यक्ति लेन-देन करेगा या नहीं.
#standardSQL CREATE OR REPLACE MODEL `bqml_codelab.sample_model` OPTIONS(model_type='logistic_reg') AS SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20160801' AND '20170631' LIMIT 100000;
यहां हम यह तय करने के लिए कि लेन-देन हुआ है या नहीं, इन बातों का इस्तेमाल करते हैं: वेबसाइट पर आने वाले व्यक्ति के डिवाइस का ऑपरेटिंग सिस्टम, वह डिवाइस मोबाइल है या नहीं, वेबसाइट पर आने वाले व्यक्ति का देश, और पेज व्यू की संख्या.
इस मामले में, "codelab" डेटासेट का नाम है और "sample_model" हमारे मॉडल का नाम है. मॉडल टाइप के तौर पर बाइनरी लॉजिस्टिक रिग्रेशन को चुना गया है. इस मामले में, label वह वैल्यू है जिसे हमें फ़िट करना है. ध्यान दें कि अगर आपको सिर्फ़ एक कॉलम में दिलचस्पी है, तो input_label_cols को सेट करने का यह एक और तरीका है. हम ट्रेनिंग के लिए इस्तेमाल किए जाने वाले डेटा को भी सीमित कर रहे हैं. यह डेटा, 1 अगस्त, 2016 से 31 जून, 2017 के बीच इकट्ठा किया गया है. हम ऐसा इसलिए कर रहे हैं, ताकि "अनुमान" के लिए पिछले महीने का डेटा सेव किया जा सके. इसके अलावा, हम डेटा पॉइंट की संख्या को 1,00,000 तक सीमित कर रहे हैं, ताकि हमें कुछ समय मिल सके. अगर आपको कोई जल्दी नहीं है, तो आखिरी लाइन को हटाया जा सकता है.
CREATE MODEL कमांड चलाने पर, एक क्वेरी जॉब बनता है. यह क्वेरी जॉब एसिंक्रोनस तरीके से चलता है. इसलिए, उदाहरण के लिए, BigQuery के यूज़र इंटरफ़ेस (यूआई) वाली विंडो को बंद या रीफ़्रेश किया जा सकता है.
[ज़रूरी नहीं] मॉडल की जानकारी और ट्रेनिंग के आंकड़े
अगर आपको मॉडल के बारे में जानकारी चाहिए, तो यूज़र इंटरफ़ेस (यूआई) में bqml_codelab डेटासेट में जाकर sample_model पर क्लिक करें. जानकारी में जाकर, आपको मॉडल के बारे में कुछ बुनियादी जानकारी और मॉडल बनाने के लिए इस्तेमाल किए गए ट्रेनिंग के विकल्प दिखेंगे. ट्रेनिंग के आंकड़े में, आपको इस तरह की टेबल दिखेगी:

5. मॉडल का आकलन करना
हमारे मॉडल का आकलन करना
#standardSQL SELECT * FROM ml.EVALUATE(MODEL `bqml_codelab.sample_model`, ( SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'));
लीनियर रिग्रेशन मॉडल के साथ इस्तेमाल करने पर, ऊपर दी गई क्वेरी ये कॉलम दिखाती है: mean_absolute_error, mean_squared_error, mean_squared_log_error, median_absolute_error, r2_score, explained_variance. लॉजिस्टिक रिग्रेशन मॉडल के साथ इस्तेमाल करने पर, ऊपर दी गई क्वेरी ये कॉलम दिखाती है: precision, recall, accuracy, f1_score, log_loss, roc_auc. इन मेट्रिक को कैलकुलेट करने के तरीके और इनके मतलब को समझने के लिए, कृपया मशीन लर्निंग की शब्दावली देखें या Google पर खोज करें.
आपको पता चलेगा कि क्वेरी के SELECT और FROM हिस्से, ट्रेनिंग के दौरान इस्तेमाल किए गए हिस्सों से मिलते-जुलते हैं. WHERE हिस्से में, समयसीमा में हुए बदलाव को दिखाया गया है. वहीं, FROM हिस्से में यह दिखाया गया है कि हम ml.EVALUATE को कॉल कर रहे हैं. आपको कुछ इस तरह की टेबल दिखेगी:

6. मॉडल का इस्तेमाल करना
हर देश में होने वाली खरीदारी का अनुमान लगाना
यहां हम हर देश के खरीदारों के लेन-देन की संख्या का अनुमान लगाने की कोशिश करते हैं. साथ ही, नतीजों को क्रम से लगाते हैं और खरीदारी के हिसाब से टॉप 10 देशों को चुनते हैं.
#standardSQL SELECT country, SUM(predicted_label) as total_predicted_purchases FROM ml.PREDICT(MODEL `bqml_codelab.sample_model`, ( SELECT IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801')) GROUP BY country ORDER BY total_predicted_purchases DESC LIMIT 10;
ध्यान दें कि यह क्वेरी, उस क्वेरी से काफ़ी मिलती-जुलती है जिसे हमने पिछले सेक्शन में दिखाया था. यहां ml.EVALUATE के बजाय, ml.PREDICT का इस्तेमाल किया जाता है. साथ ही, हम क्वेरी के BQML हिस्से को स्टैंडर्ड एसक्यूएल कमांड के साथ रैप करते हैं. हमें देश और हर देश के लिए खरीदारी की कुल रकम की जानकारी चाहिए. इसलिए, हम SELECT, GROUP BY, और ORDER BY करते हैं. LIMIT का इस्तेमाल यहां यह पक्का करने के लिए किया जाता है कि हमें सिर्फ़ टॉप 10 नतीजे मिलें. आपको कुछ इस तरह की टेबल दिखेगी:

हर उपयोगकर्ता के हिसाब से खरीदारी का अनुमान लगाना
यहां एक और उदाहरण दिया गया है. इस बार, हम यह अनुमान लगाने की कोशिश करते हैं कि हर विज़िटर ने कितने लेन-देन किए. इसके बाद, हम नतीजों को क्रम से लगाते हैं और लेन-देन के हिसाब से टॉप 10 विज़िटर चुनते हैं.
#standardSQL SELECT fullVisitorId, SUM(predicted_label) as total_predicted_purchases FROM ml.PREDICT(MODEL `bqml_codelab.sample_model`, ( SELECT IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country, fullVisitorId FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801')) GROUP BY fullVisitorId ORDER BY total_predicted_purchases DESC LIMIT 10;
आपको कुछ इस तरह की टेबल दिखेगी:

7. बधाई हो!
आपने यह कोडलैब पूरा कर लिया है. क्या आपको कोई चुनौती चाहिए? BQML की मदद से लीनियर रिग्रेशन मॉडल बनाने की कोशिश करें.
हमने क्या-क्या बताया
- बाइनरी लॉजिस्टिक रिग्रेशन मॉडल बनाना
- मॉडल का आकलन करना
- अनुमान लगाने के लिए मॉडल का इस्तेमाल करना
अगले चरण
- BQML के बारे में ज़्यादा जानने के लिए, कृपया दस्तावेज़ देखें.