Giới thiệu dự án

Trong kỷ nguyên ngân hàng số (Digital Banking), tối ưu hóa trải nghiệm khách hàng và nâng cao hiệu quả tiếp thị cho các sản phẩm vay tiêu dùng cá nhân (Personal Consumption Loans) trở thành yêu cầu sống còn. Theo các báo cáo tài chính bán lẻ quốc tế, các chiến dịch tiếp thị đại trà truyền thống (Mass Marketing) thường mang lại tỷ lệ chuyển đổi thấp (dưới 3-5%), trong khi chi phí thu hút khách hàng (CAC - Customer Acquisition Cost) ngày càng gia tăng. Vấn đề cốt lõi bắt nguồn từ việc các tổ chức tín dụng chưa khai thác triệt để các dữ liệu phi nhân khẩu học như hành vi giao dịch, chi tiêu định kỳ và các chỉ số tín dụng nội bộ để phân khúc khách hàng một cách chính xác.

Đồ án tốt nghiệp chuyên ngành Phân tích Dữ liệu Kinh doanh (Business Data Analytics - Trường Quốc tế, Đại học Quốc gia Hà Nội) của sinh viên Lê Phan Anh Thư, dưới sự hướng dẫn khoa học của TS. Phạm Thị Việt Hương, đã giải quyết bài toán trên bằng cách phát triển hệ thống phân khúc và dự báo khả năng chấp nhận khoản vay tiêu dùng cá nhân dựa trên các thuật toán học máy (Machine Learning).

flowchart LR
    A["Dữ liệu khách hàng ngân hàng số<br/>(5,000 bản ghi, 14 thuộc tính)"] --> B["Tiền xử lý & EDA<br/>(Skimpy, IQR Outlier Detection)"]
    B --> C["Cân bằng dữ liệu hỗn hợp<br/>(SMOTENC Algorithm)"]
    C --> D["Huấn luyện & Đánh giá Model<br/>(LR, DT, RF, GBDT, SVC, KNN)"]
    D --> E["Giải thích mô hình XAI<br/>(SHAP Value Analysis)"]
    E --> F["Hệ thống Web App thời gian thực<br/>(Hỗ trợ ra quyết định tín dụng)"]

Mục tiêu dự án

  1. Phân tích khám phá dữ liệu (EDA): Đánh giá phân phối, tương quan và phát hiện ngoại lai (Outliers) trên tập dữ liệu 5.000 hồ sơ khách hàng với 14 biến đặc trưng tài chính - hành vi.
  2. Xử lý mất cân bằng lớp (Class Imbalance): Áp dụng kỹ thuật tổng hợp mẫu SMOTENC (Synthetic Minority Over-sampling Technique for Nominal and Continuous) để giải quyết tỷ lệ mất cân bằng nghiêm trọng (chỉ 9.6% khách hàng có khoản vay tín dụng).
  3. Mô hình hóa và đối chuẩn (Benchmarking): Huấn luyện, đánh giá và so sánh hiệu năng 6 thuật toán học máy: Logistic Regression, Decision Tree, Random Forest, Gradient Boosting Classifier, Support Vector Classifier (SVC), và K-Nearest Neighbors (KNN).
  4. Giải thích mô hình (Explainable AI - XAI): Tích hợp kỹ thuật SHAP (SHapley Additive exPlanations) nhằm bóc tách mức độ ảnh hưởng của từng đặc trưng tài chính đến quyết định vay.
  5. Triển khai ứng dụng thực tế: Thiết kế giao diện web tương tác (Interactive Web Application) hỗ trợ chuyên viên tín dụng thẩm định và phân khúc hồ sơ khách hàng tức thì.

Phạm vi và Giới hạn

  • Phạm vi dữ liệu: 5.000 hồ sơ khách hàng với 14 trường dữ liệu bao gồm nhân khẩu học (Age, Address), lịch sử quan hệ (Customer-Period, Level), hành vi chi tiêu (MaximumSpend, Monthly-Average-Spend), và cam kết tài chính (Mortgage, Security-Asset, Fixed-Deposit, Credit-Card, Loan-On-Card).
  • Giới hạn: Dữ liệu thu thập tại một thời điểm cố định trong chiến dịch tiếp thị ngân hàng số, tập trung vào sản phẩm vay quay vòng trên thẻ/vay tiêu dùng tín chấp.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi ứng dụng học máy, các ngân hàng thường dựa vào hệ thống tính điểm luật cứng (Rule-based Scorecard) hoặc phân khúc nhân khẩu học thuần túy. Bảng so sánh dưới đây làm rõ khoảng cách công nghệ:

