Một hệ thống giám sát và phát hiện gian lận thẻ tín dụng thời gian thực sử dụng Apache Spark, Machine Learning và Streamlit Dashboard.
Dự án xây dựng một hệ thống Anti-Fraud hoàn chỉnh với khả năng:
- ✅ Xử lý dữ liệu lớn (Big Data) với Apache Spark
- ✅ Huấn luyện mô hình Machine Learning (Random Forest) để phát hiện gian lận
- ✅ Xử lý stream thời gian thực (Real-time Streaming)
- ✅ Dashboard tương tác với giao diện đẹp mắt
- ✅ Mô phỏng giao dịch gian lận từ dữ liệu thực tế
- ✅ Hệ thống feedback để retrain mô hình
┌─────────────────────────────────────────────────────────────────┐
│ DATA PREPARATION │
│ creditcard.csv → Spark → Data Augmentation → Big Data Train │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ MODEL TRAINING │
│ RandomForest Classifier → AUC Evaluation → Model Persistence │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ REAL-TIME STREAMING │
│ CSV Stream → Model Prediction → Output Stream │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ TRANSACTION GENERATOR │
│ Fake Data + Real Fraud Patterns → Inject → Stream Input │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ STREAMLIT DASHBOARD │
│ Login → Real-time Monitoring → Investigation → Feedback │
└─────────────────────────────────────────────────────────────────┘
| Thành phần | Công nghệ |
|---|---|
| Big Data Processing | Apache Spark (PySpark) 4.1.1 |
| Machine Learning | Spark MLlib (Random Forest) |
| Streaming | Spark Structured Streaming |
| Dashboard | Streamlit 1.54.0 |
| Data Visualization | Altair, Pandas |
| Data Format | Parquet, CSV |
pyspark- Xử lý dữ liệu phân tánstreamlit- Xây dựng dashboardpandas,numpy- Xử lý dữ liệualtair- VisualizationFaker- Tạo dữ liệu giả lập
- Python 3.8+
- Java 8+ (cho Spark)
- RAM tối thiểu 8GB
-
Clone hoặc tải dự án về
-
Cài đặt dependencies
pip install -r requirements.txt- Chuẩn bị dữ liệu gốc
- Đặt file
creditcard.csv(Credit Card Fraud Detection dataset) vào thư mục gốc - Dataset có thể tải từ: https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud
- Đặt file
python 1_data_prep.py- Đọc dữ liệu gốc
creditcard.csv - Tạo dữ liệu train/test với tỉ lệ 80/20
- Data augmentation để tạo Big Data (hàng triệu dòng)
- Output:
data/train_data.parquet,data/test_data.parquet
python 2_train_model.py- Huấn luyện Random Forest Classifier
- Đánh giá mô hình với metric AUC-ROC
- Lưu mô hình:
models/rf_fraud_model
python 3_streaming.py- Tải mô hình đã huấn luyện
- Khởi động Spark Streaming
- Theo dõi thư mục
stream_input/để xử lý giao dịch mới
python 4_generator.py- Tạo giao dịch ngẫu nhiên
- Inject mẫu gian lận thực tế từ dữ liệu gốc
- Đẩy vào
stream_input/mỗi 2 giây
streamlit run 5_dashboard.py- Truy cập: http://localhost:8501
- Đăng nhập mặc định:
- Username:
admin - Password:
123456
- Username:
Demo_DoAn/
├── 1_data_prep.py # Chuẩn bị và augmentation dữ liệu
├── 2_train_model.py # Huấn luyện mô hình ML
├── 3_streaming.py # Spark Streaming engine
├── 4_generator.py # Tạo giao dịch giả lập
├── 5_dashboard.py # Streamlit Dashboard
├── requirements.txt # Danh sách dependencies
├── instruct.ipynb # Jupyter notebook hướng dẫn
│
├── data/ # Dữ liệu đã xử lý
│ ├── train_data.parquet
│ └── test_data.parquet
│
├── models/ # Mô hình đã huấn luyện
│ └── rf_fraud_model/
│
├── stream_input/ # Dữ liệu stream đầu vào
├── stream_output/ # Kết quả prediction
├── stream_checkpoint/ # Spark checkpoint
├── temp_input/ # Temporary files
├── filecsv/ # Thư mục CSV phụ trợ
│
└── README.md # Tài liệu dự án
creditcard.csv
→ Split (80/20)
→ Noise Injection (50x fraud, 5x normal)
→ Upsampling
→ Parquet format
Train Parquet
→ Feature Assembly (V1-V28, Amount)
→ RandomForest (20 trees, max_depth=10)
→ AUC Evaluation
→ Model Save
CSV Files (stream_input/)
→ Schema Validation
→ Model Prediction
→ Output CSV (stream_output/)
- Login System: Xác thực người dùng
- Real-time Monitoring: Cập nhật tự động mỗi 1.5s
- Transaction Table: 15 giao dịch mới nhất
- Scatter Chart: Phân bố 50 giao dịch gần nhất
- Investigation Tab: Hồ sơ chi tiết giao dịch gian lận
- Customer Profile: Thông tin khách hàng và lý do cảnh báo
- Feedback System: Báo cáo giao dịch lọt lưới (missed transactions)
- ✅ Đăng nhập bảo mật
- ✅ KPI metrics: Tổng giao dịch, số vụ gian lận, số vụ an toàn
- ✅ Biểu đồ phân tán dòng tiền (màu đỏ = gian lận, xanh = bình thường)
- ✅ Tra cứu giao dịch theo mã (TX-...)
- ✅ Hồ sơ khách hàng chi tiết với IP, vị trí, số thẻ
- ✅ Giải thích nguyên nhân gian lận từ AI
- ✅ Feedback loop: Đánh dấu giao dịch lọt lưới để retrain
- ✅ Tạo giao dịch ngẫu nhiên
- ✅ Inject mẫu gian lận thực tế (30% tỉ lệ)
- ✅ Sử dụng 29 features từ dataset gốc (V1-V28 + Amount + Time)
Dự án sử dụng Credit Card Fraud Detection Dataset:
- 28 features PCA (V1-V28) - đã được anonymized
- Time: Giây từ giao dịch đầu tiên
- Amount: Số tiền giao dịch
- Class: 1 (Gian lận) / 0 (Bình thường)
- Imbalanced dataset: ~0.17% giao dịch là gian lận
-
Không tìm thấy creditcard.csv
- Tải dataset từ Kaggle và đặt vào thư mục gốc
-
Spark memory error
- Tăng RAM trong config:
spark.driver.memory
- Tăng RAM trong config:
-
Dashboard không cập nhật
- Kiểm tra checkbox "Bật tự động cập nhật"
- Đảm bảo streaming đang chạy
-
File CSV không được đọc
- Kiểm tra schema có khớp không
- Xóa checkpoint và restart streaming
Dự án được phát triển cho mục đích học tập và nghiên cứu về:
- Phát hiện gian lận (Fraud Detection)
- Xử lý stream thời gian thực (Real-time Streaming)
- Big Data với Apache Spark
- Dashboard tương tác với Streamlit
Dự án phục vụ mục đích giáo dục và nghiên cứu.
🛡️ NỀN TẢNG AI CHỐNG GIAN LẬN THẺ TÍN DỤNG
Phát hiện nhanh - Chính xác - Thời gian thực