AI Training Project · Dữ liệu tổng hợp, hành vi thực tế

Customer Intelligence
Platform

Một pipeline duy nhất trả lời 3 câu hỏi marketing quan trọng nhất: khách hàng nào là ai, khách nào sắp rời bỏ, và khách nào đáng đầu tư nhất — chạy thật trên 3.751 khách hàng, 22.635 đơn hàng mô phỏng mùa vụ, khách VIP và hành vi rời bỏ.

0 khách hàng
0 đơn hàng
0 ROC-AUC · Churn
0 R² · CLV
0 phân khúc K-Means

Dữ liệu chảy qua pipeline như thế nào

6 bước Python nối tiếp, mỗi bước ghi ra 1 file trung gian — không hộp đen, mọi thứ đều có thể kiểm tra lại.

01

Raw Data

customers.csv + transactions.csv

4.000 khách · 22.635 đơn
02

Feature Engineering

RFM, Tenure, NumCategories, cắt mốc thời gian

customer_features.csv
03

Segmentation

K-Means (k=4)

04

Churn Model

XGBoost Classifier

05

CLV Model

XGBoost Regressor

06

Priority Matrix

Gộp Churn × CLV → hành động

MARKETING_ACTION_LIST.csv

Điểm kỹ thuật quan trọng nhất: Data Leakage

Khi dự đoán tương lai, dữ liệu phải được chia theo mốc thời gian (observation / future period) — không random split. Nếu không, model sẽ "nhìn thấy" đáp án tương lai khi học, và kết quả đánh giá sẽ ảo, sụp đổ ngay khi triển khai thật.

CUTOFF_DATE = pd.Timestamp('2025-07-01')
hist   = transactions[transactions.OrderDate < CUTOFF_DATE]   # tính feature
future = transactions[transactions.OrderDate >= CUTOFF_DATE]  # đáp án thật
Python Pandas NumPy Scikit-learn XGBoost Matplotlib / Seaborn

Customer Segmentation
RFM + K-Means

RFM không phải thuật toán, mà là cách nén toàn bộ lịch sử giao dịch của 1 khách hàng thành 3 con số kể được câu chuyện hành vi của họ:

Recency = ngày tham chiếu − ngày mua gần nhất
Frequency = tổng số lần mua
Monetary = tổng giá trị đơn hàng

K-Means sau đó tối thiểu hóa tổng bình phương khoảng cách trong từng cụm:

J = Σk=1..K Σx∈Ck ‖x − μk‖²

Silhouette Score cao nhất tại k=2 (0.427), nhưng k=4 được chọn để khớp business logic — 4 nhóm đủ để đặt chiến lược marketing riêng biệt, đánh đổi lấy một chút điểm silhouette (≈0.305).

Biểu đồ Elbow Method và Silhouette Score cho K-Means, k chạy từ 2 đến 8

Kết quả thật trên 3.751 khách hàng

tính trực tiếp từ dữ liệu
Confusion Matrix của model dự đoán churn, ROC-AUC 0.885

Churn Prediction
XGBoost Classifier

Ensemble hàng trăm cây quyết định nhỏ, xây tuần tự — cây sau sửa lỗi của cây trước, dùng xấp xỉ Taylor bậc 2 (gradient + hessian) để tìm cây tối ưu nhanh và chính xác:

Obj = Σᵢ L(yᵢ, ŷᵢ) + Σₜ Ω(fₜ)

L = Log Loss cho bài toán phân loại nhị phân (churn / không churn), Ω phạt cây quá phức tạp để tránh overfit.

0.885ROC-AUC
78.7%Precision
87.0%Recall
80.9%Accuracy

Trên tập test 938 khách hàng: 429/493 khách sắp churn được phát hiện đúng — Recall được ưu tiên hơn Precision vì bỏ sót 1 khách sắp rời bỏ tốn kém hơn nhiều so với 1 lần chăm sóc dư.

Phân bổ rủi ro churn thật

tính trực tiếp từ dữ liệu

CLV Prediction
XGBoost Regressor

Cùng cơ chế ensemble như churn, nhưng đổi hàm loss sang bài toán hồi quy — dự đoán một con số VNĐ cụ thể khách sẽ chi trong 6 tháng tới:

L(yᵢ, ŷᵢ) = (yᵢ − ŷᵢ)²
0.75R² Score
0Tổng CLV dự đoán 6 tháng
0CLV trung bình / khách
0CLV trung bình nhóm VIP

R²=0.75 nghĩa là model giải thích được 75% biến động chi tiêu tương lai — đủ tin cậy để xếp hạng ngân sách marketing theo từng khách hàng thay vì chia đều.

Biểu đồ scatter CLV thực tế so với CLV dự đoán, R²=0.75

Phân bổ CLV dự đoán thật

tính trực tiếp từ dữ liệu

Ma trận ưu tiên: Churn Risk × CLV

Một khách rủi ro churn cao nhưng CLV thấp không đáng để can thiệp gấp bằng một khách rủi ro trung bình nhưng CLV rất cao. Ma trận này là nơi 3 model gặp nhau và trở thành hành động.

Ma trận số lượng khách hàng và tổng CLV theo Churn Risk Level và CLV Level

Import trực tiếp từ phần mềm CRM (2 file Excel)

Dành cho dữ liệu xuất thẳng từ CRM: 1 file danh sách khách hàng (Account) + 1 file đơn hàng (Sale Order) — hai bảng này không có mã khách hàng chung, web sẽ tự khớp qua số điện thoại. Vì cấu trúc và từ vựng khác hẳn dữ liệu mẫu ở trên, model được tự huấn luyện lại từ đầu ngay trên dữ liệu bạn tải lên — trong cùng một lần bấm nút, vẫn 100% xử lý cục bộ trong trình duyệt.