Tiêu chí Tiếp cận Truyền thống (Rule-based) Phân tích Thống kê Cổ điển (RFM) Giải pháp Đề xuất (ML + SMOTENC + SHAP)
Nguồn dữ liệu Nhân khẩu học cơ bản (Tuổi, Thu nhập khai báo) Tần suất & Giá trị giao dịch đơn lẻ Đa chiều: Hành vi, Chi tiêu cực đại, Điểm ẩn, Thế chấp
Xử lý mất cân bằng Bỏ qua hoặc gán trọng số tĩnh Không hỗ trợ SMOTENC cân bằng chính xác dữ liệu hỗn hợp
Độ chính xác (Precision) Thấp (< 65%), nhiều báo động giả Trung bình (70% - 75%) Vượt trội (96.0% với Gradient Boosting)
Tính tương tác & XAI Quy tắc cứng, khó cập nhật Báo cáo tĩnh theo kỳ Giải thích thời gian thực qua giá trị SHAP

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have: Pipeline làm sạch dữ liệu tự động, module cân bằng SMOTENC, bộ phân lớp Gradient Boosting đạt F1-Score > 0.90, module giải thích SHAP.
  • Should Have: Web UI tương tác dự báo theo thời gian thực (< 500ms/request), biểu đồ trực quan hóa đóng góp của từng thuộc tính.
  • Could Have: Khả năng xuất báo cáo phân khúc dạng PDF, tích hợp API RESTful cho hệ thống Core Banking.
  • Won't Have: Phê duyệt giải ngân tự động không qua giám sát con người (Human-in-the-loop).

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình phân tầng chặt chẽ:

graph TD
    subgraph Data Layer
        D1[Raw Banking Data - CSV/DB] --> D2[Data Validation & Skimpy Profiling]
        D2 --> D3[IQR Outlier Handling & NaN Imputation]
    end

    subgraph Feature & Sampling Layer
        D3 --> F1[Categorical Encoding]
        F1 --> F2[SMOTENC Oversampling Engine]
        F2 --> F3[Stratified Train-Test Split 80:20]
    end

    subgraph Modeling & Inference Layer
        F3 --> M1[Gradient Boosting Classifier]
        M1 --> M2[Model Evaluation & Metrics]
        M1 --> M3[SHAP Explainer Engine]
    end

    subgraph Application Layer
        M1 --> U1[Inference Service API]
        M3 --> U2[Interactive Web Dashboard]
        U1 --> U2
    end

Technology Stack và Phiên bản

  • Ngôn ngữ: Python v3.10+
  • Xử lý & Phân tích dữ liệu: Pandas v2.1.0, NumPy v1.26.0, Skimpy v0.0.9
  • Học máy & Cân bằng mẫu: Scikit-Learn v1.3.2, Imbalanced-Learn v0.11.0 (SMOTENC)
  • Giải thích mô hình: SHAP v0.43.0
  • Trực quan hóa & Giao diện: Matplotlib v3.8.0, Seaborn v0.13.0, Streamlit UI framework

Thiết kế lược đồ dữ liệu (Data Schema)

