Oszustwo to nie tylko uciążliwość; to przemysł wart 12,5 miliarda dolarów. Według danych FTC z 2024 roku, zgłoszone straty związane z oszustwami gwałtownie wzrosły, przy czym same oszustwa inwestycyjne stanowiły prawie połowę tej kwoty.
Dla programistów i architektów systemów wyzwanie jest dwojakie:
Tradycyjne systemy oparte na regułach ("Jeśli kwota > 10 000 $, oznacz to") są zbyt kruche. Generują fałszywe alarmy i pomijają ewoluujące wektory ataków.
W tym przewodniku inżynieryjnym zbudujemy System Obrony Dwuwarstwowej. Zaimplementujemy szybki model XGBoost do monitorowania transakcji oraz silnik NLP oparty na BERT do wykrywania spamu, wszystko to w natywnej dla chmury architekturze mikroserwisów.
Zacznijmy budować.
Nie budujemy zadania wsadowego, które działa w nocy. Oszustwa zdarzają się w milisekundach. Potrzebujemy silnika wnioskowania w czasie rzeczywistym.
Nasz system składa się z dwóch odrębnych potoków zasilających centralny silnik decyzyjny.
Przy pracy z tabelarycznymi danymi finansowymi (Kwota, Czas, Lokalizacja, ID urządzenia), XGBoost jest obecnie królem wzgórza. W naszych testach porównawczych osiągnął 98,2% dokładności i 97,6% precyzji, przewyższając Random Forest zarówno pod względem szybkości, jak i niezawodności.
Oszustwa są rzadkie. Jeśli masz 100 000 transakcji, być może tylko 30 to oszustwa. Jeśli wytrenujemy model na takich danych, będzie on po prostu za każdym razem zgadywał "Legalna" i osiągał 99,9% dokładności, pomijając jednocześnie każdy przypadek oszustwa.
Rozwiązanie: Używamy SMOTE (Synthetic Minority Over-sampling Technique) lub ważenia klas podczas treningu.
Oto jak skonfigurować klasyfikator XGBoost do oceny transakcji.
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}")
Dlaczego XGBoost wygrywa:
Oszustwo często zaczyna się od linku. "Kliknij tutaj, aby zaktualizować swoje KYC." \n Aby to wykryć, potrzebujemy przetwarzania języka naturalnego (NLP).
Porównaliśmy Naïve Bayes (lekki, szybki) z BERT (Deep Learning).
W środowisku produkcyjnym dostrajamy wstępnie wytrenowany model 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%})")
Wykrywanie jest bezużyteczne bez działania. Najbardziej innowacyjną częścią tej architektury jest Logika interwencji.
Nie tylko rejestrujemy oszustwo; przechwytujemy podróż użytkownika.
Przepływ pracy:
Uwaga: W przeciwieństwie do standardowych filtrów e-mail, które przenoszą elementy do folderu Spam, ten system znajduje się między kliknięciem a miejscem docelowym, uniemożliwiając użytkownikowi załadowanie złośliwego ładunku.
Podczas wdrażania tego do produkcji, "Dokładność" jest wskaźnikiem próżności. Musisz obserwować Precyzję i Czułość.
W naszych badaniach XGBoost zapewnił najlepszą równowagę:
Era ręcznego przeglądu oszustw dobiegła końca. Przy eksplodujących wolumenach transakcji jedyną skalowalną obroną jest AI.
Łącząc XGBoost dla ustrukturyzowanych danych transakcyjnych i BERT dla nieustrukturyzowanych danych komunikacyjnych, tworzymy solidną tarczę, która chroni użytkowników nie tylko przed stratami finansowymi, ale także przed inżynierią społeczną, która je poprzedza.
Następne kroki dla programistów:
\ \


