ホームページ >バックエンド開発 >Python チュートリアル >FastAPI と機械学習を使用したリアルタイムのクレジット カード不正検出システムの構築
クレジット カード詐欺は金融業界に重大な脅威をもたらし、毎年数十億ドルの損失をもたらしています。これに対処するために、不正な取引をリアルタイムで検出して防止する機械学習モデルが開発されました。この記事では、Python 用の最新の Web フレームワークである FastAPI と、Kaggle の人気のクレジット カード不正検出データセットでトレーニングされたランダム フォレスト分類子を使用して、リアルタイムのクレジット カード不正検出システムを構築するプロセスについて説明します。
このプロジェクトの目標は、クレジット カード取引が不正である可能性を予測する Web サービスを作成することです。このサービスはトランザクション データを受け取り、それを前処理して、不正の可能性とともに予測を返します。このシステムは、高速かつスケーラブルで、既存の金融システムに簡単に統合できるように設計されています。
このプロジェクトで使用されるデータセットは、Kaggle のクレジット カード不正検出データセットです。これには 284,807 件のトランザクションが含まれており、そのうち不正なものは 492 件のみです。このクラスの不均衡には課題がありますが、少数クラスをオーバーサンプリングすることで解決されます。
機能はまず、scikit-learn の StandardScaler を使用して標準化されます。次に、データセットはトレーニング セットとテスト セットに分割されます。不均衡を考慮して、モデルをトレーニングする前に、RandomOverSampler 手法を適用してクラスのバランスをとります。
from sklearn.preprocessing import StandardScaler from imblearn.over_sampling import RandomOverSampler # Standardize features scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # Balance the dataset ros = RandomOverSampler(random_state=42) X_resampled, y_resampled = ros.fit_resample(X_scaled, y)
私たちは、不均衡なデータセットの処理に適しており、堅牢な予測を提供するランダム フォレスト分類器をトレーニングします。モデルはオーバーサンプリングされたデータでトレーニングされ、そのパフォーマンスは精度、精度、再現率、AUC-ROC 曲線を使用して評価されます。
from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report, roc_auc_score # Train the model model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X_resampled, y_resampled) # Evaluate the model y_pred = model.predict(X_test_scaled) print(classification_report(y_test, y_pred)) print("AUC-ROC:", roc_auc_score(y_test, model.predict_proba(X_test_scaled)[:, 1]))
joblib を使用して保存されたトレーニング済みモデルとスケーラーを使用して、FastAPI アプリケーションの構築に進みます。 FastAPI は、そのスピードと使いやすさから選ばれ、リアルタイム アプリケーションに最適です。
FastAPI アプリケーションは、トランザクション データを受け取って処理し、モデルの予測と確率を返す POST エンドポイント /predict/ を定義します。
from fastapi import FastAPI, HTTPException from pydantic import BaseModel import joblib import pandas as pd # Load the trained model and scaler model = joblib.load("random_forest_model.pkl") scaler = joblib.load("scaler.pkl") app = FastAPI() class Transaction(BaseModel): V1: float V2: float # Include all other features used in your model Amount: float @app.post("/predict/") def predict(transaction: Transaction): try: data = pd.DataFrame([transaction.dict()]) scaled_data = scaler.transform(data) prediction = model.predict(scaled_data) prediction_proba = model.predict_proba(scaled_data) return {"fraud_prediction": int(prediction[0]), "probability": float(prediction_proba[0][1])} except Exception as e: raise HTTPException(status_code=400, detail=str(e))
アプリケーションをローカルでテストするには、uvicorn を使用して FastAPI サーバーを実行し、POST リクエストを /predict/ エンドポイントに送信します。このサービスは受信リクエストを処理し、データをスケーリングし、トランザクションが不正かどうかを返します。
uvicorn main:app --reload
その後、curl または Postman などのツールを使用して API をテストできます。
curl -X POST http://127.0.0.1:8000/predict/ \ -H "Content-Type: application/json" \ -d '{"V1": -1.359807134, "V2": -0.072781173, ..., "Amount": 149.62}'
API は、不正行為の予測と関連する確率を含む JSON オブジェクトを返します。
この記事では、機械学習と最新の Web フレームワークを組み合わせた、リアルタイムのクレジット カード不正検出システムを構築しました。 github のリンクはここにあります。このシステムは、リアルタイムの取引データを処理し、即時に予測を提供できるように設計されており、不正行為と闘おうとしている金融機関にとって貴重なツールとなっています。
FastAPI を使用してこのモデルをデプロイすることで、サービスが高速であるだけでなく、複数のリクエストを同時に処理できるスケーラブルであることも保証します。このプロジェクトは、より洗練されたモデル、改善された機能エンジニアリング、または運用環境との統合によってさらに拡張できます。
システムをさらに強化するには、次の点を考慮してください。
以上がFastAPI と機械学習を使用したリアルタイムのクレジット カード不正検出システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。