লজিস্টিক রিগ্রেশন কোডল্যাব

১. ভূমিকা

এই কোডল্যাব আপনাকে শেখাবে কিভাবে লজিস্টিক রিগ্রেশন ব্যবহার করে বুঝতে হবে যে লিঙ্গ, বয়স গোষ্ঠী, ইম্প্রেশন সময় এবং ব্রাউজারের ধরণের মতো বৈশিষ্ট্যগুলি ব্যবহারকারীর বিজ্ঞাপনে ক্লিক করার সম্ভাবনার সাথে কতটা সম্পর্কিত।

পূর্বশর্ত

এই কোডল্যাবটি সম্পূর্ণ করার জন্য, একটি মডেল তৈরি করার জন্য আপনার পর্যাপ্ত উচ্চমানের প্রচারণার ডেটার প্রয়োজন হবে।

২. একটি প্রচারণা বেছে নিন

একটি পুরনো প্রচারণা নির্বাচন করে শুরু করুন যাতে প্রচুর পরিমাণে উচ্চমানের ডেটা রয়েছে। যদি আপনি না জানেন যে কোন প্রচারণায় সবচেয়ে ভালো ডেটা থাকার সম্ভাবনা রয়েছে, তাহলে আপনার অ্যাক্সেস থাকা পুরোনো পুরো মাসের ডেটার উপর নিম্নলিখিত প্রশ্নটি চালান:

SELECT
  campaign_id,
  COUNT(DISTINCT user_id) AS user_count,
  COUNT(*) AS impression_count
FROM adh.google_ads_impressions

ORDER BY user_count DESC;

সাম্প্রতিক নয় এমন ডেটা নির্বাচন করলে আপনি আপনার মডেলকে এমন ডেটার উপর প্রশিক্ষণ এবং পরীক্ষা করতে পারবেন যা শীঘ্রই বিজ্ঞাপন ডেটা হাব থেকে সরানো হবে। যদি আপনি এই ডেটাতে মডেল-প্রশিক্ষণের সীমার সম্মুখীন হন, তাহলে ডেটা মুছে ফেলা হলে সেই সীমাগুলি শেষ হয়ে যাবে।

যদি আপনার প্রচারণা বিশেষভাবে সক্রিয় থাকে, তাহলে এক সপ্তাহের ডেটা যথেষ্ট হতে পারে। পরিশেষে, স্বতন্ত্র ব্যবহারকারীর সংখ্যা ১০০,০০০ বা তার বেশি হওয়া উচিত, বিশেষ করে যদি আপনি অনেক বৈশিষ্ট্য ব্যবহার করে প্রশিক্ষণ নিচ্ছেন।

৩. একটি অস্থায়ী টেবিল তৈরি করুন

আপনার মডেলকে প্রশিক্ষণ দেওয়ার জন্য আপনি যে প্রচারণাটি ব্যবহার করবেন তা শনাক্ত করার পরে, নীচের কোয়েরিটি চালান।

CREATE TABLE
 binary_logistic_regression_example_data
AS(
 WITH all_data AS (
   SELECT
     imp.user_id as user_id,
     ROW_NUMBER() OVER(PARTITION BY imp.user_id) AS rowIdx,
     imp.browser as browser_name,
     gender_name as gender_name,
     age_group_name as age_group_name,
     DATETIME(TIMESTAMP_MICROS(
       imp.query_id.time_usec), "America/Los_Angeles") as impression_time,
     CASE # Binary classification of clicks simplifies model weight interpretation
        WHEN clk.click_id.time_usec IS NULL THEN 0
        ELSE 1
     END AS label
   FROM adh.google_ads_impressions imp
     LEFT JOIN adh.google_ads_creative_conversions clk USING (impression_id)
     LEFT JOIN adh.gender ON demographics.gender = gender_id
     LEFT JOIN adh.age_group ON demographics.age_group = age_group_id
   WHERE
     campaign_id IN (YOUR_CID_HERE)
 )
 SELECT
   label,
   browser_name,
   gender_name,
   age_group_name,
   # Although BQML could divide impression_time into several useful variables on
   # its own, it may attempt to divide it into too many features. As a best
   # practice extract the variables that you think will be most helpful.
   # The output of impression_time is a number, but we care about it as a
   # category, so we cast it to a string.
   CAST(EXTRACT(DAYOFWEEK FROM impression_time) AS STRING) AS day_of_week,
   # Comment out the previous line if training on a single week of data
   CAST(EXTRACT(HOUR FROM impression_time) AS STRING) AS hour,
 FROM
   all_data
 WHERE
   rowIdx = 1 # This ensures that there's only 1 row per user.
   AND
   gender_name IS NOT NULL
   AND
   age_group_name IS NOT NULL
);

