การตรวจสอบความสมเหตุสมผล: ความถูกต้องภายนอก

A/B Testing ด้วย Python

Moe Lotfy, PhD

Principal Data Science Manager

Simpson's Paradox

Simpson's Paradox: ปรากฏการณ์ทางสถิติที่แนวโน้มระหว่างตัวแปรอาจปรากฏ หายไป หรือกลับทิศ เมื่อแบ่งประชากรออกเป็นกลุ่มย่อย

print(simp_imbalanced.groupby('Variant').mean())
Variant     Conversion
A              0.80
B              0.64
print(simp_imbalanced.groupby(['Variant','Device']).mean())
Variant Device   Conversion
A       Phone        0.875
        Tablet       0.500
B       Phone        0.900
        Tablet       0.575
A/B Testing ด้วย Python

Simpson's Paradox

simp_imbalanced.groupby(['Variant','Device'])\
                            ['Device'].count()
Variant  Device
A        Phone     40
         Tablet    10
B        Phone     10
         Tablet    40

ตารางตัวอย่าง Simpson's Paradox

A/B Testing ด้วย Python

Simpson's Paradox

simp_balanced.groupby(['Variant','Device'])\
                        ['Device'].count()
Variant  Device
A        Phone     40
         Tablet    10
B        Phone     40
         Tablet    10
print(simp_balanced.groupby('Variant').mean())
Variant     Conversion
A              0.70
B              0.52
print(simp_balanced.groupby(['Variant','Device']).mean())
Variant Device     Conversion
A       Phone        0.750
        Tablet       0.500
B       Phone        0.575
        Tablet       0.300
A/B Testing ด้วย Python

Novelty Effect

  • Novelty effect
    • การที่เมตริกดีขึ้นชั่วคราวเพราะผู้ใช้อยากลองฟีเจอร์ใหม่
  • Change aversion
    • ตรงข้ามกับ novelty effect
    • ผู้ใช้หลีกเลี่ยงฟีเจอร์ใหม่เพราะคุ้นเคยกับแบบเดิม
A/B Testing ด้วย Python

การตรวจสอบ Novelty Effect ด้วยภาพ

# Plot Lift in CTR vs test days
novelty.plot('date', 'CTR_lift')
plt.ylim([0, 0.09])
plt.title('Lift in CTR vs Test Duration')
plt.show()

การแสดง novelty effect ในรูปแบบกราฟเส้นของ CTR เทียบกับจำนวนวันของการทดลอง

A/B Testing ด้วย Python

การแก้ไขผลกระทบจาก Novelty Effect

  • เพิ่มระยะเวลาการทดสอบ
    • เริ่มนับข้อมูลหลังจาก treatment effect คงที่แล้ว
  • วิเคราะห์กลุ่มผู้ใช้ใหม่และผู้ใช้เก่าแยกกัน
    • ผู้ใช้ใหม่มักไม่ค่อยได้รับผลจาก novelty effect
    • ผู้ใช้เก่ามักเปรียบเทียบกับประสบการณ์ที่คุ้นเคย
A/B Testing ด้วย Python

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

A/B Testing ด้วย Python

Preparing Video For Download...