Project: Credit Card Fraud Detection
Lab / Course: HCMUT EE ML & IoT Lab / ML Course
Presentation Slide:
Mentor: Nguyễn Trường Thịnh.
Authors: Đỗ Hồng Phúc (2312672), Phan Bá Thanh (2353084), Trần Phan Đăng Khôi (2352626), Lê Huy Hoàng (2211079), Lâm Thanh Phương (2352951).
Bài báo cáo của nhóm trình bày quá trình lựa chọn, huấn luyện và đánh giá nhiều mô hình học máy để phát hiện giao dịch gian lận bằng thẻ tín dụng (Credit Card Fraud Detection). Đề tài tập trung vào:
- Xử lý dữ liệu mất cân bằng bằng SMOTE.
- Tiền xử lý và chuẩn hóa đặc trưng (StandardScaler cho
TimevàAmount; các đặc trưngV1–V28được giả định đã là các thành phần PCA). - So sánh các mô hình từ tuyến tính (Logistic Regression), mô hình cây quyết định (Decision Tree), phương pháp KNN, SVM tới ensemble (Random Forest và Voting Classifier).
Keywords: credit card fraud, imbalanced data, SMOTE, Random Forest, Voting Classifier, SVM, KNN, Logistic Regression, feature importance.
Tags: fraud-detection, imbalanced-learning, SMOTE, random-forest, ensemble, voting-classifier, scikit-learn.
Bài toán: Phát hiện giao dịch gian lận trên dữ liệu lịch sử giao dịch thẻ tín dụng là một bài toán phân lớp nhị phân (0 = Normal, 1 = Fraud) với tỉ lệ lớp cực kỳ mất cân bằng. Bộ dữ liệu chuẩn sử dụng trong nghiên cứu có 284,807 mẫu, 30 đặc trưng (gồm Time, Amount, và V1–V28), trong đó chỉ ~0.17% là giao dịch gian lận. Dữ liệu không chứa giá trị khuyết.
Thực tiễn: Ở các giao dịch ngân hàng, phát hiện gian lận cần đạt độ nhạy cao (phát hiện nhiều fraud) đồng thời giữ tỷ lệ cảnh báo giả (false positives) ở mức chấp nhận được để hạn chế ảnh hưởng tới khách hàng thật. Vì vậy ta tối ưu không chỉ accuracy mà tập trung vào precision/recall, F1 và ROC-AUC, cùng các business metrics như Fraud Detection Rate và False Alarm Rate.
- Xử lý dữ liệu mất cân bằng để mô hình không bỏ sót lớp thiểu số (fraud).
- So sánh hiệu năng của nhiều mô hình (tuyến tính, cây quyết định, KNN, SVM, Random Forest) trên các metric phù hợp với bài toán mất cân bằng.
- Xây dựng một ensemble (Voting Classifier) để khai thác sức mạnh phối hợp từ các mô hình khác nhau và cải thiện hiệu năng thực tế.
- Lựa chọn và báo cáo các feature quan trọng (feature importance) để hiểu đặc trưng đóng góp vào quyết định.
- Đánh giá business impact (true positives, false positives, false negatives) để phản ánh khả năng áp dụng thực tế.
Bộ dữ liệu sử dụng là bản chuẩn phổ biến cho bài toán phát hiện gian lận thẻ tín dụng (Credit Card Fraud dataset - chứa Time, Amount, V1–V28, Class). Dữ liệu đã được kiểm tra không có giá trị thiếu và có phân phối lớp cực kỳ lệch (≈0.17% fraud).
Kaggle: Credit Card Fraud Detection
Tất cả mô hình được huấn luyện trên dữ liệu đã được chuẩn hóa (StandardScaler cho Time và Amount) và xử lý mất cân bằng bằng SMOTE trên tập huấn luyện, trừ khi ghi chú khác. Dưới đây là tóm tắt các thuật toán, cấu hình nổi bật và mục đích sử dụng.
StandardScalerchoTimevàAmount.V1–V28được giữ nguyên (đã là thành phần PCA).- SMOTE để oversample lớp fraud tới tỉ lệ cân bằng (50:50) trong training set.
- Solver:
saga, penaltyl2,C=1.0,max_iter=5000. - Vai trò: baseline có khả năng diễn giải hệ số, xem feature coefficients để hiểu vai trò.
max_depth=10,min_samples_split=20,min_samples_leaf=10,class_weight='balanced'.- Vai trò: mô hình dễ giải thích, kiểm tra mối quan hệ phi tuyến tính đơn giản.
- Pipeline:
StandardScaler→SMOTE→SVC(kernel='rbf', probability=True). - Grid search trên
Cvàgamma(ví dụC ∈ {0.1,1,10},gamma ∈ {0.1,0.01,0.001}), tối ưu thu đượcC=0.1, gamma=0.001. - Vai trò: nắm bắt ranh giới phi tuyến tính phức tạp; cần cân nhắc chi phí tính toán.
n_neighbors=5,weights='distance',metric='euclidean',n_jobs=-1.- Vai trò: baseline non-parametric; thể hiện hiệu năng tốt với F1 cao hơn Logistic/DT.
n_estimators=100,max_depth=15,min_samples_split=10,min_samples_leaf=5,class_weight='balanced',oob_score=True,n_jobs=-1.- Vai trò: mô hình ensemble mạnh, giảm variance, robust với noise; đạt hiệu năng xuất sắc.
- Kết hợp:
LogisticRegression,KNN,RandomForest(cả hard voting và soft voting). - Kết quả soft voting cho thấy cải thiện so với Random Forest đơn lẻ.
Kết quả cuối cùng trên tập test
| Model | Precision | Recall | F1-Score |
|---|---|---|---|
| Logistic Regression | 0.0585 | 0.8980 | 0.1099 |
| Decision Tree | 0.1280 | 0.8265 | 0.2216 |
| KNN (K=5) | 0.5059 | 0.8776 | 0.6418 |
| SVM | 0.05 | 0.91 | 0.11 |
| Random Forest | 0.7069 | 0.8367 | 0.7664 |
| Soft Voting | 0.7000 | 0.8876 | 0.7884 |
Đánh giá sơ bộ khi áp dụng vào thực tế (Random Forest)
| Metric | Value |
|---|---|
| True Positives (frauds caught) | 82 |
| False Negatives (missed fraud) | 16 |
| False Positives (false alarms) | 34 |
| True Negatives | 56,830 |
| Fraud Detection Rate | 83.7% |
| False Alarm Rate | ~29–30% |
- Ensemble > Single models: Voting Classifier (soft voting) đạt hiệu năng tổng hợp tốt nhất trên bộ test.
- Random Forest mạnh mẽ: Trong các mô hình đơn lẻ, Random Forest đạt F1 cao và ROC-AUC lớn.
- SMOTE cần thận trọng: SMOTE cải thiện recall cho lớp thiểu số nhưng cần validate kỹ để tránh overfitting.
- Feature importance:
V14vàV4là hai đặc trưng quan trọng nhất cho việc dự đoán fraud.
- Clone repository:
git clone https://github.com/Shootingstar2608/Project-HCMUT-EE-Lab.git cd Project-HCMUT-EE-Lab/model - Cài đặt dependencies:
pip install -r requirements.txt
- Tải dataset gốc.
- Thay đổi đường dẫn của hàm
pd.read_csv(your_path)thành đường dẫn tới vị trí dataset đã tải. - Chạy từng cell trong notebook để huấn luyện và đánh giá:
jupyter notebook project-cuoi-khoa.ipynb
- Kết quả (metrics, plots) sẽ được cho ra trực tiếp ở mỗi cell.