นานเท่าไหร่กว่าลูกค้าจะหนีเราไปด้วย Survival Analysis

วิเคราะห์เวลาที่เหตุการณ์นั้น ๆ จะเกิดขึ้น ได้ไม่ยาก

Thanat Lapthawan
ASquareLab
5 min readJan 6, 2019

--

Survival Analysis คืออะไร

ไม่ว่าธุรกิจอะไรก็ตาม ส่วนใหญ่แล้วรายได้หลักมาจากลูกค้า ไม่ว่าจะเป็นธุรกิจที่เน้นการขายสินค้าหรือการให้บริการ ทั้งนี้ การที่เราสามารถรู้ได้ว่า ลูกค้าจะอยู่กับเรานานแค่ไหน เมื่อไหร่ลูกค้าจะกลับมาใช้บริการเราอีก หรือตอนไหนที่ลูกค้าจะยกเลิกบริการกับเรา จะทำให้เราสามารถรับมือกับสถานะการณ์เหล่านี้ได้ เช่นการออก promotion เพื่อเพิ่มแรงจูงใจให้ลูกค้ากลับมาใช้บริการเมื่อเวลาผ่านไปช่วงเวลาหนึ่ง หรือการมีข้อเสนอพิเศษเสนอไปยังลูกค้าที่กำลังจะยกเลิกบริการ ก่อนที่ลูกค้าคนนั้นจะเอ่ยปากบอกเราซึ่งจะสร้าง customer experience ที่ดีให้กับลูกค้าได้มาก โดยหนึ่งในเครื่องมือที่ช่วยในการทำนายเหล่านี้คือ survival analysis

Survival Analysis เป็นเครื่องมือทางสถิติในหมวดของ time-to-event analysis ที่ช่วยในการวิเคราะห์และอธิบายว่า เป็นระยะเวลานานเท่าไหร่ เหตุการณ์นั้น ๆ จึงจะเกิดขึ้น เช่น ระยะเวลาเท่าไหร่ที่ลูกค้าคนนั้นจะมีโอกาสกลับมาใช้บริการเราอีก หรือระยะเวลาเท่าไหร่ที่ลูกค้าจะมีโอกาสในการยกเลิกบริการกับเรา หรือหาปัจจัยที่ส่งผลต่อระยะเวลาที่เหตุการณ์นั้น ๆ จะเกิดขึ้น เช่นการเพิ่ม/ลดราคาสินค้า จะส่งผลต่อความนิยมของสินค้าในตลาดนานขึ้นหรือไม่

Survival Analysis นั้นเริ่มต้นมาจากวงการแพทย์และงานวิจัยสาขาชีววิทยา โดยใช้ในการศึกษาการอยู่รอดของเชื้อหรือการมีชีวิตต่อ หรือวิเคราะห์ treatment ที่แตกต่างกันว่ามีส่งผลต่อผู้ป่วยอย่างไรบ้าง เช่นการให้ยารักษาชนิดใหม่ จะส่งผลให้หายเร็วขึ้นหรือไม่เมื่อเทียบกับผู้ป่วยที่ไม่ได้รับยารักษา ซึ่งจากที่กล่าวมา ทำให้เห็นว่า terminology ของ survival analysis จะเป็น survive, failure, และ death เป็นต้น

ปัจจุบัน การทำ survival analysis กำลังเป็นที่นิยม โดยเฉพาะในศาสตร์ของ data science กำลังเป็นที่นิยมขึ้น ซึ่งสามารถนำมาใช้คำนวณ

  • ระยะเวลาจนเกิด product failure
  • ระยะเวลาของการใช้งานของอุปกรณ์จนถึงช่วงการเรียกประกัน
  • ระยะเวลาของกระบวนการทางเคมีในโรงงาน ก่อนจะเกิด critical level
  • ระยะเวลาในการขายของ ตั้งแต่ช่วงเริ่มขาย จนถึงจุดที่ควร sale สินค้า
  • ระยะเวลาที่พนักงานจะอยู่กับเรา จนถึงช่วงเวลาที่เขาลาออก

Survival Analysis แตกต่างจากเครื่องมืออื่นอย่างไร

