Decifrare i ‘Rifiutati’: La Mia Strategia ‘Divide et Impera’ per un Credit Scoring Più Intelligente
Ciao a tutti! Oggi voglio parlarvi di una sfida che mi appassiona da tempo nel mondo della finanza e, in particolare, del credit scoring. Sapete, quel processo che le banche usano per decidere se concedervi o meno un prestito? Ecco, per anni mi sono scontrato con un problema bello grosso: la maggior parte dei modelli di credit scoring impara solo dai clienti “accettati”. E tutti quelli che vengono rifiutati? Finiti nel dimenticatoio, o quasi. Questo, amici miei, si chiama sample selection bias, un bel grattacapo che può portare a stime sballate e decisioni non proprio ottimali.
Pensateci un attimo: se costruisco un modello basandomi solo su chi ha già ottenuto un prestito e l’ha rimborsato (o meno), come faccio a sapere se tra i “rifiutati” c’era qualcuno che invece sarebbe stato un buon pagatore? È un po’ come voler giudicare la bravura di tutti i calciatori guardando solo le partite della Serie A e ignorando completamente le serie minori o i campionati esteri. Si rischia di perdere dei talenti, no?
Il Problema dei “Rifiutati” Ignorati
Questo “bias di selezione” non è cosa da poco. Porta a modelli con parametri distorti, che magari sottostimano il rischio di insolvenza e, di conseguenza, impattano sulla capacità delle banche di fare profitti in modo sano. E non solo: si sprecano informazioni preziose e si restringe inutilmente la base di potenziali clienti. Insomma, un bel pasticcio.
Per cercare di metterci una pezza, nel tempo sono nate diverse strategie di Reject Inference (RI). L’idea di base è: proviamo a “inferire”, cioè a stimare, come si sarebbero comportati i richiedenti rifiutati se fossero stati accettati, e poi usiamo queste stime per migliorare i nostri modelli. Figo, no? Peccato che molti metodi tradizionali di RI trattino tutti i “rifiutati” come se fossero un blocco unico, ignorando le loro differenze interne, le caratteristiche locali e i pattern di default specifici di certi gruppi. È come dare la stessa medicina a tutti, senza guardare i sintomi specifici di ogni paziente.
La Mia Idea: “Divide et Impera” con SAIL
Ed è qui che, dopo notti insonni e fiumi di caffè, mi è venuta l’illuminazione! Ho pensato: perché non adottare un approccio “divide et impera”? Invece di trattare la massa dei rifiutati come un tutt’uno, perché non suddividerla in gruppi più piccoli e omogenei, per poi applicare strategie di “ri-etichettatura” più mirate? Da questa idea è nato SAIL, un framework di RI che sfrutta l’apprendimento semi-supervisionato basato su grafi. Un nome che è tutto un programma, e che sta per:
- Spectral clustering: per prima cosa, raggruppiamo sia i richiedenti accettati che quelli rifiutati in cluster omogenei, basandoci sulle loro somiglianze. È come creare delle “tribù” di persone con caratteristiche simili.
- Anomaly detection (con Isolation Forests): una volta formati i gruppi, andiamo a caccia di “anomalie” tra i rifiutati di ogni cluster. Eliminiamo quelli troppo strani, troppo diversi dagli accettati (che potrebbero solo confondere il modello), ma anche quelli troppo simili (che aggiungerebbero poco valore). Una bella pulizia selettiva!
- Iterative relabelling (con Label Spreading e self-learning): ora viene il bello! Per i rifiutati “filtrati”, usiamo un meccanismo iterativo per assegnare loro un’etichetta (pagatore/non pagatore). Si parte dalle certezze (gli accettati) e, un po’ come si diffonde un’etichetta in un social network (Label Spreading), si propagano le informazioni ai vicini, con il modello che impara e si auto-corregge (self-learning).
- Learning (classificazione binaria): infine, con il nostro dataset arricchito e ri-etichettato, addestriamo i classici modelli di classificazione per predire il rischio di default.
L’obiettivo? Sfruttare al meglio le informazioni nascoste nei dati, identificare i richiedenti rifiutati “di valore” e, alla fine, rendere i modelli di credit scoring più robusti e precisi. Credo fermamente che questo approccio possa fare la differenza, perché per la prima volta, che io sappia, si applica una strategia di “divide et impera” alla ri-etichettatura dei rifiutati usando tecniche basate su grafi. È un po’ come passare da una mappa generale a tante mappe dettagliate per ogni quartiere della città.
Ma Funziona Davvero? Mettiamolo alla Prova!
Le idee sono belle, ma servono i fatti. Così, ho messo le mani su un dataset di prestiti reali, fornito da una banca commerciale europea. Parliamo di circa 2100 richieste rifiutate e 3600 accettate, con dati che vanno da febbraio 2018 a febbraio 2021. Un bel banco di prova!
Ho diviso i dati accettati: una parte per l’addestramento (il training set) e una per la verifica finale (il test set). Poi, ho applicato il mio framework SAIL per “inferire” l’esito dei prestiti rifiutati. La prima fase, lo spectral clustering, mi ha permesso di identificare 5 cluster ottimali. È stato affascinante vedere come, visualizzando i dati con una tecnica chiamata t-SNE, i “cattivi pagatori” (defaulters) tra gli accettati tendessero a concentrarsi in specifiche aree, e come i cluster riuscissero a catturare queste diverse “densità di rischio”. Ad esempio, il tasso di default generale negli accettati era del 2.04%, ma in due dei miei cluster saliva al 6.67% e al 3.46%! Questo mi ha confermato che dividere era la strada giusta.
Poi, via con gli isolation forests per scovare ed eliminare le anomalie in ogni cluster. È fondamentale non “sporcare” il modello con dati troppo strani o, al contrario, troppo banali. Infine, il cuore pulsante: l’etichettatura iterativa. Immaginate un processo paziente in cui, passo dopo passo, si assegnano le etichette ai rifiutati più “promettenti”, quelli su cui il modello ha più confidenza, per poi usare queste nuove informazioni per affinare ulteriormente le stime sugli altri. Un circolo virtuoso!
I Risultati Parlano Chiaro
E i risultati? Beh, lasciatemi dire che sono stati entusiasmanti! Ho confrontato le performance di SAIL con il classico modello basato solo sugli accettati (“Acpt-Only”) e con altre cinque tecniche di RI piuttosto note (come Augmentation, Fuzzy Augmentation, Extrapolation, Self-learning classico e RI-BSLS). Ho usato diverse metriche di valutazione (AUC, H-measure, KS statistic) e vari modelli di machine learning (Logistic Regression, XGBoost, LightGBM, SVM, MLP).
Il mio SAIL ha costantemente superato il modello “Acpt-Only”. Prendiamo XGBoost, un cavallo di battaglia: l’AUC medio è migliorato di circa 0.058, l’H-measure di 0.058 e il KS di 0.065. Non male, vero? Ma la vera soddisfazione è stata vedere che SAIL ha spesso fatto meglio anche delle altre tecniche di RI. Ad esempio, con il classificatore MLP, SAIL ha raggiunto l’AUC più alto, ben 0.696. Alcuni metodi RI più datati, come Fuzzy Augmentation e Self-learning tradizionale, hanno addirittura peggiorato le cose rispetto al non fare nulla, probabilmente perché introducono troppo “rumore” trattando tutti i rifiutati indiscriminatamente.
Anche variando il rapporto tra richieste accettate e rifiutate nel dataset, SAIL ha mantenuto la sua superiorità o si è comportato in modo comparabile ai migliori benchmark, dimostrando una buona adattabilità. Ho anche usato una metrica chiamata “kickout measure”, che cerca di valutare l’efficacia dell’RI senza conoscere l’esito reale dei rifiutati. Anche qui, SAIL si è difeso egregiamente, mostrando una buona stabilità.
Ogni Pezzo del Puzzle Conta: Gli Studi di Ablazione
Ma la vera domanda è: ogni pezzo di questo puzzle SAIL è davvero necessario? Per capirlo, ho condotto degli “studi di ablazione”. In pratica, ho provato a togliere uno alla volta i componenti chiave del framework (spectral clustering, isolation forest, self-learning) per vedere l’impatto sulle performance. È un po’ come smontare un motore per capire a cosa serve ogni singolo ingranaggio.
I risultati? Hanno confermato che ogni componente di SAIL gioca un ruolo cruciale. Il framework completo ha sempre superato le sue versioni “azzoppate”. E sapete qual è stato il componente la cui assenza si è fatta sentire di più? Gli isolation forests usati per filtrare i rifiutati! Toglierli ha causato il calo di performance più significativo. Questo sottolinea quanto sia importante “pulire” i dati prima di tentare di ri-etichettarli. Non basta dividere, bisogna anche selezionare con cura!
Per essere ancora più sicuro, ho fatto dei test statistici (Friedman e Nemenyi) che hanno confermato: le differenze di performance tra SAIL e gli altri metodi (incluse le sue varianti “ablate”) non sono dovute al caso. SAIL si è piazzato costantemente tra i migliori, superando significativamente alcuni approcci più datati.
Cosa Significa Tutto Questo per il Mondo Reale?
Al di là dei numeri e dei grafici, credo che questo lavoro abbia implicazioni importanti. Per le istituzioni finanziarie, capire meglio la distribuzione interna delle richieste di credito precedentemente rifiutate può portare a decisioni molto più informate. Significa non trascurare potenziali clienti meritevoli solo perché si usa un approccio “taglia unica”.
Immaginate banche che possono offrire soluzioni finanziarie personalizzate a diversi gruppi di clienti, migliorando la soddisfazione del cliente e, al contempo, la propria performance finanziaria. Il mio SAIL potrebbe essere uno strumento prezioso per migliorare i processi di approvazione del credito, aiutare nello sviluppo di sistemi di scoring interni più raffinati, identificare meglio le caratteristiche dei clienti e persino bilanciare meglio profitti e perdite.
Limiti e Prossimi Passi (Perché la Ricerca Non Finisce Mai!)
Ovviamente, come ogni ricerca, anche questa ha i suoi limiti. Attualmente, il mio framework SAIL è pensato per funzionare al meglio quando i dati mancanti (cioè l’esito dei prestiti rifiutati) sono “missing at random” (MAR). In pratica, si assume che la probabilità di essere accettati dipenda solo dalle caratteristiche osservabili del richiedente. Nella realtà, a volte le decisioni di prestito possono essere influenzate da fattori non esplicitamente catturati nei dati (ad esempio, l’impressione soggettiva del funzionario di banca), portando a meccanismi “missing not at random” (MNAR). Adattare SAIL a scenari MNAR è sicuramente una sfida interessante per il futuro.
Inoltre, il mio studio si basa su un dataset di dimensioni discrete. Sarebbe fantastico poter validare SAIL su dataset ancora più grandi e con più variabili. E poi c’è la questione dell’efficienza computazionale: il meccanismo di etichettatura iterativa può essere un po’ pesante. Esplorare metodi più snelli è un’altra direzione promettente.
Nonostante queste sfide, sono convinto che gli algoritmi basati su grafi abbiano un potenziale enorme per rivoluzionare il campo del reject inference nel credit scoring. E il mio viaggio con SAIL è appena iniziato!
Spero che questa mia avventura nel mondo del credit scoring vi abbia incuriosito. È un campo in continua evoluzione, e ogni piccolo passo avanti può avere un grande impatto su come le istituzioni finanziarie prendono decisioni cruciali. Chissà quali altre scoperte ci riserva il futuro!
Fonte: Springer