Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Membina Sistem Pengesanan Penipuan Kad Kredit Masa Nyata dengan FastAPI dan Pembelajaran Mesin

Membina Sistem Pengesanan Penipuan Kad Kredit Masa Nyata dengan FastAPI dan Pembelajaran Mesin

王林
王林asal
2024-08-13 06:54:33634semak imbas

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

pengenalan

Penipuan kad kredit menimbulkan ancaman besar kepada industri kewangan, yang membawa kepada kerugian berbilion dolar setiap tahun. Untuk memerangi ini, model pembelajaran mesin telah dibangunkan untuk mengesan dan mencegah transaksi penipuan dalam masa nyata. Dalam artikel ini, kami akan melalui proses membina sistem pengesanan penipuan kad kredit masa nyata menggunakan FastAPI, rangka kerja web moden untuk Python dan pengelas Random Forest yang dilatih pada Set Data Pengesanan Penipuan Kad Kredit yang popular daripada Kaggle.

Gambaran Keseluruhan Projek

Matlamat projek ini adalah untuk mencipta perkhidmatan web yang meramalkan kemungkinan transaksi kad kredit menjadi penipuan. Perkhidmatan ini menerima data transaksi, memprosesnya terlebih dahulu dan mengembalikan ramalan bersama-sama dengan kebarangkalian penipuan. Sistem ini direka bentuk agar pantas, berskala dan mudah untuk disepadukan ke dalam sistem kewangan sedia ada.

Komponen Utama

  1. Model Pembelajaran Mesin: Pengelas Hutan Rawak yang dilatih untuk membezakan antara transaksi penipuan dan sah.
  2. Prapemprosesan Data: Penyeragaman ciri transaksi untuk memastikan model berfungsi secara optimum.
  3. API: API RESTful dibina dengan FastAPI untuk mengendalikan permintaan ramalan dalam masa nyata.

Langkah 1: Menyediakan Set Data

Dataset data yang digunakan dalam projek ini ialah Set Data Pengesanan Penipuan Kad Kredit daripada Kaggle, yang mengandungi 284,807 transaksi, yang mana hanya 492 adalah penipuan. Ketidakseimbangan kelas ini menimbulkan cabaran, tetapi ia ditangani dengan melebihkan sampel kelas minoriti.

Prapemprosesan Data

Ciri-ciri pertama diseragamkan menggunakan StandardScaler daripada scikit-learn. Dataset kemudiannya dibahagikan kepada set latihan dan ujian. Memandangkan ketidakseimbangan, teknik RandomOverSampler digunakan untuk mengimbangi kelas sebelum melatih model.

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)

Langkah 2: Melatih Model Pembelajaran Mesin

Kami melatih pengelas Random Forest, yang sangat sesuai untuk mengendalikan set data yang tidak seimbang dan memberikan ramalan yang mantap. Model ini dilatih mengenai data terlebih sampel dan prestasinya dinilai menggunakan ketepatan, ketepatan, ingat semula dan keluk 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]))

Langkah 3: Membina Aplikasi FastAPI

Dengan model terlatih dan penimbang yang disimpan menggunakan joblib, kami terus membina aplikasi FastAPI. FastAPI dipilih untuk kelajuan dan kemudahan penggunaannya, menjadikannya sesuai untuk aplikasi masa nyata.

Mencipta API

Aplikasi FastAPI mentakrifkan titik akhir POST /ramalan/ yang menerima data transaksi, memprosesnya dan mengembalikan ramalan dan kebarangkalian model.

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

Langkah 4: Meletakkan Aplikasi

Untuk menguji aplikasi secara setempat, anda boleh menjalankan pelayan FastAPI menggunakan uvicorn dan menghantar permintaan POST ke titik akhir /predict/. Perkhidmatan ini akan memproses permintaan masuk, menskalakan data dan mengembalikan sama ada transaksi itu adalah penipuan.

Menjalankan API Secara Tempatan

uvicorn main:app --reload

Anda kemudian boleh menguji API menggunakan curl atau alat seperti Posmen:

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 akan mengembalikan objek JSON dengan ramalan penipuan dan kebarangkalian yang berkaitan.

Kesimpulan

Dalam artikel ini, kami telah membina sistem pengesanan penipuan kad kredit masa nyata yang menggabungkan pembelajaran mesin dengan rangka kerja web moden. Pautan github ada di sini. Sistem ini direka bentuk untuk mengendalikan data transaksi masa nyata dan menyediakan ramalan segera, menjadikannya alat yang berharga untuk institusi kewangan yang ingin memerangi penipuan.

Dengan menggunakan model ini menggunakan FastAPI, kami memastikan perkhidmatan itu bukan sahaja pantas tetapi juga berskala, mampu mengendalikan berbilang permintaan secara serentak. Projek ini boleh diperluaskan lagi dengan model yang lebih canggih, kejuruteraan ciri yang dipertingkatkan atau penyepaduan dengan persekitaran pengeluaran.

Langkah Seterusnya

Untuk meningkatkan lagi sistem, pertimbangkan perkara berikut:

  1. Penambahbaikan Model: Eksperimen dengan model yang lebih maju seperti XGBoost atau rangkaian saraf.
  2. Kejuruteraan Ciri: Teroka ciri tambahan yang mungkin meningkatkan ketepatan model.
  3. Penggunaan Dunia Sebenar: Gunakan aplikasi pada platform awan seperti AWS atau GCP untuk kegunaan pengeluaran.

Atas ialah kandungan terperinci Membina Sistem Pengesanan Penipuan Kad Kredit Masa Nyata dengan FastAPI dan Pembelajaran Mesin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Persediaan Persekitaran PythonArtikel seterusnya:Persediaan Persekitaran Python