Hệ thống xử lý 14 trường dữ liệu chuẩn hóa:

  1. ID (Integer): Mã định danh khách hàng duy nhất.
  2. Age (Integer): Độ tuổi (dao động từ 25 đến 70 tuổi, tập trung tại 35–55 tuổi).
  3. Customer-Period (Integer): Thâm niên quan hệ với ngân hàng (0 đến 40 năm).
  4. MaximumSpend (Float): Mức chi tiêu cao nhất trong một giao dịch đơn lẻ.
  5. Address (Integer/String): Mã bưu chính khu vực cư trú.
  6. Hidden-Score (Integer): Điểm đánh giá tín nhiệm nội bộ của ngân hàng (thang 1 - 4).
  7. Monthly-Average-Spend (Float): Mức chi tiêu trung bình hàng tháng.
  8. Level (Integer): Cấp bậc khách hàng trong hệ sinh thái ngân hàng.
  9. Mortgage (Float): Giá trị khoản vay thế chấp hiện hữu (giá trị từ 0 đến 600 đơn vị).
  10. Security-Asset (Binary: 0/1): Tình trạng sở hữu tài sản bảo đảm.
  11. Fixed-Deposit-Account (Binary: 0/1): Có tài khoản tiền gửi có kỳ hạn hay không.
  12. Internet-Banking (Binary: 0/1): Mức độ sử dụng dịch vụ ngân hàng điện tử.
  13. Credit-Card (Binary: 0/1): Khách hàng đang sở hữu thẻ tín dụng (70.6% Chưa có, 29.4% Đã có).
  14. Loan-On-Card (Binary Target: 0/1): Khách hàng phát sinh khoản vay tiêu dùng quay vòng (480 nhãn 1 vs 4.520 nhãn 0, 20 bản ghi NaN được gán mặc định 0).

Methodology

Quy trình phát triển tuân thủ phương pháp luận CRISP-DM (Cross-Industry Standard Process for Data Mining) kết hợp mô hình phân tích lặp Agile:

[Hiểu bài toán kinh doanh] ➔ [Hiểu & Khám phá dữ liệu] ➔ [Xử lý & Cân bằng dữ liệu] 
        ➔ [Mô hình hóa đa thuật toán] ➔ [Đánh giá & XAI] ➔ [Đóng gói Web Application]
  • Đánh giá rủi ro: Rủi ro lớn nhất là overfitting do kỹ thuật tổng hợp mẫu và rủi ro nhận định sai khách hàng rủi ro cao (False Positive). Giải pháp: Sử dụng Stratified K-Fold Cross Validation và ưu tiên tối ưu hóa chỉ số Precision & F1-Score cho nhóm vay.

Implementation và kết quả

Development Process

1. Tiền xử lý và Xử lý mất cân bằng với SMOTENC

Phân tích EDA ban đầu phát hiện 20 giá trị NaN ở cột mục tiêu Loan-On-Card (chiếm 0.4%), được chuẩn hóa gán về 0. Tỷ lệ phân bố lớp ban đầu là 4.520 (nhãn 0) : 480 (nhãn 1), gây mất cân bằng nghiêm trọng.

Thuật toán SMOTENC được triển khai để tổng hợp mẫu dữ liệu thiểu số trên không gian đặc trưng hỗn hợp:

  • Đối với đặc trưng liên tục: Sử dụng phép nội suy khoảng cách Euclid: $$\vec{x}_{new} = \vec{x}i + \lambda \times (\vec{x}{zi} - \vec{x}_i), \quad \lambda \in [0, 1]$$
  • Đối với đặc trưng định danh (Categorical): Chọn giá trị Mode (yếu vị) xuất hiện nhiều nhất trong $k$ láng giềng gần nhất.

Kết quả sau tiền xử lý: Số lượng mẫu được cân bằng hoàn hảo ở mức 4.520 mẫu cho mỗi lớp (Tổng cộng 9.040 bản ghi).

import pandas as pd
import numpy as np
from imblearn.over_sampling import SMOTENC
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import classification_report, confusion_matrix

# 1. Load và xử lý Missing Value
df = pd.read_csv("bank_customer_data.csv")
df['Loan-On-Card'] = df['Loan-On-Card'].fillna(0).astype(int)

# 2. Phân tách Feature matrix X và Target vector Y
X = df.drop(columns=['ID', 'Loan-On-Card'])
y = df['Loan-On-Card']

# 3. Xác định chỉ số của các biến phân loại (Categorical Features)
categorical_indices = [X.columns.get_loc(col) for col in [
    'Hidden-Score', 'Level', 'Security-Asset', 
    'Fixed-Deposit-Account', 'Internet-Banking', 'Credit-Card'
]]

# 4. Áp dụng SMOTENC cân bằng dữ liệu
smotenc = SMOTENC(categorical_features=categorical_indices, random_state=42)
X_resampled, y_resampled = smotenc.fit_resample(X, y)

