Linear regression หรือ T-test จะเลือกอย่างไร?
\ เรามักจะหมกมุ่นอยู่กับความฮือฮาเกี่ยวกับโมเดล machine learning ที่ทันสมัยและความก้าวหน้าของ deep learning แต่อย่าลืมมองข้าม linear regression ที่เรียบง่าย
\ ==ในโลกของ LLM และสถาปัตยกรรมที่ล้ำสมัย linear regression มีบทบาทสำคัญอย่างเงียบๆ และถึงเวลาแล้วที่เราจะมาเน้นย้ำว่ามันยังมีประโยชน์แม้ในยุคปัจจุบัน==
\ ลองพิจารณาสถานการณ์ที่บริษัทอีคอมเมิร์ซแนะนำแบนเนอร์ใหม่ และเราต้องการประเมินผลกระทบของมันต่อระยะเวลาเซสชันเฉลี่ย เพื่อให้บรรลุเป้าหมายนี้ การทดลองได้ถูกดำเนินการและข้อมูลถูกรวบรวมเพื่อการวิเคราะห์ มาวิเคราะห์ผลลัพธ์กันเลย
มาใช้เครื่องมือที่คุ้นเคยสำหรับงานนี้: t-test
ผลลัพธ์ค่อนข้างน่าพอใจ:
การเพิ่มขึ้นของเมตริกเป็นเพียงความแตกต่างระหว่างค่าเฉลี่ยของกลุ่มควบคุมและกลุ่มทดลอง ในกรณีของเรา การเพิ่มขึ้นโดยประมาณคือ 0.56 นาที แสดงว่าผู้ใช้โดยเฉลี่ยใช้เวลานานขึ้น 33 วินาทีในการใช้ผลิตภัณฑ์ของเรา
ตอนนี้มาใช้ linear regression โดยใช้เวกเตอร์การทดลอง (ว่าแบนเนอร์ใหม่แสดงหรือไม่) เป็นตัวแปรอิสระและระยะเวลาเซสชันเฉลี่ยเป็นตัวแปรผลลัพธ์
จากนั้นเราพิมพ์สรุปของโมเดล:
\
\ น่าสังเกตว่าค่าสัมประสิทธิ์สำหรับตัวแปรการทดลองสอดคล้องกับการประมาณการเพิ่มขึ้นก่อนหน้านี้ที่ 0.56 น่าสังเกตว่า R-squared เป็นเพียง 0.008 และเราไม่ได้อธิบายความแปรปรวนมากเกินไปด้วยโมเดลนี้
เป็นเรื่องบังเอิญหรือไม่ที่การเพิ่มขึ้นที่เราได้จาก t-test และค่าสัมประสิทธิ์การทดลองเหมือนกัน? มาเจาะลึกถึงความเชื่อมโยง
\ มาคิดว่าตัวแปรการทดลองสะท้อนอะไร เมื่อมันเท่ากับ 1 จะแสดงระยะเวลาเซสชันเฉลี่ยสำหรับผู้ใช้ที่เห็นแบนเนอร์ เมื่อมันเท่ากับ 0 จะแสดงระยะเวลาเซสชันเฉลี่ยสำหรับผู้ใช้ที่ไม่เห็นแบนเนอร์ นั่นหมายความว่าตัวแปรการทดลอง (หรือความชันในแง่ของ linear regression) แสดงการเปลี่ยนแปลงค่าเฉลี่ยระหว่างกลุ่มควบคุมและกลุ่มทดลอง
สมมติฐานว่างสำหรับตัวแปรการทดลองใน linear regression คืออะไร?
สมมติฐานว่างเมื่อเราใช้ T-test สำหรับการทดลองคืออะไร? มันเหมือนกันทุกประการ
ดังนั้นเมื่อคำนวณสถิติ t และค่า p-value สำหรับสมมติฐานที่เหมือนกัน ผลการค้นพบของเรายังคงสอดคล้องและเหมือนกัน
อย่างไรก็ตาม เหตุผลที่อยู่เบื้องหลังการใช้ linear regression คืออะไร? เราไม่ต้องการทำให้สิ่งต่างๆ ซับซ้อนเกินไป
\ ก่อนอื่น มาคิดว่าการทดลองเพียงอย่างเดียวรับผิดชอบต่อการเปลี่ยนแปลงของเมตริกหลักของเราหรือไม่
\ ในความเป็นจริง สิ่งนี้อาจไม่ถูกต้องทั้งหมดเนื่องจากการมีอยู่ของ selection bias
\ Selection bias ใน A/B testing เป็นประเภทของข้อผิดพลาดเมื่อมีความแตกต่างอย่างเป็นระบบระหว่างกลุ่มที่ถูกเปรียบเทียบซึ่งไม่ได้เกิดจากโอกาสสุ่ม ตัวอย่างเช่น:
\
เราพบว่าผู้ใช้เก่าได้รับการแสดงแบนเนอร์ใหม่บ่อยกว่าลูกค้าใหม่
\
การจัดสรรแบบสุ่มที่เราใช้ในการทดสอบ AB ช่วยเราลดผลกระทบ แต่ยากที่จะกำจัดมันอย่างสมบูรณ์
\ มากำหนดวิธีประมาณผลกระทบที่แท้จริง
ATE: average treatment effect ที่เรามุ่งหวังจะประมาณ
\ ATT: average treatment effect ของผู้ที่ได้รับการทดลอง เราสามารถเรียกมันว่า ACE: average causal effect เราสามารถคำนวณได้จริง มันคือความแตกต่างระหว่างค่าเฉลี่ยตัวอย่างของกลุ่มควบคุมและกลุ่มทดลอง
\ SB: selection bias ที่เรามุ่งหวังจะลดให้น้อยที่สุด
\ เราจะลดมันได้อย่างไร?
\ Linear regression ช่วยให้เราเพิ่ม covariates/confounding variables มาลองและเพิ่มระยะเวลาเซสชันเฉลี่ยสำหรับผู้ใช้ ก่อนการทดลอง เป็นหนึ่งในตัวแปรรบกวน
และพิมพ์สรุปของโมเดล:
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 ดีกว่าในแง่ของความแตกต่างสัมบูรณ์และใกล้เคียงกับการสะท้อนการเพิ่มขึ้นจริงมากกว่า
การใช้ linear regression มีข้อได้เปรียบดังต่อไปนี้:
\ เราสามารถใช้ linear regression สำหรับการทดสอบอื่นๆ เช่น Welch t-test หรือ Chi-square test ได้หรือไม่?
\ คำตอบง่ายๆ คือใช่ อย่างไรก็ตาม เราต้องทำการปรับเปลี่ยนบางอย่างที่เราจะหารือในบทความถัดไป!


