برای اندازه‌گیری تست A/B چه چیزی را باید انتخاب کنیم؟ تست T یا رگرسیون خطی؟ تفاوت چیست و چرا رویکرد ساده‌ای مانند رگرسیون خطی واقعاًبرای اندازه‌گیری تست A/B چه چیزی را باید انتخاب کنیم؟ تست T یا رگرسیون خطی؟ تفاوت چیست و چرا رویکرد ساده‌ای مانند رگرسیون خطی واقعاً

چگونه برای تست A/B و رگرسیون خطی ارتباطات بسازیم: راهنمای ضروری

رگرسیون خطی یا تست T. کدام را انتخاب کنیم؟

\ ما اغلب درگیر هیاهوی مدل‌های یادگیری ماشینی پیچیده و پیشرفت‌های یادگیری عمیق می‌شویم، اما نباید رگرسیون خطی ساده را نادیده بگیریم.

\ ==در دنیایی از LLM و معماری‌های پیشرفته، رگرسیون خطی به آرامی نقش حیاتی ایفا می‌کند و زمان آن رسیده که روشن کنیم چگونه حتی امروز هم می‌تواند مفید باشد.==

\ سناریویی را در نظر بگیرید که یک شرکت تجارت الکترونیک بنر جدیدی را معرفی می‌کند و ما قصد داریم تأثیر آن را بر میانگین طول جلسه ارزیابی کنیم. برای دستیابی به این هدف، یک آزمایش انجام شد و داده‌ها برای تجزیه و تحلیل جمع‌آوری شدند. بیایید نتایج را تجزیه و تحلیل کنیم.

تست T

بیایید از یک ابزار آشنا برای این کار استفاده کنیم: تست 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 از نظر اختلاف مطلق بهتر است و نزدیک‌تر به منعکس کردن افزایش واقعی است.

نتیجه‌گیری

استفاده از رگرسیون خطی مزایای زیر را دارد:

  1. درک عمیق‌تری از داده‌های ما و اینکه مدل چقدر با داده‌ها همخوانی دارد ارائه می‌دهد.
  2. با استفاده از متغیرهای همراه، می‌توانیم سوگیری انتخاب را کاهش دهیم که منجر به تخمین دقیق‌تر اثر تیمار می‌شود.

\ آیا می‌توانیم از رگرسیون خطی برای تست‌های دیگر، مانند تست Welch t یا تست Chi-square استفاده کنیم؟

\ پاسخ ساده بله است. با این حال، ما باید تنظیماتی انجام دهیم که در مقالات بعدی به آنها خواهیم پرداخت!

فرصت‌ های بازار
لوگو B
B قیمت لحظه ای(B)
$0.21827
$0.21827$0.21827
-6.97%
USD
نمودار قیمت لحظه ای B (B)
سلب مسئولیت: مطالب بازنشرشده در این وب‌ سایت از منابع عمومی گردآوری شده‌ اند و صرفاً به‌ منظور اطلاع‌ رسانی ارائه می‌ شوند. این مطالب لزوماً بازتاب‌ دهنده دیدگاه‌ ها یا مواضع MEXC نیستند. کلیه حقوق مادی و معنوی آثار متعلق به نویسندگان اصلی است. در صورت مشاهده هرگونه محتوای ناقض حقوق اشخاص ثالث، لطفاً از طریق آدرس ایمیل service@support.mexc.com با ما تماس بگیرید تا مورد بررسی و حذف قرار گیرد.MEXC هیچ‌ گونه تضمینی نسبت به دقت، جامعیت یا به‌ روزبودن اطلاعات ارائه‌ شده ندارد و مسئولیتی در قبال هرگونه اقدام یا تصمیم‌ گیری مبتنی بر این اطلاعات نمی‌ پذیرد. همچنین، محتوای منتشرشده نباید به‌عنوان توصیه مالی، حقوقی یا حرفه‌ ای تلقی شود و به منزله پیشنهاد یا تأیید رسمی از سوی MEXC نیست.