৪. একটি মডেল তৈরি করুন এবং প্রশিক্ষণ দিন

আপনার টেবিল তৈরির ধাপগুলিকে আপনার মডেল তৈরির ধাপগুলি থেকে আলাদা করা একটি সর্বোত্তম অনুশীলন।

পূর্ববর্তী ধাপে তৈরি করা অস্থায়ী টেবিলে নিম্নলিখিত কোয়েরিটি চালান। শুরু এবং শেষ তারিখ প্রদানের বিষয়ে চিন্তা করবেন না, কারণ এগুলি অস্থায়ী টেবিলের ডেটার উপর ভিত্তি করে অনুমান করা হবে।

CREATE OR REPLACE
MODEL `binary_logistic_example`
OPTIONS(
   model_type = 'adh_logistic_regression'
)
AS (
   SELECT *
   FROM
       tmp.binary_logistic_regression_example_data
);

SELECT * FROM ML.EVALUATE(MODEL `binary_logistic_example`)

৫. ফলাফল ব্যাখ্যা করুন

কোয়েরিটি চালানো শেষ হলে, আপনি নীচের টেবিলের মতো একটি টেবিল পাবেন। আপনার প্রচারণার ফলাফল ভিন্ন হবে।

সারি

নির্ভুলতা

স্মরণ করা

নির্ভুলতা

f1_স্কোর

লগ_লস

রক_অক

০.৫৩০৮৩৮৯৪৩৪১৩৯৯৭১৮

০.২৮৪২৭৮০৪৪৮৬৭০৫৮৬৫

০.৫৪৫৩০৫৪৭৬২২৫৬৮৯৯২

০.৩৭০২৬৭৯৭১৬৯৬৩৩৬

০.৬৮৭২৮২৩২২২৩৭২২৯৭৪

০.৫৫২৩৬২৬৩৭৩৬২৬৩৭৩৫

ওজন পরীক্ষা করুন

আপনার মডেলের ক্লিকের পূর্বাভাস দেওয়ার সম্ভাবনায় কোন বৈশিষ্ট্যগুলি অবদান রাখে তা দেখতে ওজনগুলি দেখার জন্য নিম্নলিখিত কোয়েরিটি চালান:

SELECT * FROM ML.WEIGHTS(MODEL `binary_logistic_example`)

এই কোয়েরিটি নীচের ফলাফলের মতো ফলাফল দেবে। মনে রাখবেন যে BigQuery প্রদত্ত লেবেলগুলিকে বাছাই করবে এবং "সবচেয়ে ছোট" কে 0 এবং সবচেয়ে বড়টিকে 1 হিসাবে বেছে নেবে। এই উদাহরণে, ক্লিক করা হল 0 এবং not_clicked হল 1। সুতরাং, বৃহত্তর ওজনকে একটি ইঙ্গিত হিসাবে ব্যাখ্যা করুন যে বৈশিষ্ট্যটি ক্লিক করার সম্ভাবনা কম করে। অতিরিক্তভাবে, দিন 1 রবিবারের সাথে মিলে যায়।

প্রক্রিয়াজাত_ইনপুট

ওজন

ক্যাটাগরি_ওজন.ক্যাটাগরি

ক্যাটাগরি_ওজন.ওজন

ইন্টারসেপ্ট

-০.০০৬৭৯০০৮৮৬৪৮৪৭৪৩৩৬৪

ব্রাউজার_নাম

শূন্য

অজানা ০.৭৮২০৫৫৬৩০৬৮০৯৯২৪৯

অপেরা ০.০৯৭০৭৩৭০০০৬৯৫০৪৪৪৩

ডালভিক -০.৭৫২৩৩১৯০৪৪৮৪৫৪২৪৬

প্রান্ত ০.০২৬৬৭২৪৬৪৬৮৮৪৪২৩৪৮

সিল্ক -০.৭২৫৩৯৯১৬৯৬৯৩৪৮৭০৬

অন্যান্য -০.১০৩১৭৪৪৪৮৪০৯১৯৩২৫

স্যামসাং ব্রাউজার 0.49861066525009368

