A/B testing คืออะไร?

A/B Testing ด้วย Python

Moe Lotfy, PhD

Principal Data Science Manager

A/B testing เบื้องต้น

  • A/B test คือ...

     
    • การทดลองที่ออกแบบมาเพื่อทดสอบว่าเวอร์ชันใดดีกว่า
    • อิงจากเมตริก: อัตราการสมัคร, ยอดขายเฉลี่ยต่อผู้ใช้ เป็นต้น
    • ใช้การสุ่มมอบหมายกลุ่มและวิเคราะห์ผลลัพธ์
A/B Testing ด้วย Python

ควรทำ A/B testing หรือไม่?

กรณีที่ควรใช้ A/B testing:

  • เพิ่มประสิทธิภาพอัตราการแปลง
  • เปิดตัวฟีเจอร์ใหม่ของแอป
  • ประเมินผลเพิ่มเติมของโฆษณา
  • ประเมินผลกระทบจากการทดลองยา

กรณีที่ไม่ควรใช้ A/B testing:

  • ทราฟฟิกไม่เพียงพอ / กลุ่มตัวอย่างเล็กเกินไป
  • ไม่มีสมมติฐานที่ชัดเจนและสมเหตุสมผล
  • มีข้อพิจารณาด้านจริยธรรม
  • ต้นทุนค่าเสียโอกาสสูง
A/B Testing ด้วย Python

ขั้นตอนพื้นฐานของ A/B testing

  1. กำหนดเป้าหมายและรูปแบบ/ประสบการณ์ที่ต้องการทดสอบ
  2. สุ่มเลือกผู้ใช้เพื่อเข้าร่วม
  3. สุ่มมอบหมายผู้ใช้ไปยัง:
    • กลุ่มควบคุม: สถานะปัจจุบัน
    • กลุ่มทดลอง: การออกแบบใหม่
  4. บันทึกการกระทำของผู้ใช้และคำนวณเมตริก
  5. ทดสอบความแตกต่างที่มีนัยสำคัญทางสถิติ

ขั้นตอน A/B testing

A/B Testing ด้วย Python

คุณค่าของการสุ่ม

  • ความสามารถในการสรุปผลและความเป็นตัวแทน
  • ลดความเอนเอียงระหว่างกลุ่ม
  • สร้างความสัมพันธ์เชิงสาเหตุโดยแยกผลของการทดลอง

 

ภาพประกอบการสุ่มตัวอย่างและการสุ่มมอบหมายกลุ่ม

1 https://www.statology.org/random-selection-vs-random-assignment/
A/B Testing ด้วย Python

ตัวอย่าง Python สำหรับการสุ่มมอบหมายกลุ่ม

checkout.info()
RangeIndex: 9000 entries, 0 to 8999
Data columns (total 6 columns):
 #   Column         Non-Null Count  Dtype  
 0   user_id        9000 non-null   int64  
 1   checkout_page  9000 non-null   object 
 2   order_value    7605 non-null   float64
 3   purchased      9000 non-null   float64
 4   gender         9000 non-null   object 
 5   browser        9000 non-null   object 
dtypes: float64(2), int64(1), object(3)
memory usage: 422.0+ KB
A/B Testing ด้วย Python

ตัวอย่าง Python สำหรับการสุ่มมอบหมายกลุ่ม

checkout['gender'].value_counts(normalize=True)
F    0.507556
M    0.492444
Name: gender, dtype: float64
sample_df = checkout.sample(n=3000)
sample_df['gender'].value_counts(normalize=True)
M    0.506333
F    0.493667
Name: gender, dtype: float64
A/B Testing ด้วย Python

ตัวอย่าง Python สำหรับการสุ่มมอบหมายกลุ่ม

checkout.groupby('checkout_page')['gender'].value_counts(normalize=True)
checkout_page  gender
A              M         0.505000
               F         0.495000
B              F         0.507333
               M         0.492667
C              F         0.520333
               M         0.479667
Name: gender, dtype: float64
A/B Testing ด้วย Python

มาฝึกกันเถอะ!

A/B Testing ด้วย Python

Preparing Video For Download...