แน่นอนว่าปัญหาเรื่องของการทำนายการยกเลิกบริการ หรือการซื้อครั้งถัดไปนั้น สามารถมองเป็น classification problem ได้ โดยสร้าง model ในการทำนายว่าลูกค้าที่มีลักษณะ (features) เหล่านี้จะยกเลิกการใช้บริการเราหรือไม่

แต่ข้อแตกต่างระหว่าง Survival Analysis และ Classification Model คือ

  1. Survival Analysis ไม่ใช่เครื่องมือในการทำนายว่าเหตุการณ์นั้น ๆ จะเกิดขึ้นหรือไม่ แต่เป็นเครื่องมือที่หาความน่าจะเป็น (probability) ที่เหตุการณ์จะไม่เกิดขึ้น (survive) โดยเปลี่ยนแปลงไปตามระยะเวลา t
  2. Classification เป็นเครื่องมือในการทำนายว่าเหตุการณ์นั้น ๆ จะเกิดขึ้นหรือไม่ โดยมองช่วงเวลา เป็นหนึ่งในตัวแปร (feature) ซึ่งหมายความว่า เราจะรู้แค่ว่าลูกค้าคนนั้นจะยกเลิกบริการหรือไม่ (เกิด = 1 ไม่เกิด = 0) ซึ่งแตกต่างจาก Survival Analysis ที่จะดูภาพรวมของความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้นเมื่อเวลาเปลี่ยนแปลงไป
  3. Classification จะแบ่งชุดข้อมูล หรือนำข้อมูลจากอดีตเพื่อ มาสร้าง model และนำ model นี้ไปทำนายกับชุดข้อมูลใหม่ ว่าเหตุการณ์นั้นจะเกิดขึ้นหรือไม่ ในขณะที่ Survival Analysis จะทำการวิเคราะห์จากข้อมูลที่มี เพื่อหาความน่าจะเป็นที่เปลี่ยนแปลงไปตามระยะเวลาของชุดข้อมูลนั้น ๆ หมายความว่า เราไม่จำเป็นต้องรอให้มีข้อมูลใหม่เพื่อที่จะนำ model นี้มาใช้ เราสามารถวิเคราะห์จากกลุ่ม segment ที่เราสนใจได้เลย
  4. เนื่องจาก Survival Analysis เป็นเครื่องมือที่สร้างขึ้นมาเพื่อปัญหานี้ประเภทนี้เท่านั้น ทำให้มันมีคุณสมบัติเฉพาะในการ encode information ที่สำคัญมาใช้ในการคำนวณ (เช่นผลจาก censored data เป็นต้น) ในขณะที่ classification นั้น เราต้องมาทำ feature engineering เพิ่มเพื่อ encode information ตรงนี้ออกมา

เตรียมชุดข้อมูลวิเคราะห์ Survival Analysis

ข้อมูลที่นำมาใช้เป็นตัวอย่างในบทความนี้เป็นข้อมูลของ Telco-Customer-Churn ซึ่งเป็นข้อมูลของบริษัทโทรคมนาคมต่างประเทศ

Figure 1 ตัวอย่างชุดข้อมูล Telco Customer Churn

โดยข้อมูลที่จำเป็นสำหรับการทำ Survival Analysis นั้นต้องมี

  1. ระยะเวลา เช่น ลูกค้าคนนี้เป็นลูกค้ามาเป็นระยะเวลา 10 ปี หรือเขาเข้ามาหาเราครั้งสุดท้ายเมื่อเดือน 5 และกลับเข้ามาใช้บริการอีกครั้งตอนเดือน 8 แสดงว่าเขามีระยะเวลาเป็น 3 เดือน
  2. ชุดข้อมูลที่ระบุว่าเหตุการณ์นั้น เกิดขึ้นหรือไม่ เช่นลูกค้ากลับมาใช้บริการหรือไม่ หรือลูกค้ายกเลิกบริการของเราหรือไม่
  3. Factors อื่น ๆ ที่จะใช้ในการวิเคราะห์ เพื่อดูว่า factor นั้น ๆ มีผลต่อระยะเวลาหรือไม่เช่น package ที่ลูกค้าใช้ หรือประเภทของบัตรสมาชิก เป็นต้น
Figure 2 ตัวอย่างชุดข้อมูลที่จำเป็น

