Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Tạo mô hình phát hiện lừa đảo trong giao dịch
Hướng Dẫn Đồ ÁnLập Trình AI

Tạo mô hình phát hiện lừa đảo trong giao dịch

Chia sẻ
Chia sẻ

Phát hiện gian lận trong giao dịch là một bài toán thực tế có giá trị lớn trong ngân hàng, ví điện tử và thương mại điện tử. Việc này không chỉ giúp doanh nghiệp tránh tổn thất tài chính mà còn tăng sự tin tưởng của khách hàng. Học máy (machine learning) là một giải pháp mạnh mẽ để tự động phát hiện những giao dịch bất thường có thể là gian lận.

Bài viết này hướng dẫn chi tiết cách tạo mô hình phát hiện lừa đảo bằng Python, sử dụng một bộ dữ liệu thực tế, xử lý mất cân bằng dữ liệu, huấn luyện mô hình và đánh giá hiệu quả bằng các chỉ số phù hợp.

Tải và khám phá dữ liệu

Chúng ta sử dụng dataset từ Kaggle:
🔗 Credit Card Fraud Detection

Sau khi tải về và giải nén, bạn sẽ có file creditcard.csv, gồm hơn 284.000 giao dịch và các cột:

  • Time: thời gian tính bằng giây từ giao dịch đầu tiên

  • V1 đến V28: đặc trưng đã được xử lý ẩn danh bằng PCA (không rõ ý nghĩa cụ thể)

  • Amount: số tiền giao dịch

  • Class: nhãn mục tiêu (0 = bình thường, 1 = gian lận)

Đọc và khám phá dữ liệu

import pandas as pd

df = pd.read_csv('creditcard.csv')
print(df.shape)
print(df['Class'].value_counts(normalize=True))

Ta thấy tỷ lệ gian lận rất thấp (~0.17%), cho thấy đây là một bài toán mất cân bằng dữ liệu nghiêm trọng – một đặc trưng rất quan trọng cần xử lý cẩn thận.

Tiền xử lý dữ liệu

Loại bỏ cột Time và chuẩn hóa Amount

Cột Time không cần thiết trong huấn luyện mô hình. Cột Amount nên được chuẩn hóa để có giá trị ổn định.

from sklearn.preprocessing import StandardScaler

df = df.drop(columns=['Time'])
df['Amount'] = StandardScaler().fit_transform(df[['Amount']])

Chia tập huấn luyện và kiểm tra

Dữ liệu được chia theo tỉ lệ 80/20 và đảm bảo phân bố nhãn không thay đổi (stratify):

from sklearn.model_selection import train_test_split

X = df.drop('Class', axis=1)
y = df['Class']

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, stratify=y, random_state=42
)

Xử lý mất cân bằng bằng SMOTE

SMOTE (Synthetic Minority Over-sampling Technique) giúp tạo thêm dữ liệu giả của class thiểu số (Class = 1).

from imblearn.over_sampling import SMOTE

smote = SMOTE(random_state=42)
X_train_bal, y_train_bal = smote.fit_resample(X_train, y_train)

print("Sau SMOTE:\n", y_train_bal.value_counts())

Huấn luyện mô hình

Sử dụng mô hình Random Forest – đơn giản nhưng mạnh mẽ cho bài toán phân loại.

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train_bal, y_train_bal)

Đánh giá mô hình

Vì dữ liệu rất mất cân bằng, accuracy không còn ý nghĩa. Cần đánh giá bằng:

  • Precision: tỷ lệ dự đoán lừa đảo là đúng

  • Recall: khả năng tìm đúng các giao dịch lừa đảo

  • F1-score: trung bình điều hòa giữa precision và recall

  • ROC-AUC: khả năng mô hình phân biệt 0 và 1

from sklearn.metrics import classification_report, roc_auc_score

y_pred = clf.predict(X_test)
y_proba = clf.predict_proba(X_test)[:, 1]

print(classification_report(y_test, y_pred))
print("AUC-ROC:", roc_auc_score(y_test, y_proba))

Trực quan hóa phân loại

import matplotlib.pyplot as plt
from sklearn.metrics import RocCurveDisplay

RocCurveDisplay.from_estimator(clf, X_test, y_test)
plt.title("ROC Curve - Mô hình phát hiện lừa đảo")
plt.show()

Kết luận

Phát hiện lừa đảo trong giao dịch là một bài toán quan trọng với thách thức chính là dữ liệu mất cân bằng nghiêm trọng. Qua bài viết này, bạn đã nắm được quy trình đầy đủ để xây dựng một mô hình phát hiện gian lận: từ tiền xử lý dữ liệu, chuẩn hóa đặc trưng, xử lý mất cân bằng bằng SMOTE, đến huấn luyện mô hình và đánh giá bằng các chỉ số phù hợp như recall và AUC-ROC.

Đây chỉ là bước khởi đầu. Trong thực tế, mô hình cần được thử nghiệm với nhiều thuật toán khác nhau, theo dõi drift dữ liệu và triển khai trong môi trường giám sát để đảm bảo hiệu quả liên tục. Việc kết hợp mô hình học máy với các hệ thống cảnh báo thời gian thực sẽ giúp bạn nâng cao đáng kể khả năng phòng ngừa rủi ro tài chính.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!