رگرسیون خطی یا تست T. کدام را انتخاب کنیم؟
\ ما اغلب درگیر هیاهوی مدلهای یادگیری ماشینی پیچیده و پیشرفتهای یادگیری عمیق میشویم، اما نباید رگرسیون خطی ساده را نادیده بگیریم.
\ ==در دنیایی از LLM و معماریهای پیشرفته، رگرسیون خطی به آرامی نقش حیاتی ایفا میکند و زمان آن رسیده که روشن کنیم چگونه حتی امروز هم میتواند مفید باشد.==
\ سناریویی را در نظر بگیرید که یک شرکت تجارت الکترونیک بنر جدیدی را معرفی میکند و ما قصد داریم تأثیر آن را بر میانگین طول جلسه ارزیابی کنیم. برای دستیابی به این هدف، یک آزمایش انجام شد و دادهها برای تجزیه و تحلیل جمعآوری شدند. بیایید نتایج را تجزیه و تحلیل کنیم.
بیایید از یک ابزار آشنا برای این کار استفاده کنیم: تست t.
نتایج بسیار امیدوارکننده هستند:
افزایش در معیار به سادگی تفاوت بین میانگین نمونه گروههای کنترل و تیمار است. در مورد ما، افزایش تخمینی 0.56 دقیقه است که نشان میدهد کاربران به طور میانگین 33 ثانیه بیشتر از محصول ما استفاده میکنند.
اکنون، بیایید از رگرسیون خطی با بردار تیمار (اینکه بنر جدید نشان داده میشود یا خیر) به عنوان متغیر مستقل و میانگین طول جلسه به عنوان متغیر خروجی استفاده کنیم.
سپس خلاصه مدل خود را چاپ میکنیم:
\
\ قابل توجه است که ضریب متغیر تیمار با تخمین افزایش قبلی ما یعنی 0.56 همخوانی دارد. شایان ذکر است که R-squared فقط 0.008 است و ما واریانس زیادی را با این مدل توضیح نمیدهیم.
آیا این یک تصادف است که افزایشی که از تست t به دست آوردیم و ضریب تیمار یکسان هستند؟ بیایید به ارتباط بپردازیم.
\ بیایید فکر کنیم که متغیر تیمار چه چیزی را منعکس میکند. وقتی برابر 1 است، میانگین طول جلسه برای کاربرانی که بنر را مشاهده کردند را نشان میدهد؛ وقتی برابر 0 است، میانگین طول جلسه برای کاربرانی که بنر را ندیدند را نشان میدهد. این به معنای آن است که متغیر تیمار (یا شیب در اصطلاح رگرسیون خطی) نشاندهنده تغییر در میانگین بین گروههای کنترل و تیمار است.
فرضیه صفر برای متغیر تیمار در رگرسیون خطی چیست؟
فرضیه صفر وقتی تست T را برای آزمایش اعمال میکنیم چیست؟ کاملاً یکسان است.
بنابراین، هنگام محاسبه آماره t و p-value برای فرضیههای یکسان، یافتههای ما ثابت و یکسان باقی میمانند.
با این حال، دلیل استفاده از رگرسیون خطی چیست؟ ما نمیخواهیم فقط چیزها را پیچیده کنیم.
\ اول، بیایید فکر کنیم که آیا فقط تیمار مسئول تغییر در معیار اصلی ما است.
\ در واقعیت، این ممکن است کاملاً دقیق نباشد به دلیل وجود سوگیری انتخاب.
\ سوگیری انتخاب در تست A/B نوعی خطا است که زمانی رخ میدهد که تفاوت سیستماتیک بین گروههای مقایسه شده وجود دارد که به دلیل شانس تصادفی نیست، به عنوان مثال:
\
ما شاهد هستیم که کاربران قدیمی بیشتر از مشتریان جدید در معرض بنر جدید قرار میگیرند.
\
تخصیص تصادفی که در تستهای AB استفاده میکنیم به ما کمک میکند تا آن را کاهش دهیم، اما حذف کامل آن دشوار است.
\ بیایید نحوه تخمین اثر واقعی را فرمولبندی کنیم.
ATE: میانگین اثر تیمار که هدف ما تخمین آن است.
\ ATT: میانگین اثر تیمار افراد تحت درمان. همچنین میتوانیم آن را ACE: میانگین اثر علّی بنامیم. ما در واقع میتوانیم آن را محاسبه کنیم. این تفاوت بین میانگین نمونه گروههای کنترل و تیمار است.
\ SB: سوگیری انتخاب که هدف ما به حداقل رساندن آن است.
\ چگونه میتوانیم آن را به حداقل برسانیم؟
\ رگرسیون خطی به ما اجازه میدهد متغیرهای همراه/متغیرهای مخدوشکننده اضافه کنیم. بیایید آن را امتحان کنیم و به عنوان یکی از متغیرهای مخدوشکننده میانگین طول جلسه برای کاربران قبل از آزمایش را اضافه کنیم.
و خلاصه مدل را چاپ کنیم:
R-squared ما به شدت افزایش یافته است! اکنون، ما 86% واریانس را توضیح میدهیم.
\ اثر تیمار ما اکنون 0.47 است.
بنابراین، ما دو اثر تیمار داریم: 0.47 و 0.56؛ کدام یک صحیح است؟
\ در این مورد، ما به طور قطع اثر واقعی را میدانیم زیرا من دادهها را شبیهسازی کردهام و افزایش واقعی: 0.5
import numpy as np import pandas as pd from scipy import stats import statsmodels.api as sm np.random.seed(45) n = 500 x = np.random.normal(loc = 10 ,scale = 3, size= 2 * n) y = x + np.random.normal(loc = 2 , scale = 1 ,size = len(x)) # For 50% of users we simulate treatment effect treat = 1 * (np.random.rand(2 * n) <= 0.5) experiment = pd.DataFrame(x, columns=["covariate"]) experiment['metric'] = y experiment['treatment'] = treat experiment['noise'] = np.random.normal(size = len(experiment)) # Add noise and uplift to 'metric' for rows where 'treat' is equal to 1 # The real uplift is 0.5 experiment['metric'] = experiment.apply(lambda row: row['metric'] + 0.5 * row['treatment'] + row['noise'] if row['treatment'] == 1 else row['metric'], axis=1)
این بدان معناست که 0.47 از نظر اختلاف مطلق بهتر است و نزدیکتر به منعکس کردن افزایش واقعی است.
استفاده از رگرسیون خطی مزایای زیر را دارد:
\ آیا میتوانیم از رگرسیون خطی برای تستهای دیگر، مانند تست Welch t یا تست Chi-square استفاده کنیم؟
\ پاسخ ساده بله است. با این حال، ما باید تنظیماتی انجام دهیم که در مقالات بعدی به آنها خواهیم پرداخت!


