Applied ML · Fraud Detection

Credit Card Fraud Detection

Aarya Bhivsanee benchmarked Random Forest, AdaBoost and XGBoost on highly imbalanced credit card transaction data, scored by ROC-AUC rather than accuracy. XGBoost led at 0.982, ahead of Random Forest (0.902) and AdaBoost (0.870).

ROC curve comparing three fraud-detection classifiers

Overview

Fraud detection is a textbook imbalanced-classification problem — the interesting cases are a tiny fraction of the data, which makes accuracy a useless metric; a model that never flags fraud is still "99.8% accurate."

Approach

Working from the anonymized, PCA-transformed Kaggle credit card transaction dataset, I benchmarked three classifiers — Random Forest, AdaBoost, and XGBoost — scored by ROC-AUC instead. XGBoost led clearly at 0.982, ahead of Random Forest (0.902) and AdaBoost (0.870).

Results

  • Benchmarked three classifiers — Random Forest, AdaBoost, and XGBoost — on highly imbalanced transaction data, evaluated by ROC-AUC rather than raw accuracy.
  • XGBoost led at 0.982 ROC-AUC, outperforming Random Forest (0.902) and AdaBoost (0.870) at catching fraudulent transactions.
  • Explored anonymized, PCA-transformed transaction features to find what separates fraud from legitimate activity without access to raw transaction meaning.
  • Built interactive Plotly visualizations to make model results and class-imbalance tradeoffs inspectable, not just a single accuracy number.

Because the features are PCA components rather than raw transaction fields, there's no way to reason about them from domain knowledge alone — the exploratory analysis had to lean entirely on the data's statistical structure to find what actually separated fraud from legitimate activity. I built interactive Plotly visualizations around the results so the class-imbalance tradeoffs and model comparisons were something a reader could actually inspect, not just a single accuracy number to take on faith.

Tools

  • Python
  • Random Forest
  • AdaBoost
  • XGBoost
  • Plotly