ทั้งนี้ จากเรื่องของระยะเวลาที่กล่าวไปนั้น ในกรณีที่ลูกค้าเข้ามาใช้บริการครั้งสุดท้ายเมื่อเดือน 5 แต่ไม่กลับมาใช้บริการอีกเลยนั้น จนถึงตอนนี้ (สมมุติว่าเป็นเดือน 1 ของปีถัดไป) แสดงว่าลูกค้าคนนั้นมีระยะเวลาทั้งหมดประมาณ 8 เดือน และเนื่องจากเขาไม่ได้กลับมาใช้บริการเราอีก เราจึงไม่มีข้อมูลในส่วนนี้ เช่นเราเก็บข้อมูลการซื้อซ้ำใน attribute Last Purchase ถ้าหากเขาไม่ได้กลับมาซื้อของจากเราอีก ข้อมูลส่วนนี้ก็จะว่างไป ข้อมูลว่างนี้เรียกว่า Censored data

Figure 3 ตัวอย่างชุดข้อมูล

Censored data เป็นชุดข้อมูลว่าง ที่เรารู้ว่ามันคืออะไร เพียงแค่ไม่มีข้อมูลในฐานข้อมูลของเรา เช่น ในกรณีของข้อมูลการย้ายค่ายบริการ ถ้าเราไม่มีข้อมูลว่าลูกค้าย้ายค่ายเมื่อไหร่ ซึ่งจะทำให้ attribute ของการย้ายค่ายเป็นช่องว่าง แต่เรารู้ว่าลูกค้าคนนั้นยังไม่ย้ายค่ายแน่ๆซึ่งแตกต่างจาก NA (Not available/missing value) ซึ่งเป็นข้อมูลว่าง และเราก็ไม่รู้ว่าข้อมูลมันคืออะไร

Censored data สามารถแบ่งออกได้เป็นหลาย Type โดยในส่วนของ Survival Analysis นั้นจะเป็น Right-Censored หมายถึงว่า เรารู้จุดเริ่มต้นของข้อมูลแต่ไม่รู้ว่าเหตุการณ์ต่อไปจะเกิดเมื่อไหร่ หรือในช่วงที่ทำการวิเคราะห์ข้อมูลนั้น เหตุการณ์ของลูกค้ากลุ่มที่ศึกษาอยู่ ยังไม่เกิดขึ้น หรือเพราะเราขาดการ follow up ของลูกค้าคนนั้น ๆ ไป ทำให้ตั้งแต่จุดนั้นเป็นต้นมา ไม่มีข้อมูลของลูกค้าคนนี้อีกเลยเป็นต้น

ส่วนข้อมูลที่มีเหตุการณ์เกิดขึ้นนั้น ใน survival analysis จะเรียกการเกิดขึ้นของเหตุการณ์ว่า failure ในขณะที่ข้อมูลที่ยังอยู่รอดในช่วงเวลานั้นจะเรียกว่า survive

ถ้าหากถึงช่วง study end แล้ว หรือหมายถึงช่วงที่เราเริ่มนำข้อมูลมาวิเคราะห์ ถ้าหากข้อมูลไหนที่เรายัง follow up อยู่แต่เหตุการณ์ยังไม่เกิด เราจะเรียกข้อมูลชุดนี้ว่า truncated data หรือการตัดจบ ซึ่งในแง่การคำนวณแล้ว เราจะมองกลุ่มนี้เหมือนกับ censored data นั้นเอง

ทำไมถึงไม่ใช้ regression

ถ้าเรานำระยะเวลาของคนที่ย้ายค่ายมาดูการกระจายตัว จะเป็นว่ากราฟมีลักษณะเบ้ขวา (right skew) มากๆ

Figure 4 Distribution ของระยะเวลาของลูกค้าที่ย้ายค่าย

จากทั้งเรื่องของ censored data และ skew distribution ทำให้เราไม่สามารถใช้ regression แบบปกติได้เนื่องจาก regression ไม่สามารถรับมือกับ censored data ได้ และ assumption ของ linear regression คือกราฟเป็นมีการกระจายตัวแบบปกติ (normal distribution) ซึ่งถ้าฝืนทำไป อาจจะทำให้ model ขาดความแม่นยำไปอย่างมาก

Fundamental of Survival Analysis

