ทำนายการเลิกใช้งานของลูกค้า

ทำนายการเลิกใช้งานของลูกค้า
Image from DALL-E 2 (Prompt: Create image of customer churn with digital art)

การที่ลูกค้าเลิกใช้งาน (Churn) หรือ การสูญเสียลูกค้าเมื่อเวลาผ่านไป เป็นปัญหาสำคัญสำหรับธุรกิจในอุตสาหกรรมต่างๆ การระบุลูกค้าที่เสี่ยงต่อการ Churn ช่วยให้บริษัทต่างๆ สามารถดำเนินการเชิงรุกเพื่อรักษาลูกค้าไว้ได้ ช่วยให้ประหยัดทรัพยากรและรักษารายได้ ใน Blog นี้ จะพูดถึง การใช้ Data Science เพื่อทำนายการ Churn ของลูกค้า โดยพูดถึงกระบวนการทั้งหมด และแสดงตัวอย่าง Python code ประกอบ

1) Data Preparation (การเตรียมข้อมูล)

ขั้นตอนแรก คือ การรวบรวมข้อมูลที่เกี่ยวข้อง ซึ่งมักจะรวมถึงข้อมูลประวัติลูกค้า ประวัติการซื้อ และข้อมูล Demographics ตัวอย่างการ Load ข้อมูล CSV Fileโดยใช้ Pandas

import pandas as pd

# To load data from CSV
data = pd.read_csv("customer_data.csv")

2) Data Cleaning & Exploration

การทำ Data Cleaning เพื่อจัดการค่าที่หายไป ค่าผิดปกติ และความไม่สอดคล้องกัน การทำ Data Exploration ช่วยให้เข้าใจการกระจายตัวของข้อมูล (Distributions) รูปแบบ (Patterns) และเลือก Features ที่เกี่ยวข้องสำหรับการทำนาย

# To check for missing values
data.isnull().sum()

# To analyze feature distributions
data["purchase_frequency"].hist()

# To create features (e.g., recency of last purchase)
data["last_purchase_days"] = (data["purchase_date"].max() - data["purchase_date"]) / pd.Timedelta(days=1)

3) Feature Engineering

คือ การสร้าง Features ใหม่จาก Features เดิมที่มีอยู่ เพื่อปรับปรุงประสิทธิภาพของ Model ตัวอย่างเช่น การคำนวณอัตราส่วน การสร้าง Bins สำหรับ Continuous data และการทำ Encoding สำหรับ Categorical data

# To create dummy variables for categorical features
data = pd.get_dummies(data, columns=["contract_type"])

# To encode yes/no features with numerical values
data["has_complaint"] = data["has_complaint"].map({"Yes": 1, "No": 0})

4) Algorithms & Training (การเลือก Algorithms และ Training)

มี Machine Learning Algorithms หลายตัวเลือก สำหรับการทำนาย Churn เช่น Logistic Regression, Random Forest หรือ Gradient Boosting ตัวอย่างการใช้งาน Logistic Regression

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# To define target variable (churned: 1, not churned: 0)
y = data["churned"]

# To split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(data.drop("churned", axis=1), y, test_size=0.2)

# To train the model
model = LogisticRegression()
model.fit(X_train, y_train)

5) Model Evaluation

การประเมินประสิทธิภาพของ Model ถือเป็นสิ่งสำคัญ และอาจมีการระบุข้อจำกัดต่างๆ ตัวอย่าง Metrics เช่น Accuracy, Precision, Recall และ AUC-ROC (พื้นที่ใต้เส้นโค้ง ROC) ช่วยวัดความสามารถของ Model ในการระบุลูกค้าที่เลิกใช้งาน

from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score

# To make predictions on the test set
y_pred = model.predict(X_test)

# To evaluate model performance
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
auc = roc_auc_score(y_test, y_pred)

print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("AUC-ROC:", auc)

6) Prediction & Operations

เมื่อได้ Model ที่มีประสิทธิภาพดีแล้ว จะสามารถใช้เพื่อทำนาย Churn สำหรับลูกค้าใหม่หรือลูกค้าปัจจุบันได้ จากนั้น ธุรกิจต่างๆ สามารถใช้ในการกำหนดเป้าหมายและสร้าง Campaigns ต่างๆ (เช่น Loyalty Program, Personalized offer) สำหรับลูกค้าที่มีความเสี่ยงสูงที่จะเลิกใช้งาน ทำให้รักษาลูกค้าไว้ได้

ใน Blog นี้แสดงตัวอย่างแบบง่าย เพื่อให้เห็น Framework พื้นฐาน และเข้าใจการใช้งาน Data Science สำหรับการทำนายลูกค้า Churn ซึ่งสถานการณ์ในโลกแห่งความเป็นจริงอาจมีความซับซ้อนมากขึ้น


หมายเหตุ: Blog นี้ เขียนร่วมกับ Gemini โดยใช้ Prompt

Act as a data scientist, please write a blog of churn prediction with code

ข้อมูลเพิ่มเติม: https://towardsdatascience.com/random-forests-and-one-hot-encoding-introduction-solving-kaggles-titanic-machine-learning-dataset-1607793f6988