Óscar Romero Quincoces

Projects / Master's coursework

Explainable credit

Credit decisions audited with SHAP and LIME

2026MIAX master's, Instituto BME
Expected cost against the decision threshold when a bad loan costs ten times more
Figure 1. Expected cost against the decision threshold when a bad loan costs ten times more

Summary

A credit-approval model under two cost scenarios, audited with SHAP, LIME, counterfactuals and a surrogate tree. When approving a bad payer costs ten times more than turning down a good one, choosing the threshold by expected cost cut the cost by 51%. XGBoost won in both scenarios. Team of 3.

The task

Build, audit and tune a credit-approval model under two cost scenarios: one symmetric, and one where approving a bad payer costs ten times more than turning down a good one. Logistic regression, XGBoost, two Keras networks and a LinUCB bandit of our own were compared with leak-free cross-validation, and the threshold was chosen by expected cost. XGBoost won in both scenarios.

The audit

A surrogate tree with readable rules, counterfactuals that explain to a rejected client what would have to change, global and local SHAP, and, beyond what was asked, permutation importance, PDP and ICE, LIME measured against SHAP for stability, and age subgroups. In the 10-to-1 scenario, choosing the threshold by expected cost cut the cost by 51%.

Figures

Global SHAP importance in the 10:1 cost scenario
Figure 2. Global SHAP importance in the 10:1 cost scenario
LIME and SHAP on a denied application: same direction, but LIME changes between runs
Figure 3. LIME and SHAP on a denied application: same direction, but LIME changes between runs
Partial dependence of age and 30–59-day arrears, in both scenarios
Figure 4. Partial dependence of age and 30–59-day arrears, in both scenarios

Built with

PythonXGBoostSHAPLIMEDiCEscikit-learnKeras