ইয়ানডেক্স ১.৩৩২২৬০৮৯৭৭৫৮১১২১

আইই -০.৪৪১৭০৯৪৭৩৮১৪৭৫২৯৫

ফায়ারফক্স -০.১০৩৭২৬০৯৪৬১৫৫৭৭১৪

ক্রোম ০.০৬৯১১৫৯৩১০৮৪৭৯৪০৬৬

সাফারি ০.১০৯৩১৩৬২১২৩৬৭৬৪৭৫

সপ্তাহের_দিন

শূন্য

৭ ০.০৫১৭৮০৩৫০৬৩৯৯৯২২৭৭

৬ -০.০৯৮৯০৫০১১৪৭৭১৭৬৭১৬

৪ -০.০৯২৩৯৫১৭৮১৮৮৩৫৮৪৬২

৫ -০.০১০৬৯৩৬২৫৯৮৩৫৫৪১৫৫

৩ -০.০৪৭৬২৯৯৮৭১১০৭৬৬৬৩৮

১ -০.০০৬৭০৩০৬৭৩১৪০৯৩৩১২২

2 0.061739400111810727

ঘন্টা

শূন্য

১৫ -০.১২০৮১৪২০৭৭৮২৭৩

১৬ -০.১৪৬৭০৪৬৭৬৫৭৭৭৯১৮২

১ ০.০৩৬১১৮৪৬০০০১৩৫৫৯৩৪

১০ -০.০২২১১১৯৮৫৩০৩০৬১০১৪

৩ ০.১০১৪৬২৯৭২৪১৩৩৯৬৮৮

৮ ০.০০০৩২৩৩৪৯০৭৫৭০৮৮২৪৬৪

১২ -০.০৯২৮১৯৮৮৮১০১৪৬৩৮১৩

১৯ -০.১২১৫৮৩৪৯৫২৩২৪৮১৬২

2 0.27252001951689164

৪ ০.১৩৮৯২১৫৩৩৩২৭৮০২৮

১৮ -০.১৩২০২১৮৯১২২৪১৮৮২৫

৫ ০.০৩০৩৮৭০১০৫৬৪১৪২৩৯২

২২ ০.০০৮৫৮০৩৬৪৭৬০২৫৬৫৭৮২

১৩ -০.০৭০৬৯৬৫৩৪৭১২৭৩২৭৫৩

১৪ -০.০৯১২৮৫৩৯২৮৯২৫৮৪৪

৯ -০.০১৭৮৮৮৬৫১৭১৯৩৫০২১৩

২৩ ০.১০২১৬৫৬৯৬৪১৬৫২০২৯

১১ -০.০৫৩৪৯৪৬১১৮২৭২৪০০৫৯

২০ -০.১০৮০০১৮০৮৫৩২৭৩৪২৯

২১ -০.০৭০৭০২১০৫৪৭১৫২৮৩৪৫

০ ০.০১১৭৩৫২০০৯৯৬৩২৬৫৫৯

৬ ০.০১৬৫৮১২৩৯৩৮১৫৬৩৫৯৮

১৭ -০.১৫৬০২১৩৮৯৪৯৫৫৯৯১৮

৭ ০.০২৪০৭৭৩৯৪৩৮৭৯৫৩৫২৫

বয়স_গোষ্ঠীর_নাম

শূন্য

৪৫-৫৪ -০.০১৩১৯২৯০১১২৫০৩২৬৩৭

৬৫+ ০.০৩৫৬৮১৩৪১৪০৭৪৬৯২৭৯

২৫-৩৪ -০.০৪৪০৩৮১০২৫৪৯৭৩৩১১৬

১৮-২৪ -০.০৪১৪৮৮১৭০১১০৮৩৬৩৭৩

অজানা ০.০২৫৪৬৬৩৪৪৭০৯৪৭২৩১৩

৩৫-৪৪ ০.০১৫৮২৪১২৭৭৮৮০৯১৮৮

৫৫-৬৪ -০.০০৪৮৩২৩৭৩৫৯০৬২৮৯৪৬

লিঙ্গ_নাম

শূন্য

পুরুষ ০.০৬১৪৭৫২৭৪৪৪৮৪০৩৯৭৭

অজানা ০.৪৬৬৬০৬১১৫৮৩৩৯৮৪৪৩

মহিলা -০.১৩৬৩৫৬০১৭৭১১৯৪৯১৬