Giới thiệu dự án
Thị trường tài chính tiêu dùng tại Việt Nam chứng kiến sự bùng nổ mạnh mẽ của mô hình cho vay ngang hàng (Peer-to-Peer Lending - P2P Lending) từ năm 2016. Theo thống kê của Ngân hàng Nhà nước và các tổ chức tài chính quốc tế, nhu cầu tiếp cận vốn vi mô của khách hàng cá nhân và hộ gia đình sau đại dịch COVID-19 tăng trưởng hơn 25% mỗi năm. Tuy nhiên, rào cản lớn nhất của các nền tảng P2P Lending như DCVFinance (thuộc Công ty Cổ phần Truyền số liệu Việt Nam - DCV) là bài toán quản trị rủi ro tín dụng.
Trước khi áp dụng giải pháp tự động hóa, quy trình thẩm định tín dụng tại DCVFinance phụ thuộc 90% vào dữ liệu tự khai báo của người vay và tra cứu thủ công qua cổng thông tin Trung tâm Thông tin Tín dụng Quốc gia (CIC). Phương thức này bộc lộ nhiều điểm nghẽn nghiêm trọng:
- Thời gian thẩm định kéo dài từ 2 đến 3 ngày làm việc, làm giảm tỷ lệ chuyển đổi và gây trải nghiệm tiêu cực cho khách hàng.
- Nguy cơ gian lận và thông tin nhiễu cao do thiếu cơ chế kiểm chứng chéo và mô hình lượng hóa rủi ro tự động.
- Giới hạn năng lực xử lý hồ sơ (tối đa khoảng 300 hồ sơ/tháng với đội ngũ nhân sự hiện tại), không thể mở rộng quy mô khi lượng người dùng tăng trưởng.
Mục tiêu cụ thể của đề tài bao gồm:
- Chuẩn hóa quy trình thu thập và tiền xử lý dữ liệu hồ sơ khách hàng cá nhân từ nhiều nguồn dữ liệu số.
- Nghiên cứu, thực nghiệm và so sánh hiệu năng của các thuật toán khai phá dữ liệu (Decision Tree, K-Nearest Neighbors, Linear Regression, Random Forest và Gradient Boosting).
- Xây dựng mô hình chấm điểm tín dụng tối ưu dựa trên giải thuật Gradient Boosting Model (GBM) nhằm dự đoán chính xác xác suất vỡ nợ.
- Phát triển hệ thống Web API theo chuẩn kiến trúc RESTful để tích hợp mô hình học máy vào hệ thống quản trị Web Admin và ứng dụng di động DCVFinance.
Phương pháp tiếp cận được lựa chọn là ứng dụng kỹ thuật học máy có giám sát (Supervised Machine Learning) kết hợp với tập luật chuyên gia (Expert Scorecard) theo chuẩn phân nhóm nợ theo Quyết định 493/2005/QĐ-NHNN. Giải pháp cho phép rút ngắn thời gian xử lý từ vài ngày xuống dưới 5 giây, tự động xếp hạng tín nhiệm theo 10 phân hạng từ AAA (Thượng hạng) đến D (Có khả năng mất vốn), đồng thời thiết lập rào cản tự động từ chối các nhóm nợ xấu (Nhóm 3, 4, 5). Phạm vi nghiên cứu tập trung vào phân khúc khách hàng cá nhân vay tiêu dùng tín chấp tại thị trường Việt Nam.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Thực trạng thẩm định tại các công ty tài chính công nghệ vừa và nhỏ cho thấy sự chênh lệch lớn giữa các phương pháp đánh giá tín nhiệm:
| Tiêu chí |
Thẩm định thủ công truyền thống |
Hệ thống luật tĩnh (Rule-based) |
Mô hình Machine Learning (Đề xuất) |
| Thời gian xử lý |
24 - 72 giờ |
1 - 5 phút |
200 - 500 mili-giây |
| Tính khách quan |
Thấp, phụ thuộc cảm tính chuyên viên |
Trung bình, cứng nhắc theo luật cố định |
Cao, học từ dữ liệu lịch sử thực tế |
| Khả năng mở rộng |
Kém (cần tuyển thêm nhân sự) |
Khá, nhưng khó bảo trì tập luật phức tạp |
Rất cao, xử lý hàng nghìn yêu cầu đồng thời |
| Sai số dự báo |
Khó đo lường |
Dễ phát sinh điểm mù phân loại |
Tối ưu hóa sai số trung bình (MAE) |
Yêu cầu hệ thống được lượng hóa theo ma trận ưu tiên MoSCoW:
- Must-have: Khả năng làm sạch dữ liệu khuyết thiếu; thuật toán phân loại điểm số chính xác; cung cấp RESTful API để trao đổi dữ liệu JSON; phân loại chính xác 10 bậc tín nhiệm.
- Should-have: Module quản trị Web Admin hiển thị chi tiết lịch sử tín dụng; cơ chế tự động từ chối hồ sơ nợ xấu nhóm 3, 4, 5; tích hợp tính toán trọng số 60/40 giữa thông tin nhân khẩu và lịch sử trả nợ.
- Could-have: Cơ chế cập nhật điểm tín dụng định kỳ hàng tháng; xuất báo cáo tự động dạng đồ thị trực quan.
- Won't-have (Giai đoạn này): Xử lý dữ liệu phi cấu trúc từ mạng xã hội hoặc quét giọng nói qua tổng đài tự động.
Thiết kế hệ thống
Hệ thống chấm điểm tín dụng DCVFinance được thiết kế theo mô hình kiến trúc phân tầng (Multi-tier Architecture), tách biệt giữa tầng hiển thị, tầng nghiệp vụ logic và tầng mô hình trí tuệ nhân tạo.
+-----------------------------------------------------------------------+
| PRESENTATION LAYER |
| +-------------------------+ +-------------------------+ |
| | Mobile App (1Vay Client)| | Web Admin Dashboard | |
| +------------+------------+ +------------+------------+ |
+-----------------|-----------------------------------|-----------------+
| HTTPS (JSON) | HTTPS (JSON)
+-----------------v-----------------------------------v-----------------+
| APPLICATION GATEWAY / API |
| RESTful Web API Engine (Flask/FastAPI) |
+---------------------------------+-------------------------------------+
|
+---------------------------------v-------------------------------------+
| BUSINESS & ML SERVICES |
| +---------------------------+ +-----------------------------+ |
| | Demographic Scorer (60%) | | Machine Learning Engine | |
| | - 10 Rule-based Criteria | | - Gradient Boosting Model | |
| +-------------+-------------+ | - Feature Transformer | |
| | +--------------+--------------+ |
| +-------------v-------------+ | |
| | Repayment Scorer (40%) | | |
| | - 13 Behavioral Criteria | | |
| +-------------+-------------+ | |
| +-------------------+----------------+ |
| | |
| +--------------v---------------+ |
| | Credit Score Classifier | |
| | (AAA, AA, ..., C, D Buckets) | |
| +--------------+---------------+ |
+------------------------------------|----------------------------------+
|
+------------------------------------v----------------------------------+
| PERSISTENCE LAYER |
| +----------------------------------------------------+ |
| | Relational Database (MySQL 8.0 / PostgreSQL) | |
| +----------------------------------------------------+ |
+-----------------------------------------------------------------------+
Technology Stack chính của hệ thống bao gồm:
- Core Engine & ML: Python 3.9+, Scikit-Learn v1.0.2, Pandas v1.4.2, NumPy v1.22.3.
- API Framework: Flask v2.1.2 / FastAPI v0.78, định dạng dữ liệu chuẩn JSON.
- Database: MySQL Server v8.0.28 lưu trữ hồ sơ người dùng, lịch sử giao dịch và điểm số.
- Client Interfaces: Mobile App (Flutter/React Native) và Web Admin (Bootstrap, HTML5, CSS3, JavaScript).
Hệ thống API cung cấp hai endpoint trọng yếu:
POST /api/v1/credit-score/predict: Tiếp nhận payload JSON chứa các trường dữ liệu định danh, tài chính và lịch sử trả nợ, trả về điểm số dự báo cùng hạng mức tín dụng.
GET /api/v1/credit-score/history/{customer_id}: Trích xuất lịch sử chấm điểm và biến động rủi ro của khách hàng theo thời gian.
Mẫu định dạng trao đổi dữ liệu RESTful API:
{
"customer_id": "KH2022050901",
"limit_bal": 50000000,
"sex": 1,
"education": 2,
"marriage": 1,
"age": 32,
"pay_history": [-1, 0, 0, 1, 2, 0],
"bill_amounts": [12000000, 11500000, 9800000, 8500000, 4200000, 3100000],
"pay_amounts": [2000000, 3000000, 1500000, 1000000, 1500000, 2000000]
}
Methodology
Dự án áp dụng quy trình phát hiện tri thức trong cơ sở dữ liệu (Knowledge Discovery in Databases - KDD) tích hợp với khung làm việc Agile Scrum qua 4 giai đoạn chính kéo dài 12 tuần:
| Giai đoạn (Milestone) |
Thời gian |
Nội dung công việc chính |
Kết quả bàn giao (Deliverables) |
| Giai đoạn 1: Data Understanding & Cleaning |
Tuần 1 - 3 |
Khảo sát quy trình nghiệp vụ DCV, tiền xử lý bộ dữ liệu 30.000 bản ghi |
Dataset sạch (df_no_missing), tài liệu phân tích đặc trưng |
| Giai đoạn 2: Model Benchmarking |
Tuần 4 - 6 |
Cài đặt và thực nghiệm 5 mô hình ML, tinh chỉnh siêu tham số |
Báo cáo so sánh MAE, MSE giữa các thuật toán |
| Giai đoạn 3: System & API Development |
Tuần 7 - 9 |
Xây dựng RESTful API Engine, kết nối cơ sở dữ liệu và Web Admin |
API documentation, Service chấm điểm tự động |
| Giai đoạn 4: Integration & Validation |
Tuần 10 - 12 |
Kiểm thử tích hợp với App DCVFinance, đánh giá UAT trên 300 người dùng |
Báo cáo kiểm thử, hệ thống sẵn sàng triển khai |
Implementation và kết quả
Development process
Quá trình tiền xử lý sử dụng bộ dữ liệu chuẩn "Payment of Credit Card Client Dataset" gồm 30.000 bản ghi và 24 biến độc lập/phụ thuộc. Dữ liệu được làm sạch thông qua việc loại bỏ các giá trị không hợp lệ (ví dụ: biến học vấn và tình trạng hôn nhân bằng 0).
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error
# 1. Đọc dữ liệu và tiền xử lý
df = pd.read_csv("UCI_Credit_Card.csv")
# Kiểm tra và loại bỏ 68 dòng chứa giá trị rác tại EDUCATION và MARRIAGE
df_no_missing = df.loc[(df['EDUCATION'] != 0) & (df['MARRIAGE'] != 0)]
print(f"Kích thước sau khi làm sạch: {df_no_missing.shape}") # (29932, 25)
# 2. Phân tách biến đầu vào (X) và biến mục tiêu (y)
X = df_no_missing.drop(columns=['ID', 'default.payment.next.month'])
y = df_no_missing['default.payment.next.month']
# 3. Phân chia tập dữ liệu huấn luyện và kiểm thử theo tỷ lệ 80:20
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
Thuật toán Gradient Boosting hoạt động theo cơ chế Ensemble tuần tự. Ở mỗi bước $m$, mô hình xây dựng một cây quyết định mới $h_m(x)$ để dự đoán phần dư (residual) $r_{im}$ của mô hình phía trước:
$$r_{im} = -\left[\frac{\partial L(y_i, F(x_i))}{\partial F(x_i)}\right]{F(x) = F{m-1}(x)}$$
Mô hình được cập nhật theo công thức:
$$F_m(x) = F_{m-1}(x) + \gamma_m h_m(x)$$
# 4. Khởi tạo và huấn luyện mô hình Gradient Boosting Regressor
gbm_model = GradientBoostingRegressor(
n_estimators=200,
learning_rate=0.05,
max_depth=4,
min_samples_split=5,
random_state=42
)
gbm_model.fit(X_train, y_train)
# 5. Đánh giá mô hình trên tập kiểm thử
y_pred = gbm_model.predict(X_test)
mae_score = mean_absolute_error(y_test, y_pred)
mse_score = mean_squared_error(y_test, y_pred)
print(f"Chỉ số MAE đạt được: {mae_score:.4f}")
print(f"Chỉ số MSE đạt được: {mse_score:.4f}")
Module xử lý RESTful Web API nhận request, tính toán điểm số tổng hợp (60% thông tin cá nhân + 40% lịch sử trả nợ kết hợp output của GBM) và ánh xạ sang bảng phân hạng tín nhiệm:
from flask import Flask, request, jsonify
app = Flask(__name__)
def map_score_to_rating(score):
if score >= 95: return "AAA", "Thượng hạng - Nợ nhóm 1 (Rủi ro Thấp)"
if score >= 90: return "AA", "Xuất sắc - Nợ nhóm 1 (Rủi ro Thấp)"
if score >= 85: return "A", "Rất tốt - Nợ nhóm 1 (Rủi ro Thấp)"
if score >= 80: return "BBB", "Tốt - Nợ nhóm 2 (Rủi ro Thấp)"
if score >= 70: return "BB", "Trung bình - Nợ nhóm 2 (Rủi ro Trung bình)"
if score >= 60: return "B", "Thỏa đáng - Nợ nhóm 2 (Rủi ro Trung bình)"
if score >= 50: return "CCC", "Dưới trung bình - Nợ nhóm 3 (Từ chối duyệt)"
if score >= 40: return "CC", "Dưới chuẩn - Nợ nhóm 3 (Từ chối duyệt)"
if score >= 35: return "C", "Khả năng thu hồi không cao - Nợ nhóm 4 (Từ chối duyệt)"
return "D", "Có khả năng mất vốn - Nợ nhóm 5 (Từ chối duyệt)"
@app.route('/api/v1/credit-score/predict', methods=['POST'])
def predict_score():
data = request.get_json()
# Logic xử lý tính toán kết hợp
calculated_score = 82.5 # Giả lập kết quả tính toán tổng hợp
rating, risk_desc = map_score_to_rating(calculated_score)
return jsonify({
"status": "success",
"customer_id": data.get("customer_id"),
"credit_score": calculated_score,
"rating": rating,
"assessment": risk_desc,
"auto_approval": calculated_score >= 60
}), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Testing và validation
Hiệu năng của các mô hình học máy được đánh giá định lượng trên cùng một tập kiểm thử gồm 5.987 mẫu dữ liệu:
| Thuật toán |
Mean Absolute Error (MAE) |
Mean Squared Error (MSE) |
Thời gian huấn luyện (giây) |
Mức độ phức tạp bộ nhớ |
| Linear Regression |
0.2982 |
0.1421 |
0.45s |
$O(p)$ - Rất thấp |
| KNN ($K=5$) |
0.2814 |
0.1650 |
8.20s |
$O(N \cdot p)$ - Cao |
| Decision Tree |
0.2645 |
0.1583 |
1.15s |
$O(p \cdot \text{depth})$ - Thấp |
| Random Forest |
0.2312 |
0.1294 |
14.60s |
$O(M \cdot p \cdot \text{depth})$ - Trung bình |
| Gradient Boosting (GBM) |
0.2185 |
0.1208 |
9.35s |
$O(M \cdot p \cdot \text{depth})$ - Tối ưu |
Kết quả thực nghiệm khẳng định Gradient Boosting mang lại sai số tuyệt đối thấp nhất ($\text{MAE} = 0.2185$), giảm hơn 26.7% sai số so với mô hình hồi quy tuyến tính cơ bản và vượt trội hơn Random Forest nhờ cơ chế tối ưu hóa hàm mất mát theo gradient.
Kết quả đạt được
Hệ thống đã triển khai thử nghiệm trên cơ sở dữ liệu 300 hồ sơ khách hàng thực tế tại DCVFinance:
- Tốc độ xử lý phê duyệt giảm từ trung bình 48 giờ xuống còn 3.2 giây cho một yêu cầu vay vốn.
- Tự động hóa 100% việc rà soát và loại bỏ hồ sơ nợ xấu thuộc các nhóm nợ 3, 4, 5 theo chuẩn Thông tư/Quyết định của Ngân hàng Nhà nước.
- Mức độ hài lòng của cán bộ thẩm định đạt 92% nhờ giao diện Web Admin trực quan, giảm tải 80% áp lực nhập liệu thủ công.
Đổi mới và đóng góp
- Kết hợp mô hình lai (Hybrid Scoring Architecture): Đề tài tích hợp thành công bảng điểm chuyên gia 23 tiêu chí trọng số (60% nhân khẩu học, 40% lịch sử nợ) với thuật toán Gradient Boosting phi tuyến tính trên 24 biến hành vi tiêu dùng thẻ tín dụng.
- Chuẩn hóa quy trình liên kết dữ liệu qua RESTful API: Giải quyết bài toán phân mảnh dữ liệu giữa ứng dụng di động khách hàng (
1Vay), hệ thống quản trị nội bộ (Web Admin) và Engine tính toán Machine Learning.
- Lượng hóa rủi ro theo quy định pháp lý: Ánh xạ toàn bộ điểm số đầu ra của mô hình học máy vào hệ thống 10 phân hạng chuẩn (AAA đến D), đảm bảo tuân thủ nghiêm ngặt Quyết định 493/2005/QĐ-NHNN về phân loại nợ của các tổ chức tín dụng.
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế
Tại sàn P2P DCVFinance, khi khách hàng thực hiện đăng ký khoản vay vi mô trên ứng dụng:
- Hệ thống thu thập thông tin định danh và giao dịch (thanh toán hóa đơn điện/nước, nạp thẻ, sao kê dư nợ).
- Dữ liệu được gửi bất đồng bộ qua Web API đến máy chủ ML.
- Mô hình xử lý dữ liệu, trả về điểm số và phân hạng trong vòng 500ms.
- Với điểm $\ge 60$ (Hạng AAA đến B), hồ sơ tự động chuyển sang trạng thái "Sẵn sàng nhận vốn đầu tư". Với điểm $< 60$, hệ thống tự động từ chối và thông báo lý do rõ ràng.
Khả năng mở rộng và hiệu quả kinh tế
- Khả năng chịu tải: Kiến trúc RESTful không trạng thái (Stateless) cho phép mở rộng theo chiều ngang (Horizontal Scaling) bằng cách nâng số lượng worker container qua Docker/Kubernetes, đáp ứng trên 100.000 hồ sơ/tháng.
- Phân tích chi phí - lợi ích: Giúp doanh nghiệp tiết kiệm 70% chi phí vận hành phòng thẩm định tín dụng, giảm tỷ lệ nợ xấu trên toàn sàn từ ước tính 6.5% xuống dưới 2.8% trong giai đoạn thử nghiệm.
Lộ trình triển khai:
[Giai đoạn 1: Pilot Test (1-300 users)] --> [Giai đoạn 2: Production Run (10.000 users)] --> [Giai đoạn 3: Full Multi-tenant SaaS (100.000+ users)]
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Dữ liệu huấn luyện ban đầu sử dụng tập dữ liệu thẻ tín dụng quốc tế (Kaggle Taiwan Dataset), cần thêm thời gian để tích lũy và hiệu chỉnh trực tiếp trên hành vi đặc thù của người dùng Việt Nam.
- Mô hình chưa tích hợp trực tiếp cơ chế tự giải thích (Explainable AI - XAI như SHAP hoặc LIME) để chỉ ra chính xác thuộc tính nào ảnh hưởng lớn nhất đến việc tụt hạng tín dụng của từng cá nhân.
Hướng phát triển
- Tích hợp thêm các nguồn dữ liệu thay thế (Alternative Data) như dữ liệu viễn thông (Telco data), hành vi mua sắm thương mại điện tử và lịch sử đóng bảo hiểm xã hội.
- Nâng cấp mô hình lên các thuật toán Boosting thế hệ mới như LightGBM, CatBoost và thử nghiệm mạng nơ-ron sâu TabNet.
Đối tượng hưởng lợi
- Sinh viên & Học viên: Có tài liệu tham khảo thực tế về việc áp dụng kỹ thuật khai phá dữ liệu KDD và thuật toán Machine Learning vào bài toán kinh tế - tài chính thực tiễn.
- Lập trình viên & Kỹ sư FinTech: Nắm bắt kiến trúc tích hợp giữa mô hình học máy Python và hệ thống Web API RESTful/Web Admin theo quy chuẩn doanh nghiệp.
- Doanh nghiệp & Tổ chức P2P Lending: Sở hữu giải pháp mẫu về hệ thống tự động hóa thẩm định hồ sơ, giúp tối ưu chi phí vận hành và giảm thiểu rủi ro nợ xấu.
- Nhà nghiên cứu: Cung cấp bộ số liệu thực nghiệm so sánh hiệu quả giữa 5 thuật toán học máy phổ biến trên bài toán chấm điểm tín dụng cá nhân.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và môi trường để triển khai hệ thống là gì?
Máy chủ tối thiểu cần 4 Core CPU, 8GB RAM, hệ điều hành Ubuntu 20.04 LTS, cài đặt Python 3.9+, MySQL Server 8.0 và web server Nginx đóng vai trò Reverse Proxy cho Flask/Gunicorn.
2. Mô hình xử lý như thế nào đối với các hồ sơ khách hàng mới (Cold-Start Problem)?
Đối với khách hàng mới hoàn toàn chưa có lịch sử tín dụng, hệ thống gán mức điểm khởi tạo mặc định là 50 điểm (Hạng CCC) và tiến hành chấm điểm ưu tiên dựa trên 10 tiêu chí nhân khẩu học cơ bản (Học vấn, nghề nghiệp, thu nhập, tình trạng cư trú) trước khi kích hoạt phân hệ đánh giá lịch sử trả nợ.
3. Làm sao để tích hợp Web API này vào hệ thống sẵn có của doanh nghiệp?
Doanh nghiệp chỉ cần gửi HTTP POST Request kèm theo định dạng dữ liệu chuẩn JSON tới endpoint /api/v1/credit-score/predict có kèm mã xác thực Token/API Key. Kết quả điểm số và phân hạng được trả về dưới dạng JSON trong vòng chưa đầy 1 giây.
4. Tần suất cập nhật và huấn luyện lại mô hình (Retraining) nên diễn ra như thế nào?
Khuyến nghị tái huấn luyện mô hình theo chu kỳ 3 đến 6 tháng một lần hoặc khi phát hiện hiện tượng trôi dạt dữ liệu (Data Drift) khi sàn giao dịch tích lũy thêm tối thiểu 5.000 hồ sơ vay mới có đầy đủ nhãn trạng thái hoàn trả.
5. Chi phí đầu tư ban đầu và thời gian thu hồi vốn (ROI) ước tính ra sao?
Chi phí phát triển mô hình ban đầu ở mức thấp do sử dụng hoàn toàn các thư viện mã nguồn mở. Với quy mô xử lý từ 2.000 hồ sơ vay/tháng, doanh nghiệp có thể tiết kiệm chi phí nhân sự thẩm định và giảm tỷ lệ mất vốn, đạt điểm hòa vốn và mang lại ROI dương trong vòng 6 đến 9 tháng vận hành.
Kết luận
Đề tài "Nghiên cứu phương pháp chấm điểm tín dụng cho khách hàng cá nhân của sàn giao dịch cho vay ngang hàng DCVFinance" đã giải quyết thành công bài toán tự động hóa thẩm định rủi ro trong lĩnh vực FinTech. Bằng việc ứng dụng thuật toán Gradient Boosting kết hợp cùng kiến trúc RESTful Web API, hệ thống đã chứng minh tính ưu việt với sai số tuyệt đối thấp ($\text{MAE} = 0.2185$), rút ngắn 95% thời gian phê duyệt hồ sơ và đảm bảo tuân thủ các quy chuẩn quản trị rủi ro tín dụng hiện hành. Đây là giải pháp công nghệ có tính ứng dụng thực tiễn cao, tạo nền tảng vững chắc cho việc mở rộng quy mô kinh doanh an toàn và bền vững của các sàn giao dịch P2P Lending tại Việt Nam.