Bank Churner Prediction— PartI : Exploration and Customer Segmentation
Data Exploration
Introduction
สำหรับธนาคาร ถ้าลูกค้าเลิกใช้บัตร ก็ทำให้รายได้หดหาย ถ้าสามารถ predict ได้ว่าลูกค้าคนไหนกำลังจะเลิกใช้บัตร แล้วนำเสนอproductที่ถูกใจลูกค้าได้ทันเวลา อาจจะทำให้ลูกค้าเปลี่ยนใจ ไม่เลิกใช้บัตร รายได้ไม่หายไป ธนาคารก็ happy
การทำ credit scoring เป็นเครื่องมือสำคัญชิ้นนึงของธนาคาร ที่สามารถนำมาแก้ปัญหานี้ได้ ปกติแล้วเวลาพูดถึง credit scoring เราอาจนึกถึงเวลาจะไปกู้ธนาคารแล้วธนาคารจะอนุมัติมั้ย แต่หลังจากอนุมัติไปแล้ว ลูกค้าแต่ละคนมีการใช้งานยังไงบ้าง ลูกค้าที่เลิกใช้บริการไปเค้ามีพฤติกรรมการใช้บัตรยังไง ถ้าไม่มีการ monitor ในส่วนนี้ก็จะทำให้เสียลูกค้าได้ ดังนั้น การนำ credit scoring มาใช้ monitor ความเสี่ยง จากพฤติกรรมลูกค้า ช่วยให้เราเสนอ productได้ทันเวลา หรือสามารถระบุได้ว่าลูกค้ามีปัญหาอะไร นำเสนอ solution ให้ลูกค้าได้ ก็จะทำให้ลูกค้าไม่หนี รายได้ก็จะไม่หายไป
Data
สำหรับข้อมูลที่จะนำมาใช้นำมาจาก kaggle [link]
Goal/Objective
เป้าหมายในการทำโปรเจคนี้คือการพยากรณ์ว่าลูกค้าคนไหนมีแววว่าจะเลิกใช้บริการ จะได้ส่งสัญญาณเตือน และนำเสนอ solution ได้ทัน
Hypothesis
ปกติแล้วถ้าทำ credit scoring ในการอนุมัติเงินกู้ (Application scoring) อาจตั้งสมมติฐานตามหลัก 5 C’s approach (เกณฑ์การให้สินเชื่อ) [link] แต่สำหรับในที่นี้ เราจะทำ Behavior scoring การตั้งสมมติฐานจะต่างออกไป สิ่งที่เราสนใจจะต่างออกไป เราต้องการจะ monitor พฤติกรรมลูกค้า
ข้อมูลที่น่าจะนำมาใช้วิเคราะห์เพื่อหาลูกค้าที่มีแนวโน้มว่าจะเลิกใช้บัตรได้ คือ พฤติกรรมการใช้บัตรเครดิตของลูกค้า อาจจะเป็น จำนวนเดือนที่ไม่มีการใช้บัตร จำนวนยอดหมุนเวียนของการใช้บัตร การใช้จ่ายผ่านบัตร จำนวนรายการที่ใช้บัตร อย่างไรก็ตาม การจะวิเคราะห์พฤติกรรมการใช้บัตรเครดิต ควรทำความเข้าใจก่อนว่า ลูกค้าปัจจุบันสามารถแบ่ง segmentation เป็นอย่างไรด้วย เพราะลูกค้าแต่ละกลุ่ม อาจจะมีพฤติกรรมการใช้บัตรที่แตกต่างกันได้
churning = segmentation(demographic x relationship) + behavior
Dataprep
Review Data : ข้อมูลลูกค้าทั้งหมด 10,127 ราย มี 21 ตัวแปรได้แก่
CLIENTNUM คือ รหัสลูกค้า
- Attrition_Flag คือ การปิดบัญชีของลูกค้า ซึ่งเราจะใช้ตัวแปรนี้เป็น label ในการจำแนกประเภทลูกค้า
- ตัวแปรด้าน Demographic ได้แก่ Customer_Age, Gender, Dependent_count, Education_Level, Marital_Status, Income_Category,
- Card_Category คือ ประเภทบัตรของลูกค้า
- Months_on_book คือ จำนวนเดือนที่ลูกค้าใช้บริการ
- Total_Relationship_Count คือ จำนวน product ที่ลูกค้าถือครอง
- Months_Inactive_12_mon คือ จำนวนเดือนที่ลูกค้าไม่มีการเคลื่อนไหว ใน 12 เดือนล่าสุด
- Contacts_Count_12_mon คือ จำนวนครั้งที่มีการติดต่อ ใน 12 เดือนล่าสุด
- Credit_Limit คือ วงเงิน
- Total_Revolving_Bal คือ ยอดค้างชำระ
- Avg_Open_To_Buy คือ Credit Line (วงเงินในการขายสินค้าไปต่างประเทศ) เฉลี่ยจาก 12 เดือนล่าสุด
- Total_Amt_Chng_Q4_Q1 คือ ยอดใช้จ่าย Q4 เทียบกับ Q1
- Total_Trans_Amt คือ ยอดใช้จ่ายทั้งหมด ใน 12 เดือนล่าสุด
- Total_Trans_Ct คือ จำนวนรายการทั้งหมด ใน 12 เดือนล่าสุด
- Total_Ct_Chng_Q4_Q1 คือ จำนวนรายการ Q4 เทียบกับ Q1
- Avg_Utilization_Ratio น่าจะหมายถึง ยอดการใช้จ่ายต่อวงเงิน เป็นอัตราเท่าไหร่ 1 คือใช้จ่ายเต็มวงเงิน 0 คือไม่มีการใช้จ่าย เป็นค่าเฉลี่ยจากทั้งหมด ไม่ใช่ 12 เดือนล่าสุด
EDA
- Data Distribution : ดูว่าข้อมูลถูกต้องมั้ย มีค่าที่น่าจะผิด ไม่make sense มั้ย (data validation), มี outlier มั้ย, แต่ละตัวแปรถ้าจะเอาไปทำ statistical testing ควรใช้ tools ไหน (tools ส่วนใหญ่มักมี assumption ว่าตัวแปรต้อง normal distribution ถ้าไม่ normal ก็ต้องเลือก tools ให้ถูก)
สำหรับ categorical variable:
- Attrition_Flag ซึ่งเป็น label ที่จะใช้ในการสร้างตัวแบบมัน imbalance มี Attrited customer 1,627 ราย (16.07%)
- บางตัวแปรข้อมูลระบุ Unknown
- Education_Level มีอยู่ 1,519 ราย เป็น Attrited Customer 256 ราย
- Marital_Status มีอยู่ 749 ราย เป็น Attrited Customer 129 ราย
- Income_Category มีอยู่ 1,112 ราย เป็น Attrited Customer 187 ราย
หากดูที่สัดส่วนของ Attrited Customer แล้วถ้าเราจะตัดลูกค้าที่ข้อมูล Unknown ออกเราจะเสีย label ที่จะนำมา train model จาก 16.07 % เหลือประมาณ 14.xx % จึงตัดสินใจไม่ตัดออก เนื่องจากเรามีข้อมูลค่อนข้างน้อยอยู่แล้ว - Card_Category เป็นประเภท Blue เกือบทั้งหมดเลย มี 9,436 คน (93.18%) ex. Platinum มีอยู่ 20 คน เป็น Attrited Customer 5 คน ถ้าคำนวณสัดส่วนจะเท่ากับ 25.00% ในขณะที่ card ประเภทอื่น ๆ อยู่ที่ประมาณ 14.00–16.00 % แต่มี sample มากกว่า 100 ทุก card ดังนั้น ถ้าเอาตัวแปรนี้ไปใช้ อาจตีความ Platinum ผิดได้ เพราะมี sample แค่ 20 คน
สำหรับ numerical variables:
- ไม่มีค่าแปลก ๆ ข้อมูลค่อนข้าง clean แต่ประเด็นที่น่าสงสัยคือ Avg_Utilization_Ratio เท่ากับ 0 คือลูกค้าไม่เคยใช้บัตรเลย มีอยู่ 2,470 คน ทีแรกคิดว่าอาจจะเป็นลูกค้าที่เพิ่งใช้บริการ แต่พอไปดูที่ตัวแปร Months_on_book พบว่าเป็นลูกค้าใช้บริการมาแล้ว 13 เดือนขึ้นไปทุกคน และใช้บริการมากสุด 56 เดือน (เกือบ 5 ปี) แต่ไม่เคยใช้บัตรเลย
- และเมื่อดูที่ตัวแปร Attrition_Flag พบว่าลูกค้า ที่ Avg_Utilization_Ratio เท่ากับ 0 เป็น Attrited Customer 893 ราย ซึ่งมากกว่า 50.00 % ของ Attrited Customer ทั้งหมด
- ตัวแปรส่วนใหญ่ เบ้ขวา
- Customer Profile : ก่อนจะไปตั้งสมมติฐานว่าตัวแปรไหน น่าจะนำมาใช้จำแนกว่าลูกค้าจะเลิกใช้บริการมั้ย ควรจัดกลุ่มลูกค้าก่อน โดยเราจะจัดประเภทตัวแปรเป็น 3 ด้าน คือ
- Demographic คือ ข้อมูลพื้นฐานของลูกค้า
- Relationship คือ ประเภทลูกค้าว่า relate กับธนาคารยังไงบ้าง
- Behavior คือ พฤติกรรมการใช้บัตร
ด้าน Demographic กับ Relationship จะใช้ในการจัดกลุ่มลูกค้า และดูว่าแต่ละกลุ่มมีพฤติกรรมการใช้บัตรยังไงบ้าง โดยใช้ข้อมูลด้าน Behavior เพราะลูกค้าแต่ละกลุ่มอาจจะพฤติกรรมใช้บัตรต่างกันและไม่ควรใช้สมมติฐานเดียวกัน
หลังจากนั้นทำการ Clustering โดยใช้ตัวแปรด้าน Demographic และ Relationship โดย model ที่ใช้คือ K-means Clustering และได้ทดสอบ k ที่ 3 ถึง 5 พบว่า k=3 จะได้ optimal silhouette จึงกำหนดให้จัดกลุ่มลูกค้าเป็น 3 กลุ่ม โดยแต่ละกลุ่มมีรายละเอียดดังนี้
หลังจากนั้น จะพิจารณาตัวแปรทางด้าน Behavior ว่าแต่ละกลุ่มมีพฤติกรรมการใช้บัตรต่างกันอย่างไรบ้าง
ในกราฟด้านบน เป็นการแสดงค่าเฉลี่ยแต่ละตัวแปรด้านพฤติกรรมการใช้บัตรที่ทำการ normalize แล้ว
จากกราฟจะเห็นว่า Group 0 จะมี Avg_Utilization_Ratio ที่สูงกว่ากลุ่มอื่น และ Group 1 จะมี Avg_Open_To_Buy ที่สูงกว่ากลุ่มอื่น ส่วน Group 2 Avg_Open_To_Buy จะอยู่ระหว่างกลุ่ม 0, 1 ส่วนตัวแปรด้านอื่น ๆ แต่ละกลุ่มจะใกล้เคียงกัน
Reference
BankChurners : https://www.kaggle.com/nnttch/bankchurners