Data Analyst › Business metrics

Cohort และ retention

ประมาณ 30 นาที

เป้าหมายของบท

  • นิยาม cohort (กลุ่มลูกค้าตามเดือนที่สมัคร) และ retention
  • อ่านค่า retention ที่ต่ำผิดปกติแล้วสืบสาเหตุถึงต้นตอ
  • เชื่อมโยง cohort กับคุณภาพของช่องทางที่พาลูกค้าเข้ามา

cohort คืออะไร

Cohort คือกลุ่มลูกค้าที่เข้าร่วม (ในที่นี้คือสมัครสมาชิก) ในช่วงเวลาเดียวกัน — ใช้เปรียบเทียบพฤติกรรมของกลุ่ม ต่างๆ ข้ามช่วงเวลาได้ เช่น “คนที่สมัครเดือน มิ.ย. กลับมาซื้อซ้ำมากน้อยแค่ไหนเทียบกับคนที่สมัครเดือน ก.ค.”

c = customers.assign(cohort=lambda d: d.signup_date.str[:7])

retention คืออะไร

ในบทนี้นิยาม retention ว่าคือสัดส่วนลูกค้าที่สั่งซื้อตั้งแต่ 2 ครั้งขึ้นไป นับทุกสถานะออเดอร์ (ต่างจากบทที่แล้ว ที่นับเฉพาะออเดอร์ completed เพราะคำถามคือ “ลูกค้ากลับมาลองซื้ออีกไหม” ไม่ใช่ “ลูกค้าซื้อสำเร็จซ้ำไหม”):

k = orders.groupby('customer_id').size().rename('n_orders')
merged = customers.merge(k, on='customer_id', how='left').fillna({'n_orders': 0})
retention = (merged['n_orders'] >= 2).mean()

เจอ retention ต่ำผิดปกติ — อย่ารีบสรุป

ถ้า cohort เดือนหนึ่งมี retention ต่ำกว่าเดือนข้างเคียงมาก ขั้นแรกที่ควรทำคือ ตรวจดูองค์ประกอบของ cohort นั้น ก่อนสรุปว่าเป็นปัญหาของช่วงเวลานั้นเอง เช่น เช็คว่าคนกลุ่มนั้นมาจากช่องทางไหนบ้าง:

june = c[c['cohort'] == '2025-06']
june['channel'].value_counts()

บ่อยครั้งที่ retention ต่ำผิดปกติของ cohort หนึ่ง แท้จริงแล้วเป็นปัญหาของช่องทางที่พาลูกค้าเข้ามา ไม่ใช่ปัญหาของ ช่วงเวลานั้นเอง — cohort นั้นแค่บังเอิญมีคนจากช่องทางที่มีปัญหาเข้ามาเยอะเป็นพิเศษ

ตัวอย่างแก้โจทย์

กด "ขั้นต่อไป" ทีละขั้น ลองรันและแก้โค้ดในแต่ละขั้นได้

cohort ตามเดือนสมัคร มี retention ต่างกันแค่ไหน

อยากรู้ว่าลูกค้าที่สมัครในแต่ละเดือนของปี 2025 กลับมาซื้อซ้ำมากน้อยแค่ไหน

  1. แบ่งลูกค้าเป็น cohort ตามเดือนที่สมัคร (signup_date) แล้วหา retention (สั่งซื้อตั้งแต่ 2 ครั้งขึ้นไป นับทุกสถานะ)

    Python

สืบสาเหตุ — cohort มิ.ย. มีองค์ประกอบต่างจากปกติ

ทำไม cohort มิ.ย. 2025 ถึง retention ต่ำผิดปกติ

  1. เช็คสัดส่วนช่องทางสมัคร (channel) ของคนที่สมัครเดือน มิ.ย. 2025 เทียบกับภาพรวมทั้งหมด

    Python

เติมช่องว่าง

แทน ___ ด้วยโค้ดที่ถูกต้อง แล้วกดตรวจคำตอบ

ยังไม่ได้ทำ

แบ่งลูกค้าเป็น cohort ตามเดือนที่สมัคร เก็บไว้ในคอลัมน์ cohort เติม ___ ให้ครบ

แบบฝึกท้ายบท

บทนี้จะนับว่าเสร็จเมื่อผ่านข้อพื้นฐานและประยุกต์ครบ ข้อท้าทายได้ดาวเพิ่ม

🟢 พื้นฐาน

🟢 พื้นฐานยังไม่ได้ทำ

retention rate (%) ของ cohort เดือน ม.ค. 2025 เก็บไว้ในตัวแปร retention_jan