# 5. Phân chia Train-Test Split (80:20)
X_train, X_test, y_train, y_test = train_test_split(
    X_resampled, y_resampled, test_size=0.20, random_state=42, stratify=y_resampled
)

# 6. Huấn luyện Gradient Boosting Classifier
gb_model = GradientBoostingClassifier(
    n_estimators=100, 
    learning_rate=0.1, 
    max_depth=5, 
    random_state=42
)
gb_model.fit(X_train, y_train)

# 7. Dự báo và đánh giá
y_pred = gb_model.predict(X_test)
print(classification_report(y_test, y_pred, digits=4))

Testing và validation

Hiệu năng của 6 thuật toán học máy được đối chuẩn trực tiếp trên cùng tập kiểm thử đã cân bằng (Test Set: 1.808 mẫu):

Mô hình Thuật toán Accuracy Precision (Lớp Vay = 1) Recall (Lớp Vay = 1) F1-Score (Lớp Vay = 1) Weighted F1-Score
Gradient Boosting Classifier 95.8% 0.96 0.96 0.96 0.958
Random Forest Classifier 95.0% 0.95 0.95 0.95 0.950
Decision Tree Classifier 93.5% 0.93 0.94 0.94 0.935
Logistic Regression 87.2% 0.85 0.90 0.87 0.872
K-Nearest Neighbors (KNN) 82.5% 0.81 0.88 0.84 0.825
Support Vector Classifier (SVC) 84.0% 0.83 0.86 0.84 0.840
Ma trận nhầm lẫn của Gradient Boosting Classifier:
                  Predicted Non-Loan (0)    Predicted Loan (1)
Actual Non-Loan (0)        871                       33
Actual Loan (1)             43                      861

Giải thích mô hình bằng SHAP (SHapley Additive exPlanations)

Phân tích SHAP Summary Plot trên mô hình Gradient Boosting đã làm sáng tỏ cơ chế ra quyết định:

  1. MaximumSpend (Chi tiêu cực đại): Yếu tố tác động mạnh nhất. Khách hàng có giá trị chi tiêu đơn lẻ cao có xác suất vay tiêu dùng cao gấp 3.4 lần nhóm thông thường.
  2. Level (Cấp bậc quan hệ): Chỉ số tương tác và gắn kết cao với ngân hàng đóng góp dương vào điểm số phê duyệt.
  3. Monthly-Average-Spend (Chi tiêu trung bình tháng): Khách hàng duy trì chi tiêu hàng tháng ở mức 3 - 5 đơn vị tiền tệ có nhu cầu tín dụng ổn định.
  4. Customer-Period (Thâm niên khách hàng): Khách hàng gắn bó lâu năm (10 - 30 năm) được mô hình gán trọng số an toàn tín dụng cao.
  5. Hidden-Score (Điểm tín nhiệm nội bộ): Điểm 3 và 4 phản ánh trực tiếp năng lực hoàn trả khoản vay.
  6. Internet-Banking & Credit-Card: Tương tác trực tuyến thường xuyên là chỉ báo tích cực cho việc tiếp nhận sản phẩm vay số.

