১. সংক্ষিপ্ত বিবরণ
BigQuery ML (BQML) ব্যবহারকারীদের SQL কোয়েরি ব্যবহার করে BigQuery-তে মেশিন লার্নিং মডেল তৈরি ও কার্যকর করতে সক্ষম করে। এর লক্ষ্য হলো SQL ব্যবহারকারীদের তাদের বিদ্যমান সরঞ্জাম ব্যবহার করে মডেল তৈরি করতে সক্ষম করে মেশিন লার্নিংকে সকলের জন্য সহজলভ্য করা এবং ডেটা স্থানান্তরের প্রয়োজনীয়তা দূর করে উন্নয়নের গতি বৃদ্ধি করা।
আপনি যা তৈরি করবেন
আপনি নমুনা অ্যানালিটিক্স ৩৬০ ডেটাসেট ব্যবহার করে এমন একটি মডেল তৈরি করবেন যা ভবিষ্যদ্বাণী করবে যে কোনো পরিদর্শক লেনদেন করবে কি না।
আপনি যা শিখবেন
BigQuery-তে মেশিন লার্নিং মডেল কীভাবে তৈরি, মূল্যায়ন এবং ব্যবহার করবেন
আপনার যা যা লাগবে
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
- SQL বা BigQuery সম্পর্কে প্রাথমিক জ্ঞান
- BQML ডকুমেন্টেশন
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে কোনো Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।
- এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।
এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
BigQuery কনসোল খুলুন
গুগল ডেভেলপার কনসোলে, স্ক্রিনের উপরের বাম দিকে থাকা মেনু আইকনে ক্লিক করুন।

মেনুটি একদম নিচে স্ক্রল করুন এবং BigQuery-তে ক্লিক করুন:

এটি একটি নতুন ব্রাউজার ট্যাবে BigQuery কনসোল খুলে দেবে, যা দেখতে এইরকম:

কিন্তু, এখানে তো কিছুই নেই! সৌভাগ্যবশত, আপনার অনুসন্ধানের জন্য BigQuery-তে প্রচুর পাবলিক ডেটাসেট উপলব্ধ রয়েছে।
৩. একটি ডেটাসেট তৈরি করুন
একটি ডেটাসেট তৈরি করতে, আপনার প্রোজেক্টের নামের পাশে থাকা তীরচিহ্নে ক্লিক করুন এবং ‘create new dataset’ নির্বাচন করুন।

এরপর, আপনার ডেটাসেটের নাম bqml_codelab দিন এবং ok-তে ক্লিক করুন।

৪. একটি মডেল তৈরি করুন
অ্যানালিটিক্স ৩৬০-এর জন্য লজিস্টিক রিগ্রেশন
এবার, আমরা আমাদের কাজে এগিয়ে যাই। একজন পরিদর্শক কোনো লেনদেন করবেন কিনা তা ভবিষ্যদ্বাণী করার জন্য কীভাবে একটি মডেল তৈরি করবেন, তা এখানে দেওয়া হলো।
#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 ' সেট করার একটি বিকল্প উপায়। আমরা আমাদের ট্রেনিং ডেটা ১ আগস্ট ২০১৬ থেকে ৩১ জুন ২০১৭ পর্যন্ত সংগৃহীত ডেটার মধ্যে সীমাবদ্ধ রাখছি। 'prediction'-এর জন্য শেষ মাসের ডেটা সংরক্ষণ করতে আমরা এটি করছি। এছাড়াও, আমাদের কিছু সময় বাঁচানোর জন্য আমরা ডেটা পয়েন্টের সংখ্যা ১,০০,০০০-এ সীমাবদ্ধ রাখছি। আপনার যদি তাড়া না থাকে, তবে নির্দ্বিধায় শেষ লাইনটি মুছে ফেলতে পারেন।
CREATE MODEL কমান্ডটি চালালে একটি Query Job তৈরি হয় যা অ্যাসিঙ্ক্রোনাসভাবে চলবে, ফলে আপনি, উদাহরণস্বরূপ, BigQuery UI উইন্ডোটি বন্ধ বা রিফ্রেশ করতে পারবেন।
[ঐচ্ছিক] মডেলের তথ্য ও প্রশিক্ষণের পরিসংখ্যান
আপনি আগ্রহী হলে, UI-তে bqml_codelab ডেটাসেটের অধীনে থাকা sample_model-এ ক্লিক করে মডেলটি সম্পর্কে তথ্য পেতে পারেন। Details- এর অধীনে, আপনি মডেলের কিছু প্রাথমিক তথ্য এবং মডেলটি তৈরি করতে ব্যবহৃত ট্রেনিং অপশনগুলো দেখতে পাবেন। Training Stats-এর অধীনে, আপনি এই ধরনের একটি টেবিল দেখতে পাবেন:

