Regresi Linear atau T-test. Bagaimana cara memilih?
\ Kita sering terjebak dalam kehebohan seputar model machine learning yang canggih dan terobosan deep learning, tetapi jangan lupakan regresi linear yang sederhana.
\ ==Di dunia LLM dan arsitektur mutakhir, regresi linear secara diam-diam memainkan peran penting, dan sudah waktunya kita menyoroti bagaimana hal ini bisa bermanfaat bahkan saat ini.==
\ Pertimbangkan skenario di mana perusahaan e-commerce memperkenalkan banner baru, dan kita bertujuan untuk menilai dampaknya terhadap rata-rata durasi sesi. Untuk mencapai ini, sebuah eksperimen dilakukan, dan data dikumpulkan untuk analisis. Mari kita analisis hasilnya.
Mari kita gunakan alat yang familiar untuk tugas ini: t-test.
Hasilnya cukup menjanjikan:
Peningkatan dalam metrik adalah perbedaan antara rata-rata sampel dari kelompok kontrol dan perlakuan. Dalam kasus kita, perkiraan peningkatan adalah 0,56 menit, menunjukkan bahwa pengguna, rata-rata, menghabiskan 33 detik lebih lama menggunakan produk kita.
Sekarang, mari kita gunakan regresi linear dengan vektor perlakuan (apakah banner baru ditampilkan atau tidak) sebagai variabel independen dan rata-rata durasi sesi sebagai variabel output.
Kemudian kita cetak ringkasan model kita:
\
\ Perlu dicatat, koefisien untuk variabel perlakuan selaras dengan estimasi peningkatan kita sebelumnya sebesar 0,56. Perlu dicatat bahwa R-squared hanya 0,008, dan kita tidak menjelaskan terlalu banyak varians dengan model ini.
Apakah ini kebetulan bahwa peningkatan yang kita dapatkan dari t-test dan koefisien perlakuan adalah sama? Mari kita dalami hubungannya.
\ Mari kita pikirkan apa yang dicerminkan oleh variabel perlakuan. Ketika sama dengan 1, itu menunjukkan rata-rata durasi sesi untuk pengguna yang melihat banner; ketika sama dengan 0, itu menunjukkan rata-rata durasi sesi untuk pengguna yang tidak melihat banner. Ini berarti variabel perlakuan (atau slope dalam istilah regresi linear) menandakan perubahan rata-rata antara kelompok kontrol dan perlakuan.
Apa hipotesis nol untuk variabel perlakuan dalam regresi linear?
Apa hipotesis nol ketika kita menerapkan T-test untuk eksperimen? Ini benar-benar sama.
Oleh karena itu, ketika menghitung statistik-t dan p-value untuk hipotesis yang identik, temuan kita tetap konsisten dan identik.
Namun, apa alasan di balik penggunaan regresi linear? Kita tidak ingin hanya memperumit hal-hal.
\ Pertama, mari kita pikirkan apakah hanya perlakuan yang bertanggung jawab atas perubahan dalam metrik utama kita.
\ Dalam kenyataannya, ini mungkin tidak sepenuhnya akurat karena adanya bias seleksi.
\ Bias seleksi dalam pengujian A/B adalah jenis kesalahan ketika ada perbedaan sistematis antara kelompok yang dibandingkan yang bukan karena kebetulan acak, misalnya:
\
Kita menyaksikan bahwa pengguna lama lebih sering terpapar banner baru daripada pelanggan baru.
\
Alokasi acak yang kita gunakan dalam uji AB membantu kita menguranginya, tetapi sulit untuk dihilangkan sepenuhnya.
\ Mari kita rumuskan cara memperkirakan efek yang sebenarnya.
ATE: efek perlakuan rata-rata yang ingin kita perkirakan.
\ ATT: efek perlakuan rata-rata dari mereka yang dirawat. Kita juga bisa menyebutnya ACE: efek kausal rata-rata. Kita sebenarnya bisa menghitungnya. Ini adalah perbedaan antara rata-rata sampel dari kelompok kontrol dan perlakuan.
\ SB: bias seleksi yang ingin kita minimalkan.
\ Bagaimana kita bisa meminimalkannya?
\ Regresi linear memungkinkan kita untuk menambahkan kovariat/variabel pengganggu. Mari kita coba dan tambahkan sebagai salah satu variabel pengganggu rata-rata durasi sesi untuk pengguna sebelum eksperimen.
Dan cetak ringkasan modelnya:
R-squared kita telah melonjak! Sekarang, kita menjelaskan 86% dari varians.
\ Efek perlakuan kita sekarang adalah 0,47.
Jadi, kita memiliki dua efek perlakuan: 0,47 dan 0,56; mana yang benar?
\ Dalam kasus ini, kita tahu pasti efek yang sebenarnya karena saya telah mensimulasikan data dan peningkatan yang sebenarnya: 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)
Itu berarti 0,47 lebih baik dalam hal perbedaan absolut dan lebih dekat untuk mencerminkan peningkatan yang sebenarnya.
Menggunakan regresi linear memiliki keuntungan berikut:
\ Bisakah kita menggunakan regresi linear untuk tes lain, seperti Welch t-test atau uji Chi-square?
\ Jawabannya sederhana adalah ya. Namun, kita harus melakukan beberapa penyesuaian yang akan kita bahas di artikel berikutnya!


