A/B testing là gì?

A/B Testing bằng Python

Moe Lotfy, PhD

Principal Data Science Manager

Giới thiệu A/B testing

  • A/B test là...

     
    • thí nghiệm để kiểm tra phiên bản nào tốt hơn
    • dựa trên chỉ số: tỷ lệ đăng ký, doanh thu TB/người dùng, v.v.
    • dùng phân bổ ngẫu nhiên và phân tích kết quả
A/B Testing bằng Python

Có nên A/B test không?

Ứng dụng phù hợp của A/B testing:

  • Tối ưu tỷ lệ chuyển đổi
  • Ra mắt tính năng app mới
  • Đánh giá hiệu ứng tăng thêm của quảng cáo
  • Đánh giá tác động thử nghiệm thuốc

Không nên A/B test khi:

  • Lưu lượng không đủ/cỡ mẫu “nhỏ”
  • Không có giả thuyết rõ ràng, hợp lý
  • Có vấn đề đạo đức
  • Chi phí cơ hội cao
A/B Testing bằng Python

Các bước cơ bản của A/B testing

  1. Xác định mục tiêu và thiết kế/trải nghiệm
  2. Lấy mẫu ngẫu nhiên người dùng để ghi danh
  3. Phân bổ ngẫu nhiên người dùng vào:
    • đối chứng: trạng thái hiện tại
    • thử nghiệm: thiết kế mới
  4. Ghi log hành vi và tính chỉ số
  5. Kiểm định khác biệt có ý nghĩa thống kê

Các bước A/B testing

A/B Testing bằng Python

Giá trị của ngẫu nhiên hóa

  • Khả năng khái quát và đại diện
  • Giảm thiểu sai lệch giữa các nhóm
  • Thiết lập quan hệ nhân quả bằng cách cô lập tác động can thiệp

 

Minh họa lấy mẫu và phân bổ ngẫu nhiên

1 https://www.statology.org/random-selection-vs-random-assignment/
A/B Testing bằng Python

Ví dụ Python về phân bổ ngẫu nhiên

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 bằng Python

Ví dụ Python về phân bổ ngẫu nhiên

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 bằng Python

Ví dụ Python về phân bổ ngẫu nhiên

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 bằng Python

Ayo berlatih!

A/B Testing bằng Python

Preparing Video For Download...