Bank Churner Prediction— PartI : Exploration and Customer Segmentation

Data Exploration

Nattachai Bovornmongkolsak
3 min readJul 1, 2021

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 ให้ถูก)
รูปแสดง distribution ของ categorical data

สำหรับ categorical variable:

  1. Attrition_Flag ซึ่งเป็น label ที่จะใช้ในการสร้างตัวแบบมัน imbalance มี Attrited customer 1,627 ราย (16.07%)
  2. บางตัวแปรข้อมูลระบุ 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 % จึงตัดสินใจไม่ตัดออก เนื่องจากเรามีข้อมูลค่อนข้างน้อยอยู่แล้ว
  3. 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 คน
รูปแสดง distribution ของ numerical data

สำหรับ numerical variables:

  1. ไม่มีค่าแปลก ๆ ข้อมูลค่อนข้าง clean แต่ประเด็นที่น่าสงสัยคือ Avg_Utilization_Ratio เท่ากับ 0 คือลูกค้าไม่เคยใช้บัตรเลย มีอยู่ 2,470 คน ทีแรกคิดว่าอาจจะเป็นลูกค้าที่เพิ่งใช้บริการ แต่พอไปดูที่ตัวแปร Months_on_book พบว่าเป็นลูกค้าใช้บริการมาแล้ว 13 เดือนขึ้นไปทุกคน และใช้บริการมากสุด 56 เดือน (เกือบ 5 ปี) แต่ไม่เคยใช้บัตรเลย
  2. และเมื่อดูที่ตัวแปร Attrition_Flag พบว่าลูกค้า ที่ Avg_Utilization_Ratio เท่ากับ 0 เป็น Attrited Customer 893 ราย ซึ่งมากกว่า 50.00 % ของ Attrited Customer ทั้งหมด
  3. ตัวแปรส่วนใหญ่ เบ้ขวา
  • 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

--

--