Gian lận không chỉ là một phiền toái; đó là một ngành công nghiệp trị giá 12,5 tỷ đô la. Theo dữ liệu FTC năm 2024, các thiệt hại được báo cáo do gian lận đã tăng vọt, với riêng các vụ lừa đảo đầu tư chiếm gần một nửa tổng số đó.
Đối với các nhà phát triển và kiến trúc sư hệ thống, thách thức có hai mặt:
Các hệ thống dựa trên quy tắc truyền thống ("Nếu số tiền > $10,000, đánh dấu") quá dễ vỡ. Chúng tạo ra các kết quả dương tính giả và bỏ lỡ các vectơ tấn công đang phát triển.
Trong hướng dẫn kỹ thuật này, chúng ta sẽ xây dựng một Hệ thống Phòng thủ Hai lớp. Chúng ta sẽ triển khai mô hình XGBoost tốc độ cao để giám sát giao dịch và một công cụ NLP dựa trên BERT để phát hiện spam, đóng gói tất cả trong kiến trúc vi dịch vụ gốc đám mây.
Hãy bắt đầu xây dựng.
Chúng ta không xây dựng một công việc hàng loạt chạy qua đêm. Gian lận xảy ra trong mili giây. Chúng ta cần một công cụ suy luận thời gian thực.
Hệ thống của chúng ta bao gồm hai đường ống riêng biệt cung cấp vào một công cụ quyết định trung tâm.
Khi xử lý dữ liệu tài chính dạng bảng (Số tiền, Thời gian, Vị trí, ID Thiết bị), XGBoost hiện là vua của ngọn đồi. Trong các điểm chuẩn của chúng tôi, nó đạt được độ chính xác 98,2% và độ chính xác 97,6%, vượt trội hơn Random Forest cả về tốc độ và độ tin cậy.
Gian lận là hiếm. Nếu bạn có 100.000 giao dịch, có thể chỉ có 30 giao dịch gian lận. Nếu bạn huấn luyện một mô hình trên dữ liệu này, nó sẽ chỉ đoán "Hợp pháp" mọi lúc và đạt được độ chính xác 99,9% trong khi bỏ lỡ mọi trường hợp gian lận.
Giải pháp: Chúng tôi sử dụng SMOTE (Kỹ thuật lấy mẫu quá mức thiểu số tổng hợp) hoặc trọng số lớp trong quá trình đào tạo.
Đây là cách thiết lập bộ phân loại XGBoost để chấm điểm giao dịch.
import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.metrics import precision_score, recall_score, f1_score import pandas as pd # 1. Load Data (Anonymized Transaction Logs) # Features: Amount, OldBalance, NewBalance, Location_ID, Device_ID, TimeDelta df = pd.read_csv('transactions.csv') X = df.drop(['isFraud'], axis=1) y = df['isFraud'] # 2. Split Data X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 3. Initialize XGBoost # scale_pos_weight is crucial for imbalanced fraud data model = xgb.XGBClassifier( objective='binary:logistic', n_estimators=100, learning_rate=0.1, max_depth=5, scale_pos_weight=10, # Handling class imbalance use_label_encoder=False ) # 4. Train print("Training Fraud Detection Model...") model.fit(X_train, y_train) # 5. Evaluate preds = model.predict(X_test) print(f"Precision: {precision_score(y_test, preds):.4f}") print(f"Recall: {recall_score(y_test, preds):.4f}") print(f"F1 Score: {f1_score(y_test, preds):.4f}")
Tại sao XGBoost chiến thắng:
Gian lận thường bắt đầu bằng một liên kết. "Nhấp vào đây để cập nhật KYC của bạn." \n Để phát hiện điều này, chúng ta cần Xử lý ngôn ngữ tự nhiên (NLP).
Chúng tôi đã so sánh Naïve Bayes (nhẹ, nhanh) với BERT (Học sâu).
Đối với môi trường sản xuất, chúng tôi tinh chỉnh một mô hình Transformer đã được đào tạo trước.
from transformers import BertTokenizer, BertForSequenceClassification import torch # 1. Load Pre-trained BERT model_name = "bert-base-uncased" tokenizer = BertTokenizer.from_pretrained(model_name) model = BertForSequenceClassification.from_pretrained(model_name, num_labels=2) def classify_message(text): # 2. Tokenize Input inputs = tokenizer( text, return_tensors="pt", truncation=True, padding=True, max_length=512 ) # 3. Inference with torch.no_grad(): outputs = model(**inputs) # 4. Convert Logits to Probability probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1) spam_score = probabilities[0][1].item() # Score for 'Label 1' (Spam) return spam_score # Usage msg = "Urgent! Your account is locked. Click http://bad-link.com" score = classify_message(msg) if score > 0.9: print(f"BLOCKED: Phishing Detected (Confidence: {score:.2%})")
Phát hiện vô dụng nếu không có hành động. Phần sáng tạo nhất của kiến trúc này là Logic can thiệp.
Chúng tôi không chỉ ghi lại gian lận; chúng tôi chặn hành trình của người dùng.
Quy trình làm việc:
Lưu ý: Không giống như bộ lọc Email tiêu chuẩn di chuyển các mục đến thư mục Rác, hệ thống này nằm giữa nhấp chuột và điểm đến, ngăn người dùng tải tải trọng độc hại.
Khi triển khai điều này vào sản xuất, "Độ chính xác" là một chỉ số phù phiếm. Bạn cần theo dõi Precision và Recall.
Trong nghiên cứu của chúng tôi, XGBoost cung cấp sự cân bằng tốt nhất:
Kỷ nguyên của việc xem xét gian lận thủ công đã kết thúc. Với khối lượng giao dịch bùng nổ, phòng thủ có thể mở rộng duy nhất là AI.
Bằng cách kết hợp XGBoost cho dữ liệu giao dịch có cấu trúc và BERT cho dữ liệu giao tiếp không có cấu trúc, chúng ta tạo ra một lá chắn mạnh mẽ bảo vệ người dùng không chỉ khỏi tổn thất tài chính, mà còn từ kỹ thuật xã hội đi trước nó.
Các bước tiếp theo cho nhà phát triển:
\ \


