Projects

Selected projects illustrating how machine learning supports real business decisions.

Credit Risk Scoring — Business Decision Thresholds

From ML probability to actionable credit decisions

A production-ready credit risk scoring system where a machine learning model estimates the probability of default (P(bad)), and a business decision layer converts this risk into ACCEPT / REVIEW / REJECT.

The focus is not on optimizing a single model metric, but on translating risk scores into explicit, auditable business decisions. Model performance matters only insofar as it supports stable decision thresholds, explainability, and safe deployment in regulated environments.

  • Dataset: OpenML credit-g
  • Model: Logistic Regression
  • ROC AUC ≈ 0.78
  • Business decision thresholds
  • Deployed on Google Cloud Run

Key business-oriented metrics

  • Recall on risky customers (bad) — priority given to detecting high-risk cases to avoid costly undetected defaults.
  • False negatives (FN) — risky applicants wrongly accepted. This metric is intentionally minimized.
  • False positives (FP) — solvent customers rejected or sent to manual review, representing a controlled opportunity cost.
  • Weighted business cost — decision thresholds are selected to minimize a global cost reflecting asymmetric business risks.
  • Explicit decision zones — clear separation between ACCEPT, REVIEW and REJECT to reduce manual workload while preserving business control.

What this project demonstrates

  • Business-oriented ML design — the model is not an end in itself; it supports a clear decision process (ACCEPT / REVIEW / REJECT).
  • Interpretable modeling choices — logistic regression selected deliberately for stability, explainability, and regulatory contexts.
  • Decision thresholds over raw scores — translating probabilities into actionable business rules.
  • Production mindset — containerized application, CI/CD, cloud deployment, health checks, and smoke tests.
  • Clear separation of concerns — data, model, business logic, API, and UI are intentionally decoupled.