Đổi mới và đóng góp

  1. Xử lý toàn diện dữ liệu phi cấu trúc và mất cân bằng: Khác với các nghiên cứu trước đây chỉ áp dụng Random Over-sampling hoặc SMOTE thông thường (dễ sinh lỗi trên biến rời rạc), đồ án sử dụng chuẩn xác SMOTENC, bảo toàn tính toàn vẹn ngữ nghĩa của các biến định danh như Security-AssetHidden-Score.
  2. Minh bạch hóa mô hình hộp đen (XAI Integration): Chuyển đổi mô hình Gradient Boosting từ "Black-Box" sang "Glass-Box" bằng cách tích hợp SHAP Value. Điều này giúp nhân viên tín dụng hiểu rõ lý do một hồ sơ được đề xuất duyệt vay hoặc từ chối, đáp ứng tiêu chuẩn quản trị rủi ro ngân hàng.
  3. Hiện thực hóa thành công cụ vận hành số: Không dừng lại ở nghiên cứu lý thuyết, tác giả đã đóng gói mô hình thành một ứng dụng web hoàn chỉnh, cho phép cán bộ ngân hàng nhập liệu nhanh 12 tham số đầu vào và nhận kết quả dự báo nhãn (1.0 - Duyệt / 0.0 - Từ chối) trong vòng dưới 1 giây.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng nghiệp vụ (Business Use Cases)

  • Tối ưu hóa chiến dịch Telemarketing / Email Marketing: Thay vì gửi lời mời vay hàng loạt tới toàn bộ 100% tệp dữ liệu, ngân hàng chỉ tập trung vào nhóm 10-15% khách hàng được mô hình phân loại vào nhóm tiềm năng cao, giảm 40% chi phí vận hành chiến dịch.
  • Phê duyệt trước khoản vay trên Mobile Banking App (Instant Pre-approval): Tích hợp mô hình vào luồng ứng dụng ngân hàng số; khi khách hàng đăng nhập, hệ thống tự động đánh giá hồ sơ và hiển thị banner hạn mức vay cá nhân hóa cho từng cá nhân.
  • Bán chéo sản phẩm (Cross-Selling): Xác định nhóm khách hàng có Monthly-Average-Spend cao nhưng chưa sở hữu Loan-On-Card để kích hoạt gói tín dụng tiêu dùng ưu đãi.

Phân tích Hiệu quả Đầu tư (ROI Estimate)

  • Chi phí triển khai: Thấp (Tận dụng hạ tầng máy chủ hiện hữu, công nghệ mã nguồn mở Python/Scikit-learn).
  • Tăng trưởng chuyển đổi: Ước tính tăng tỷ lệ chuyển đổi giải ngân thực tế từ mức 9.6% lên 28% - 35% trên tập khách hàng được nhắm chọn mục tiêu.
  • Thời gian hoàn vốn: Dưới 3 tháng sau khi áp dụng vào 02 chiến dịch tiếp thị quy mô lớn.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Dữ liệu nghiên cứu quy mô 5.000 dòng từ một ngân hàng số đơn lẻ, cần kiểm nghiệm mở rộng trên dữ liệu Big Data hàng triệu khách hàng.
  • Thời gian tinh chỉnh siêu tham số (Hyperparameter Tuning) của các thuật toán Boosting tăng theo cấp số nhân khi số lượng biến mở rộng.
  • Chưa kết hợp dữ liệu phi cấu trúc (Lịch sử hội thoại CSKH, dữ liệu hành vi nhấp chuột trên ứng dụng di động).

Hướng phát triển tương lai

  1. Thử nghiệm các thuật toán Boosting thế hệ mới: Ứng dụng XGBoost, LightGBM và CatBoost để tăng tốc độ huấn luyện trên dữ liệu lớn.
  2. Khám phá kỹ thuật nâng cao: Áp dụng thuật toán ADASYN (Adaptive Synthetic) và mô hình Deep Learning cho dữ liệu bảng (TabNet).
  3. Tự động hóa tối ưu siêu tham số: Ứng dụng Bayesian Optimization thông qua Optuna.
  4. Xây dựng MLOps Pipeline: Triển khai CI/CD tự động huấn luyện lại mô hình (Retraining Pipeline) khi dữ liệu hành vi người dùng có sự dịch chuyển phân phối (Data Drift).

Đối tượng hưởng lợi

mindmap
  root((Hệ sinh thái hưởng lợi))
    Sinh viên & Nghiên cứu sinh
      Tham khảo pipeline CRISP-DM chuẩn mực
      Cách áp dụng SMOTENC trên dữ liệu hỗn hợp
      Thực hành Explainable AI với SHAP
    Kỹ sư Dữ liệu & ML Engineers
      Bộ khung mã nguồn tiền xử lý chuẩn hóa
      Mô hình đối chuẩn hiệu năng đa thuật toán
      Kinh nghiệm đóng gói Model ra Web App
    Ngân hàng & Tổ chức Fintech
      Giảm chi phí tiếp thị CAC từ 30-40%
      Nâng cao tỷ lệ chuyển đổi hồ sơ vay
      Rút ngắn thời gian thẩm định tín dụng
  • Sinh viên & Học viên ngành Data Analytics: Tài liệu tham khảo toàn diện về phương pháp xử lý dữ liệu mất cân bằng trong ngành tài chính và cách trình bày đồ án tốt nghiệp chuẩn quốc tế.
  • Kỹ sư Machine Learning: Cung cấp kiến trúc tham chiếu từ khâu tiền xử lý, huấn luyện đến giải thích mô hình bằng SHAP.
  • Lãnh đạo Khối Ngân hàng Bán lẻ & Fintech: Bản kế hoạch khả thi để ứng dụng Trí tuệ nhân tạo vào tối ưu hóa chi phí chiến dịch tiếp thị và quản trị rủi ro tín dụng.

