ホームページ >バックエンド開発 >Python チュートリアル >FastAPI と機械学習を使用したリアルタイムのクレジット カード不正検出システムの構築

FastAPI と機械学習を使用したリアルタイムのクレジット カード不正検出システムの構築

王林
王林オリジナル
2024-08-13 06:54:33693ブラウズ

Building a Real-Time Credit Card Fraud Detection System with FastAPI and Machine Learning

導入

クレジット カード詐欺は金融業界に重大な脅威をもたらし、毎年数十億ドルの損失をもたらしています。これに対処するために、不正な取引をリアルタイムで検出して防止する機械学習モデルが開発されました。この記事では、Python 用の最新の Web フレームワークである FastAPI と、Kaggle の人気のクレジット カード不正検出データセットでトレーニングされたランダム フォレスト分類子を使用して、リアルタイムのクレジット カード不正検出システムを構築するプロセスについて説明します。

プロジェクトの概要

このプロジェクトの目標は、クレジット カード取引が不正である可能性を予測する Web サービスを作成することです。このサービスはトランザクション データを受け取り、それを前処理して、不正の可能性とともに予測を返します。このシステムは、高速かつスケーラブルで、既存の金融システムに簡単に統合できるように設計されています。

主要コンポーネント

  1. 機械学習モデル: 不正なトランザクションと正当なトランザクションを区別するように訓練されたランダム フォレスト分類器。
  2. データ前処理: モデルが最適に実行されることを保証するためのトランザクション機能の標準化。
  3. API: リアルタイムで予測リクエストを処理するために FastAPI で構築された RESTful API。

ステップ 1: データセットの準備

このプロジェクトで使用されるデータセットは、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)

ステップ 2: 機械学習モデルのトレーニング

私たちは、不均衡なデータセットの処理に適しており、堅牢な予測を提供するランダム フォレスト分類器をトレーニングします。モデルはオーバーサンプリングされたデータでトレーニングされ、そのパフォーマンスは精度、精度、再現率、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]))

ステップ 3: FastAPI アプリケーションの構築

joblib を使用して保存されたトレーニング済みモデルとスケーラーを使用して、FastAPI アプリケーションの構築に進みます。 FastAPI は、そのスピードと使いやすさから選ばれ、リアルタイム アプリケーションに最適です。

APIの作成

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))

ステップ 4: アプリケーションのデプロイ

アプリケーションをローカルでテストするには、uvicorn を使用して FastAPI サーバーを実行し、POST リクエストを /predict/ エンドポイントに送信します。このサービスは受信リクエストを処理し、データをスケーリングし、トランザクションが不正かどうかを返します。

APIをローカルで実行する

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 を使用してこのモデルをデプロイすることで、サービスが高速であるだけでなく、複数のリクエストを同時に処理できるスケーラブルであることも保証します。このプロジェクトは、より洗練されたモデル、改善された機能エンジニアリング、または運用環境との統合によってさらに拡張できます。

次のステップ

システムをさらに強化するには、次の点を考慮してください。

  1. モデルの改善: XGBoost やニューラル ネットワークなどのより高度なモデルを試してください。
  2. 特徴エンジニアリング: モデルの精度を向上させる可能性のある追加の機能を検討します。
  3. 実際の展開: 本番環境で使用するために、AWS や GCP などのクラウド プラットフォームにアプリケーションを展開します。

以上がFastAPI と機械学習を使用したリアルタイムのクレジット カード不正検出システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。