Skip to content

Kanvad/project_tools_for_ai

Repository files navigation

🛡️ Hệ Thống AI Chống Gian Lận Thẻ Tín Dụng

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 LearningStreamlit Dashboard.


📋 Mục Lục


🎯 Tổng quan

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

🏗️ Kiến trúc hệ thống

┌─────────────────────────────────────────────────────────────────┐
│                        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        │
└─────────────────────────────────────────────────────────────────┘

🛠️ Công nghệ sử dụng

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

Thư viện chính

  • pyspark - Xử lý dữ liệu phân tán
  • streamlit - Xây dựng dashboard
  • pandas, numpy - Xử lý dữ liệu
  • altair - Visualization
  • Faker - Tạo dữ liệu giả lập

📦 Cài đặt

Yêu cầu hệ thống

  • Python 3.8+
  • Java 8+ (cho Spark)
  • RAM tối thiểu 8GB

Các bước cài đặt

  1. Clone hoặc tải dự án về

  2. Cài đặt dependencies

pip install -r requirements.txt
  1. Chuẩn bị dữ liệu gốc

🚀 Hướng dẫn sử dụng

Bước 1: Chuẩn bị dữ liệu

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

Bước 2: Huấn luyện mô hình

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

Bước 3: Chạy streaming engine

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

Bước 4: Tạo giao dịch giả lập

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

Bước 5: Khởi động Dashboard

streamlit run 5_dashboard.py

📁 Cấu trúc dự án

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

🔄 Luồng xử lý

1. Data Pipeline

creditcard.csv 
    → Split (80/20) 
    → Noise Injection (50x fraud, 5x normal) 
    → Upsampling 
    → Parquet format

2. Training Pipeline

Train Parquet 
    → Feature Assembly (V1-V28, Amount) 
    → RandomForest (20 trees, max_depth=10) 
    → AUC Evaluation 
    → Model Save

3. Streaming Pipeline

CSV Files (stream_input/) 
    → Schema Validation 
    → Model Prediction 
    → Output CSV (stream_output/)

4. Dashboard Features

  • 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)

🎯 Tính năng nổi bật

Dashboard

  • ✅ Đă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

Transaction Generator

  • ✅ 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)

📊 Dataset

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

🔧 Troubleshooting

Lỗi thường gặp

  1. Không tìm thấy creditcard.csv

    • Tải dataset từ Kaggle và đặt vào thư mục gốc
  2. Spark memory error

    • Tăng RAM trong config: spark.driver.memory
  3. 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
  4. File CSV không được đọc

    • Kiểm tra schema có khớp không
    • Xóa checkpoint và restart streaming

👥 Đóng góp

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

📝 License

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

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Contributors