৫. মডেলটি মূল্যায়ন করুন
আমাদের মডেলটি মূল্যায়ন করুন
#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 । এই মেট্রিকগুলির প্রত্যেকটি কীভাবে গণনা করা হয় এবং সেগুলির অর্থ কী, তা বোঝার জন্য অনুগ্রহ করে মেশিন লার্নিং গ্লসারি দেখুন অথবা গুগলে সার্চ করুন।
নির্দিষ্টভাবে বলতে গেলে, আপনি লক্ষ্য করবেন যে কোয়েরির SELECT এবং FROM অংশগুলো ট্রেনিংয়ের সময় ব্যবহৃত অংশের মতোই। WHERE অংশটি সময়সীমার পরিবর্তনকে নির্দেশ করে এবং FROM অংশটি দেখায় যে আমরা ml.EVALUATE কল করছি। আপনি এর মতো একটি টেবিল দেখতে পাবেন:

৬. মডেলটি ব্যবহার করুন
দেশ অনুযায়ী ক্রয়ের পূর্বাভাস
এখানে আমরা প্রতিটি দেশের দর্শনার্থীদের দ্বারা সম্পাদিত লেনদেনের সংখ্যা অনুমান করার চেষ্টা করি, ফলাফলগুলো সাজাই এবং ক্রয়ের ভিত্তিতে শীর্ষ ১০টি দেশ নির্বাচন করি।
#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 অংশটিকে সাধারণ SQL কমান্ড দিয়ে মুড়ে দিয়েছি। নির্দিষ্টভাবে বলতে গেলে, আমরা প্রতিটি দেশের জন্য দেশ এবং মোট ক্রয়ের পরিমাণ জানতে আগ্রহী, তাই আমরা SELECT , GROUP BY এবং ORDER BY ব্যবহার করেছি। শুধুমাত্র সেরা ১০টি ফলাফল নিশ্চিত করতে এখানে LIMIT ব্যবহার করা হয়েছে। আপনি এইরকম একটি টেবিল দেখতে পাবেন:

ব্যবহারকারী প্রতি ক্রয়ের পূর্বাভাস দিন
এখানে আরেকটি উদাহরণ দেওয়া হলো। এবার আমরা প্রত্যেক পরিদর্শকের লেনদেনের সংখ্যা অনুমান করার চেষ্টা করব, ফলাফলগুলো সাজাবো এবং লেনদেনের ভিত্তিতে শীর্ষ ১০ জন পরিদর্শককে নির্বাচন করব।
#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;
আপনি এইরকম একটি টেবিল দেখতে পাবেন:

৭. অভিনন্দন!
এই কোডল্যাবটি আপনার শেষ। কোনো চ্যালেঞ্জ খুঁজছেন? BQML ব্যবহার করে একটি লিনিয়ার রিগ্রেশন মডেল তৈরি করার চেষ্টা করুন।
আমরা যা আলোচনা করেছি
- একটি বাইনারি লজিস্টিক রিগ্রেশন মডেল তৈরি করুন
- মডেলটি মূল্যায়ন করুন
- পূর্বাভাস তৈরি করতে মডেল ব্যবহার করুন
পরবর্তী পদক্ষেপ
- BQML সম্পর্কে আরও তথ্যের জন্য, অনুগ্রহ করে ডকুমেন্টেশন দেখুন।