使用 FastAPI 和機器學習建立即時信用卡詐欺偵測系統

王林
發布: 2024-08-13 06:54:33
原創
546 人瀏覽過

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

介紹

信用卡詐欺對金融業構成重大威脅,每年造成數十億美元的損失。為了解決這個問題,人們開發了機器學習模型來即時偵測和防止詐欺交易。在本文中,我們將逐步介紹使用 FastAPI(Python 的現代 Web 框架)以及在 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 伺服器並向 /predict/ 端點發送 POST 請求。該服務將處理傳入請求、擴展資料並傳回交易是否有詐欺。

本地運行 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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!