ส่วนประกอบสำคัญของ Survival analysis ก็คือ Survival curve, S(t) (หรือ survival function) ซึ่งเป็นฟังชั่นในการนำระยะเวลา t มาเทียบคู่กับความน่าจะเป็นที่จะอยู่รอดมากกว่าเวลา t

Equation 1: Survival curve

โดย CDF (Cumulative Distribution Function) เป็นความน่าจะเป็นของช่วงเวลาที่อยู่รอด น้อยกว่าหรือเท่ากับ t ทั้งนี้ จะเห็นว่าจากสมการ ถ้าเรามี CDF ของความน่าจะเป็นในการอยู่รอดตลอดทุกช่วงระยะเวลา เราก็จะสามารถคำนวณหา survival curve ได้อย่างง่าย

ถ้าอยากรู้ถึงอัตราการเปลี่ยนแปลงของเหตุการณ์ที่จะเกิดขึ้นในแต่ละช่วงเวลาแล้ว เราต้องใช้ Hazard function

Hazard Function

Hazard function (หรือเรียกว่า Hazard rate หรือ risk rate λ) คืออัตราการเปลี่ยนแปลงของคนที่อยู่รอด (survive) ในช่วงเวลา t จะยกเลิกบริการกับเรา ในช่วงเวลา t+1 หรือพูดง่าย ๆ ก็คือ อัตราการเปลี่ยนแปลงของการเกิดขึ้นของเหตุการณ์ ในช่วงเวลา t

Equation 2: Hazard function

อัตราการเปลี่ยนแปลงนี้ สามารถนำมาสร้างกราฟเส้น hazard rate เทียบกับระยะเวลาเพื่อดูได้ว่าช่วงระยะเวลาที่เท่าไหร่ที่การเปลี่ยนแปลงจะเกิดขึ้นมากเป็นพิเศษ

Figure 5 กราฟของ hazard rate ของ customer churn เมื่อเทียบกับเวลา โดยแสดงถึงอัตราการย้ายค่าย ภาพดัดแปลงจาก Stevenson M., 2009

จากกราฟ จะสามารถอธิบายได้ว่า ช่วงเดือนมีนาคม จะมีอัตราการย้ายค่ายสูงเมื่อเทียบกับช่วงเวลาอื่น ๆ ทำให้เราต้องเตรียมการรับมือในช่วงนั้นเป็นพิเศษ

ถ้าเรานำ hazard rate แต่ละช่วงเวลามารวมสะสมกันไปเรื่อย ๆ ตั้งแต่ช่วงเวลาที่ t=0 จนถึงช่วงเวลาสุดท้าย t = T เราก็จะสามารถคำนวณ survival curve, S(t) ได้ ซึ่งการสะสมของ hazard rate ในแต่ละช่วงเวลานั้น เรียกว่า Cumulative Hazard (หรือ Cumulative risk) โดยค่าของ cumulative hazard มาจากการหาพื้นที่ใต้กราฟ

Equation 3: Cumulative hazard หรือ cumulative risk

จากนั้น เราก็สามารถคำนวณ survival curve, S(t) ได้จากสมการ

Equation 4: การหา survival curve จาก cumulative hazard

Survival Analysis ด้วย Kaplan-Meier Method

ในความเป็นจริงแล้ว เราไม่สามารถรอเก็บผลจากกลุ่มศึกษา (study group) จนครบทุกคนแล้วค่อยนำมาวิเคราะห์ผลได้ เช่นงานวิจัยทางการแพทย์ เราคงไม่สามารถรอให้คนไข้หายจากโรคทั้งหมดก่อน เพื่อดู effect ของ treatment ได้ โดยอาจจะใช้เวลามากกว่าครึ่งปีจนไปถึงหนึ่งปี ซึ่งกว่าจะถึงตอนนั้น treatment อาจจะไม่จำเป็นอีกต่อไปแล้วก็ได้ ดังนั้นเราเลยต้องหาวิธีในการประมาณค่า (inference) ของ survival curve แบบอื่นแทน โดยแบบที่นิยมมากที่สุดและง่ายที่สุดคือ Kaplan-Meier Method