🟢 พื้นฐานยังไม่ได้ทำ

retention rate (%) ของ cohort เดือน มิ.ย. 2025 เก็บไว้ในตัวแปร retention_jun

🟢 พื้นฐานยังไม่ได้ทำ

cohort มิ.ย. 2025 มี retention ต่ำกว่า cohort ม.ค. 2025 ไหม (bool) เก็บไว้ในตัวแปร jun_lower

🟢 พื้นฐานยังไม่ได้ทำ

สัดส่วนช่องทางสมัคร (channel) ของลูกค้าที่สมัครเดือน มิ.ย. 2025 (Series) เก็บไว้ในตัวแปร result

🟡 ประยุกต์

🟡 ประยุกต์ยังไม่ได้ทำ

% ของลูกค้าที่สมัครเดือน มิ.ย. 2025 ที่มาจากช่องทาง promo เก็บไว้ในตัวแปร pct_promo_june

🟡 ประยุกต์ยังไม่ได้ทำ

% ของลูกค้าทั้งหมด (ทุกเดือน) ที่มาจากช่องทาง promo เก็บไว้ในตัวแปร pct_promo_overall

🟡 ประยุกต์ยังไม่ได้ทำ

retention rate (%) แยกตามช่องทางสมัคร ทุกช่องทาง เรียงมากไปน้อย (Series) เก็บไว้ในตัวแปร result

🔴 ท้าทาย

🔴 ท้าทายยังไม่ได้ทำ

ช่องทางไหนมี retention สูงที่สุด และต่ำที่สุด (สองตัวแปร, string) เก็บไว้ในตัวแปร best_channel, worst_channel

🔴 ท้าทายยังไม่ได้ทำ

retention rate (%) ของ cohort 3 เดือนติดกัน (พ.ค./มิ.ย./ก.ค. 2025) เรียงตามเดือน (ไม่ใช่เรียงตามค่า) เก็บไว้ในตัวแปร result

Quiz

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

สรุป

  • cohort คือกลุ่มลูกค้าที่สมัครในช่วงเวลาเดียวกัน ใช้เปรียบเทียบพฤติกรรมข้ามช่วงเวลาได้
  • retention ต่ำผิดปกติของ cohort หนึ่ง มักมีสาเหตุจากองค์ประกอบของ cohort นั้น (เช่น ช่องทางสมัคร) ไม่ใช่ตัวช่วงเวลาเอง
  • cohort มิ.ย. 2025 retention ต่ำเพราะ 70.59% มาจากช่องทาง promo (เทียบกับ 9.09% โดยรวม) — promo channel มี retention ต่ำสุดในทุกช่องทาง (10.33%)

คำถามสัมภาษณ์

เจอ cohort หนึ่งมี retention ต่ำกว่าปกติมาก จะสืบสาเหตุยังไง

เริ่มจากตรวจสอบองค์ประกอบของ cohort นั้นก่อน เช่น ช่องทางสมัคร กลุ่มอายุ พื้นที่ หรือแคมเปญที่พาเข้ามา แล้วเทียบสัดส่วนกับภาพรวมทั้งหมดว่าต่างกันชัดเจนไหม ถ้าพบว่า cohort นั้นมีองค์ประกอบเฉพาะที่ต่างจากปกติ (เช่น ส่วนใหญ่มาจากแคมเปญเดียว) ให้ตรวจ retention ของแต่ละองค์ประกอบแยกกันเพื่อยืนยันว่าปัญหาจริงๆ อยู่ตรงไหน

ทีมการตลาดอยากรู้ว่าแคมเปญ promo คุ้มไหม จะตอบยังไงโดยใช้ทั้งจำนวนลูกค้าใหม่และ retention ประกอบกัน

ต้องดูสองด้านคู่กัน: (1) แคมเปญพาลูกค้าใหม่เข้ามาได้เท่าไร (ในกรณีนี้ 300 คน เป็นสัดส่วนใหญ่ของ cohort มิ.ย.) (2) ลูกค้ากลุ่มนั้นกลับมาซื้อซ้ำมากแค่ไหน (promo channel มี retention แค่ 10.33% ต่ำที่สุดในทุกช่องทาง) แล้วเทียบ ต้นทุนแคมเปญกับมูลค่าที่ได้จากลูกค้ากลุ่มนี้ในระยะยาว — ถ้าต้นทุนสูงแต่ลูกค้าส่วนใหญ่ไม่กลับมาซื้อซ้ำเลย แคมเปญนี้อาจไม่คุ้มในระยะยาวแม้จะได้ลูกค้าใหม่เยอะในระยะสั้น