Pipeline Phát hiện Giao dịch Gian lận & Dị biệt Đa biến
Trong hệ thống ngân hàng số, một giao dịch chuyển 50,000,000 VNĐ có thể là bình thường vào ban ngày tại chi nhánh quen thuộc, nhưng sẽ trở thành bất thường nghiêm trọng nếu diễn ra…
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: multivariate normal, covariance matrix, matrix inverse, percentile threshold.
Nội dung đề bài
Mục tiêu kiến thức
- Xây dựng mô hình Phát hiện dị biệt đa biến (Multivariate Anomaly Detection) dựa trên Khoảng cách Mahalanobis (Mahalanobis Distance).
- Hiểu được sự vượt trội của khoảng cách Mahalanobis so với khoảng cách Euclidean khi các đặc trưng tài chính (như số tiền giao dịch và tần suất giao dịch) có tương quan mạnh mẽ với nhau.
- Tính toán và nghịch đảo ma trận hiệp phương sai có điều quy chống suy biến (Regularized Covariance Matrix): Sigmareg = Sigma + ε I.
- Xác định ngưỡng phân vị (Quantile Threshold) theo tỷ lệ ngoại lai kỳ vọng (
contamination).
Mô tả bài toán
Trong hệ thống ngân hàng số, một giao dịch chuyển 50,000,000 VNĐ có thể là bình thường vào ban ngày tại chi nhánh quen thuộc, nhưng sẽ trở thành bất thường nghiêm trọng nếu diễn ra vào 3 giờ sáng từ một thiết bị mới. Việc chỉ kiểm tra từng đặc trưng độc lập bằng ngưỡng một chiều (Z-Score đơn biến) sẽ bỏ sót các mối tương quan này.
Khoảng cách bình phương Mahalanobis của vector giao dịch x ∈ RD: D2(x) = (x - μ)T Sigmareg-1 (x - μ)
Hãy xây dựng lớp:
class MultivariateAnomalyDetector:
def __init__(self, contamination: float = 0.05, eps: float = 1e-6):
...
def fit(self, X: np.ndarray) -> "MultivariateAnomalyDetector":
...
def score_samples(self, X: np.ndarray) -> np.ndarray:
...
def predict(self, X: np.ndarray) -> np.ndarray:
...Yêu cầu chi tiết:
- Khởi tạo (
__init__): contamination: Tỷ lệ phần trăm dự kiến các điểm ngoại lai trong tập huấn luyện (0.0 < contamination < 0.5). Nếu không thỏa mãn, némValueError("contamination must be in (0.0, 0.5)").eps: Hằng số điều quy ma trận ε > 0.- Huấn luyện (
fit): - Nhận mảng 2D X ∈ RN × D (N > D). Nếu X.ndim ≠ 2 hoặc N ≤ D, ném
ValueError("X must be 2D with N > D"). - Tính vector trung bình: μ = 1N ∑i=1N xi.
- Tính ma trận hiệp phương sai mẫu không thiên lệch (
ddof=1):
Sigma = 1N - 1 (X - μ)T (X - μ)
- Thêm thành phần điều quy đường chéo để đảm bảo ma trận xác định dương và khả nghịch:
Sigmareg = Sigma + ε ID
- Tính ma trận nghịch đảo: Sigmainv = inv(Sigmareg).
- Tính điểm D2 cho toàn bộ tập huấn luyện X.
- Xác định ngưỡng phân vị τ: Ngưỡng bằng phân vị thứ (1 - contamination) × 100 của tập điểm huấn luyện:
threshold_ = np.percentile(train_scores, (1.0 - contamination) * 100.0).
- Trả về
self. - Tính điểm bất thường (
score_samples): - Nhận vào X ∈ RM × D.
- Tính vector hóa khoảng cách bình phương Mahalanobis D2(x) cho từng dòng:
Δ = X - μ D2(xi) = ∑j=1D (Δ Sigmainv)ij Δij
- Trả về mảng 1D
np.ndarrayfloat64 độ dài M. - Gán nhãn dự đoán (
predict): - Trả về mảng 1D kiểu boolean (
bool_):
True nếu điểm số ≥ threshold_ (bất thường/gian lận), False nếu bình thường.
Input
- Các tham số truyền vào hàm/lớp MultivariateAnomalyDetector hoặc dữ liệu đầu vào theo định dạng mô tả.
Output
- Kết quả trả về của hàm/lớp MultivariateAnomalyDetector hoặc dữ liệu in ra màn hình theo đúng đặc tả.
Ràng buộc
- Kích thước ma trận: 10 ≤ N ≤ 10,000, 2 ≤ D ≤ 20.
- Không dùng
scipy.spatial.distance.mahalanobishaysklearn.covariance. Toàn bộ tính bằngnumpy.
Ví dụ 1
Input
MultivariateAnomalyDetector(train_data=[[100.0, 50.0], [101.0, 50.5], [99.0, 49.5], [102.0, 51.0], [98.0, 49.0], [100.5, 50.2], [99.5, 49.8], [101.5, 50.8], [98.5, 49.2], [100.2, 50.1]], test_data=[[100.0, 50.0], [500.0, 10.0]], contamination=0.1, eps=0.0001)Output
[False, True]Giải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Ví dụ 2
Input
MultivariateAnomalyDetector(train_data=[[10.0, 10.0], [11.0, 11.0], [12.0, 12.0], [9.0, 9.0], [8.0, 8.0], [10.5, 10.5], [11.5, 11.5], [9.5, 9.5], [8.5, 8.5], [10.2, 10.2]], test_data=[[10.0, 10.0], [10.0, 50.0]], contamination=0.1, eps=1e-05)Output
[False, True]Giải thích
Hàm được gọi với bộ tham số thứ hai và trả về kết quả tương ứng theo thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