Kaplan-Meier Method เป็นวิธีประมาณค่า survival curve แบบ non-parametric method หมายความว่า model นี้ไม่ได้มี assumption เกี่ยวกับการกระจายตัวของข้อมูลมาก่อน ทำให้เราสามารถใช้ข้อมูลรูปแบบไหนก็ได้ (ไม่ต้องกังวลว่าข้อมูลเราจะกระจายตัวแบบ normal distribution หรือไม่ เป็นต้น)

Kaplan-Meier Method จะประมาณค่าของ hazard rate เพื่อนำมาคำนวณ survival curve ตามสมการด้านล่าง

Equation 5: การประมาณค่า survival curve

โดย r_j เป็นจำนวนของข้อมูลที่จัดอยู่ใน risk (survive) ณ ช่วงเวลา t_j ซึ่งไม่นับ observation ที่ระบุเป็น censored data และ d_j เป็นจำนวนข้อมูลที่มีเหตุการณ์เกิดขึ้น (failure) โดยช่วงเวลาที่ใช้ทั้งหมดตั้งแต่ 0 จนไปถึง เวลา T

ผลลัพธ์ที่ได้คือค่า cumulative survival ในช่วงเวลาต่าง ๆ ซึ่งจะนำไปสร้างกราฟเพื่อทำการวิเคราะห์ข้อมูลได้ โดยข้อมูลที่ใช้ ตามที่อธิบายไว้ด้านบน

Figure 6 กราฟของ survival curve

จากกราฟที่ได้มา เป็นกราฟของความน่าจะเป็นที่จะอยู่รอด (survive) เทียบกับเวลา (time) ที่เส้นสีฟ้า ตีความได้ว่าจะมี 20% ที่เหตุการณ์จะเกิดขึ้น (เช่น ย้ายค่ายหรือยกเลิกบริการ) เมื่อช่วงเวลาผ่านไปประมาณ 33 วัน ส่วนเส้นสีเหลือง จะเมื่อเวลาผ่านไป 60 วัน จะเหลือคนที่อยู่รอด 40% จากทั้งหมด (60% ย้ายค่ายหรือยกเลิกบริการ)

เนื่องจากค่าของ survival curve เป็นค่าความน่าจะเป็น เราจึงสามารถคำนวณหา confidence interval ในช่วงเวลาต่าง ๆ ได้ โดยจากกราฟ เราจะเห็นพื้นที่สีฟ้าจาง ๆ ซึ่งแสดงช่วงความน่าจะเป็นที่ระดับความมั่นใจ 95% ของเวลานั้นเช่น เมื่อเวลาผ่านไป 40 วัน จะเหลือลูกค้าอยู่ทั้งหมดประมาณ 83% โดยความมั่นใจที่ 95% นั้น ค่าจะอยู่ในช่วงประมาณ 70% ถึง 90% หรือตีความได้ว่าอัตราการเหลือรอดของลูกค้าที่ 80% นั้นจะอยู่ในช่วงประมาณ 28 ถึง 45 วัน เป็นต้น

ถ้าเราอยากเห็น effect จากตัวแปรอื่น ๆ เราก็สามารถนำมาแบ่งกลุ่มเพื่อดูผลลัพธ์เทียบกันได้ เช่นในตัวอย่างต่อไปนี้

Figure 8 Survival curve ของ churn rate เมื่อระยะเวลาตั้งแต่ 0–75 เดือนโดยแบ่งตาม internet service type

กราฟด้านบนแสดงถึงผลลัพธ์จากชุดข้อมูล Telco-Customer-Churn โดยแบ่งวิเคราะห์ตามประเภทของ internet service ได้แก่ กลุ่มลูกค้าที่ไม่รับ internet service, กลุ่มลูกค้าที่ติดตั้ง DSL และกลุ่มลูกค้าที่รับ Fiber optic

จากกราฟ จะเห็นว่ากลุ่มลูกค้า Fiber optic มีอัตราการ churn เยอะกว่าลูกค้ากลุ่ม DSL และไม่ติดตั้งเลย โดยเมื่อระยะเวลาผ่านไป 70 กว่าเดือน ลูกค้าที่ย้ายค่ายมีทั้งหมดมากกว่า 60% จากลูกค้าทั้งหมด ในขณะที่กลุ่มลูกค้าที่ไม่ติดตั้ง internet service นั้นมี churn rate ที่ต่ำมาก โดยเมื่อเวลาผ่านไปนั้น กลุ่มลูกค้าที่ย้ายค่ายต่ำกว่า 10%

