BigQuery ML का इस्तेमाल शुरू करना

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

BigQuery ML (BQML) की मदद से, उपयोगकर्ता SQL क्वेरी का इस्तेमाल करके BigQuery में मशीन लर्निंग मॉडल बना सकते हैं और उन्हें लागू कर सकते हैं. इसका मकसद, मशीन लर्निंग को सभी के लिए उपलब्ध कराना है. इसके लिए, एसक्यूएल का इस्तेमाल करने वालों को मौजूदा टूल का इस्तेमाल करके मॉडल बनाने की सुविधा दी जाती है. साथ ही, डेटा को एक जगह से दूसरी जगह ले जाने की ज़रूरत को खत्म करके, डेवलपमेंट की स्पीड को बढ़ाया जाता है.

आपको क्या बनाने को मिलेगा

आपको Analytics 360 के सैंपल डेटासेट का इस्तेमाल करके एक ऐसा मॉडल बनाना होगा जो यह अनुमान लगाए कि कोई विज़िटर लेन-देन करेगा या नहीं.

आपको क्या सीखने को मिलेगा

BigQuery में मशीन लर्निंग मॉडल बनाने, उनका आकलन करने, और उनका इस्तेमाल करने का तरीका

आपको किन चीज़ों की ज़रूरत होगी

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

96a9c957bc475304.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.png

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोडलैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

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

BigQuery Console खोलें

Google Developer Console में, स्क्रीन पर सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें.

select-bq_0.png

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

select-bq.png

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

8b0218390329e8cf.png

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

3. डेटासेट बनाना

डेटासेट बनाने के लिए, अपने प्रोजेक्ट के नाम के बगल में मौजूद ऐरो पर क्लिक करें. इसके बाद, नया डेटासेट बनाएं को चुनें.

4f51bf57291a59db.png

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

63e32478a5652fbc.png

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 पर क्लिक करें. जानकारी में जाकर, आपको मॉडल के बारे में कुछ बुनियादी जानकारी और मॉडल बनाने के लिए इस्तेमाल किए गए ट्रेनिंग के विकल्प दिखेंगे. ट्रेनिंग के आंकड़े में, आपको कुछ इस तरह की टेबल दिखेगी:

b8bd9548a0d89165.png

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 को कॉल कर रहे हैं. आपको कुछ ऐसी टेबल दिखेगी:

1c7779f6028730cc.png

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 नतीजे मिलें. आपको कुछ ऐसी टेबल दिखेगी:

e639f7a409741dcb.png

हर उपयोगकर्ता के हिसाब से खरीदारी का अनुमान लगाना

यहां एक और उदाहरण दिया गया है. इस बार, हम यह अनुमान लगाने की कोशिश करते हैं कि हर विज़िटर ने कितने लेन-देन किए. इसके बाद, हम नतीजों को क्रम से लगाते हैं और लेन-देन के हिसाब से टॉप 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;

आपको कुछ ऐसी टेबल दिखेगी:

2be1d8fa96e10178.png

7. बधाई हो!

आपने यह कोडलैब पूरा कर लिया है. क्या आपको कोई चुनौती चाहिए? BQML की मदद से लीनियर रिग्रेशन मॉडल बनाएं.

हमने क्या-क्या बताया

  • बाइनरी लॉजिस्टिक रिग्रेशन मॉडल बनाना
  • मॉडल का आकलन करना
  • अनुमान लगाने के लिए मॉडल का इस्तेमाल करना

अगले चरण

  • BQML के बारे में ज़्यादा जानने के लिए, कृपया दस्तावेज़ देखें.