Câu hỏi thường gặp

1. Tại sao đồ án lại chọn SMOTENC thay vì SMOTE hay Random Over-sampling?

Tập dữ liệu ngân hàng chứa đồng thời cả biến liên tục (như MaximumSpend, Mortgage) và biến định danh nhị phân/rời rạc (như Security-Asset, Hidden-Score). Kỹ thuật SMOTE truyền thống sẽ tạo ra các giá trị số thực vô nghĩa trên biến rời rạc (ví dụ: Security-Asset = 0.63), trong khi Random Over-sampling dễ gây Overfitting. SMOTENC xử lý hoàn hảo vấn đề này bằng cách kết hợp nội suy liên tục và chọn giá trị Mode cho biến rời rạc.

2. Vì sao Gradient Boosting lại đạt hiệu năng cao hơn Random Forest và Decision Tree?

Gradient Boosting hoạt động theo cơ chế học tuần tự (Sequential Ensemble Learning), trong đó mỗi cây quyết định mới được tối ưu để sửa chữa sai số (Residual Error) của các cây trước đó bằng thuật toán Gradient Descent. Do đó, mô hình nắm bắt tốt hơn các biên quyết định phức tạp và phi tuyến tính giữa các biến tài chính.

3. Hệ thống có thể tích hợp trực tiếp vào Core Banking hiện hữu không?

Có. Mô hình sau khi huấn luyện được lưu trữ dưới định dạng chuẩn (.pkl hoặc .onnx) và đóng gói qua REST API (FastAPI / Flask) bên trong Docker Container, cho phép mọi hệ thống ngân hàng lõi gọi dự báo theo cơ chế Microservices với độ trễ dưới 200ms.

4. Giá trị SHAP có vai trò gì trong việc tuân thủ pháp lý tín dụng?

Quy định tín dụng ngân hàng yêu cầu tính minh bạch trong việc từ chối hồ sơ vay của khách hàng. SHAP cung cấp giá trị đóng góp định lượng chính xác của từng đặc trưng, giúp ngân hàng giải trình rõ ràng lý do từ chối dựa trên căn cứ khoa học thay vì đánh giá cảm tính.

5. Cần cấu hình phần cứng như thế nào để triển khai hệ thống này?

  • Môi trường Huấn luyện: CPU 4-8 Cores, RAM 16GB (huấn luyện hoàn tất dưới 2 phút cho 10.000 bản ghi).
  • Môi trường Triển khai (Production Inference): 2 vCPU, RAM 4GB là đủ để xử lý hàng trăm yêu cầu dự báo đồng thời mỗi giây.

Kết luận

Đồ án tốt nghiệp "Customer Segmentation in Banking for Personal Consumption Loans: A Study on Individual Borrowers in a Digital Banking" của sinh viên Lê Phan Anh Thư đã giải quyết thành công bài toán phân khúc và dự báo khách hàng vay tiêu dùng bằng phương pháp tiếp cận học máy hiện đại.

Bằng việc kết hợp nhuần nhuyễn kỹ thuật xử lý dữ liệu mất cân bằng SMOTENC, thuật toán tối ưu Gradient Boosting Classifier (đạt độ chính xác 95.8%, Precision 0.96, F1-score 0.96), giải thích mô hình qua SHAP Value và xây dựng công cụ tương tác thực tế, nghiên cứu không chỉ mang giá trị học thuật xuất sắc mà còn là lời giải kinh doanh thực tiễn giúp các ngân hàng số tối ưu hóa ngân sách tiếp thị và nâng cao năng lực cạnh tranh trong kỷ nguyên số.