Correlation Does Not Imply Causation

หมายความว่า การติดตั้ง Fiber optic มีผลต่อการย้ายค่ายใช่ไหม

ช้าก่อน เราต้องระวังไว้ว่า Correlation ไม่เท่ากับ Causation หมายความว่าลูกค้ากลุ่ม internet service ที่เป็น fiber optic มีผลต่อการ churn เท่านั้น ไม่ได้หมายความว่า internet service ทำให้เกิดการ churn แต่อย่างใด ทั้งนี้เราสามารถนำผลลัพธ์ตรงนี้มาวิเคราะห์ต่อได้ว่า ทำไมกลุ่มลูกค้าที่ติดตั้ง fiber optic ถึงมีอัตราการย้ายค่ายที่เยอะกว่า internet service แบบอื่น และหาทางออกเพื่อแก้ปัญหานี้ ซึ่งจริง ๆ แล้วอาจจะเพราะว่าลูกค้ากลุ่ม fiber optic เป็นคนทำงานช่วงต้น ที่เปลี่ยนค่ายบ่อยตามโปรโมชั่น และคนที่ไม่ได้ใช้ internet service เป็นผู้สูงวัยที่ใช้โทรศัพท์ติดต่อกับครอบครัวอย่างเดียว ก็ได้

คำถามต่อมาคือ ถ้าเราอยากนำ factors อื่น ๆ เข้าไปร่วมวิเคราะห์ด้วย เช่นข้อมูล demographic หรือข้อมูลเชิง behaviour เราจำเป็นต้องใช้ model ที่เป็น parametric method เช่น Cox Regression ซึ่งจะกล่าวถึงในบทความถัดไป

ข้อดีข้อเสียของ Kaplan-Meier

ข้อดีของ Kaplan-Meier ได้แก่ความง่ายในการทำเนื่องจากความเป็น non-parametric ซึ่งลดความซับซ้อนของ model ลงไป ตีความได้ง่าย ส่วนจุดอ่อนของ Kaplan-Meier คือการที่ model ทำการหาค่าเฉลี่ยจากข้อมูลที่นำมาวิเคราะห์ ซึ่งทำให้ความแม่นยำน้อยกว่า model ที่เป็น parametric อีกทั้งยังไม่สามารถเอา factors หลาย ๆ ตัวมาทำการคำนวณร่วมได้

การทำ Survival Analysis ด้วย Python และ R

สำหรับ data science สาย python นั้น แนะนำ package lifelines ซึ่งเป็น package ที่ใช้สำหรับการวิเคราะห์ survival analysis หลายรูปแบบ ทั้งแบบ parametric method และ non-parametric method อีกทั้ง document ยังละเอียดและทำตามได้ง่าย

ส่วน data science สาย R นั้น จะมี package survival มากับ based R อยู่แล้ว สามารถเรียกใช้ได้เลย โดยเหมือนกับ python ซึ่งชุดคำสั่งพร้อมสำหรับการวิเคราะห์ (ไว้เดี๋ยวแสดงตัวอย่างในบทความครั้งถัดไป)

ส่งท้าย

ผมเจอตัวอย่าง use case ที่น่าสนใจในการใช้ survival analysis ในธุรกิจจริง สามารถตาม อ่านได้ที่นี่ครับ

หวังว่าบทความนี้จะเป็นประโยชน์ต่อผู้อ่านทุกท่าน ถ้าหากมีข้อสงสัยหรือ แลกเปลี่ยนความคิดเห็น ก็สามารถ comment หรือทักเข้ามาคุยได้เลยนะครับ :)

References

  1. http://s3.amazonaws.com/zanran_storage/epicentre.massey.ac.nz/ContentPages/111789122.pdf
  2. https://data.princeton.edu/wws509/notes/c7.pdf
  3. http://greenteapress.com/thinkstats2/thinkstats2.pdf
  4. https://www.kdnuggets.com/2017/11/survival-analysis-business-analytics.html

--

--

Thanat Lapthawan
ASquareLab

AI, Deep learning, Data science, Machine learning, UX, Design Thinking, Math