Шахрайство — це не просто неприємність; це індустрія на 12,5 мільярдів доларів. Згідно з даними FTC за 2024 рік, зафіксовані збитки від шахрайства різко зросли, причому лише інвестиційні шахрайства становлять майже половину цієї суми.
Для розробників та системних архітекторів виклик подвійний:
Традиційні системи на основі правил ("Якщо сума > $10,000, позначити") занадто крихкі. Вони генерують хибні спрацьовування та пропускають нові вектори атак.
У цьому інженерному посібнику ми створимо Систему захисту з подвійним шаром. Ми впровадимо високошвидкісну модель XGBoost для моніторингу транзакцій та BERT-based NLP-рушій для виявлення спаму, обгорнувши все це в хмарну мікросервісну архітектуру.
Давайте будувати.
Ми не створюємо пакетне завдання, яке виконується вночі. Шахрайство відбувається за мілісекунди. Нам потрібен рушій виведення в режимі реального часу.
Наша система складається з двох окремих конвеєрів, які подають дані в центральний рушій прийняття рішень.
При роботі з табличними фінансовими даними (Сума, Час, Місцезнаходження, ID пристрою), XGBoost наразі є королем гори. У наших тестах він досяг 98,2% точності та 97,6% прецизійності, перевершуючи Random Forest як за швидкістю, так і за надійністю.
Шахрайство рідкісне. Якщо у вас 100 000 транзакцій, можливо, лише 30 є шахрайськими. Якщо ви навчите модель на цьому, вона просто вгадуватиме "Легітимно" кожного разу і досягне 99,9% точності, пропускаючи кожен випадок шахрайства.
Рішення: Ми використовуємо SMOTE (Synthetic Minority Over-sampling Technique) або зважування класів під час навчання.
Ось як налаштувати класифікатор XGBoost для оцінки транзакцій.
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}")
Чому XGBoost перемагає:
Шахрайство часто починається з посилання. "Натисніть тут, щоб оновити свій KYC." \n Для виявлення цього нам потрібна обробка природної мови (NLP).
Ми порівняли Naïve Bayes (легкий, швидкий) з BERT (глибоке навчання).
Для виробничого середовища ми точно налаштовуємо попередньо навчену модель Transformer.
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%})")
Виявлення марне без дії. Найбільш інноваційною частиною цієї архітектури є Логіка втручання.
Ми не просто реєструємо шахрайство; ми перехоплюємо шлях користувача.
Робочий процес:
Примітка: На відміну від стандартних фільтрів електронної пошти, які переміщують елементи в папку "Спам", ця система розташовується між кліком та пунктом призначення, запобігаючи завантаженню користувачем шкідливого вмісту.
При розгортанні цього у виробництві "Точність" є показником марнославства. Вам потрібно стежити за Прецизійністю та Повнотою.
У нашому дослідженні XGBoost забезпечив найкращий баланс:
Ера ручного перегляду шахрайства закінчилася. З вибуховим зростанням обсягів транзакцій єдиним масштабованим захистом є ШІ.
Поєднуючи XGBoost для структурованих даних транзакцій та BERT для неструктурованих комунікаційних даних, ми створюємо надійний щит, який захищає користувачів не лише від фінансових втрат, але й від соціальної інженерії, яка їм передує.
Наступні кроки для розробників:
\ \


