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



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

মেনুটি নীচে স্ক্রোল করুন এবং BigQuery এ ক্লিক করুন:

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

কিন্তু, এখানে কিছুই নেই! ভাগ্যক্রমে, BigQuery-তে আপনার অন্বেষণ করার জন্য প্রচুর পাবলিক ডেটাসেট উপলব্ধ রয়েছে।
৩. একটি ডেটাসেট তৈরি করুন
একটি ডেটাসেট তৈরি করতে, আপনার প্রকল্পের নামের পাশের তীরটিতে ক্লিক করুন এবং নতুন ডেটাসেট তৈরি করুন নির্বাচন করুন।

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

৪. একটি মডেল তৈরি করুন
অ্যানালিটিক্স 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 হল যা আমরা ফিট করার চেষ্টা করছি। মনে রাখবেন যে আপনি যদি শুধুমাত্র 1 কলামে আগ্রহী হন, তাহলে এটি input_label_cols সেট করার একটি বিকল্প উপায়। আমরা আমাদের প্রশিক্ষণ ডেটা 1 আগস্ট 2016 থেকে 31 জুন 2017 পর্যন্ত সংগৃহীত ডেটার মধ্যে সীমাবদ্ধ রাখছি। "পূর্বাভাস" এর জন্য আমরা শেষ মাসের ডেটা সংরক্ষণ করার জন্য এটি করছি। তদুপরি, আমরা আমাদের কিছু সময় বাঁচাতে 100,000 ডেটা পয়েন্টে সীমাবদ্ধ রাখছি। আপনার যদি তাড়াহুড়ো না থাকে তবে শেষ লাইনটি সরিয়ে ফেলতে দ্বিধা করবেন না।
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 . এই প্রতিটি মেট্রিক কীভাবে গণনা করা হয় এবং এর অর্থ কী তা বুঝতে অনুগ্রহ করে মেশিন লার্নিং শব্দকোষটি দেখুন অথবা Google অনুসন্ধান চালান।
স্পষ্টতই, আপনি বুঝতে পারবেন যে কোয়েরির 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 ব্যবহার করা হয়েছে যাতে আমরা কেবল শীর্ষ 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;
আপনার এই ধরণের একটি টেবিল দেখতে হবে:

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