Con l’apprendimento automatico, hai bisogno di molti dati, quindi a volte ha senso combinare dati reali con dati simulati per trovare i modelli giusti nei dati o per la costruzione del modello.

Il limite centrale dice che maggiore è la dimensione del set di dati migliore è, poiché la media della popolazione approssima la media del campione quando la dimensione del campione diventa veramente grande. Generando copie replicate del set di dati del campione, possiamo stimare la media del campione tra diverse popolazioni per garantire che il valore medio sia stabile. Possiamo anche stimare la varianza (incertezza) nella previsione del valore medio.

Al fine di simulare i dati da un dato campione di dati, abbiamo bisogno di essere in grado di identificare i modelli nei dati di esempio e anche avere una certa conoscenza circa le caratteristiche e come sono distribuiti. Ad esempio, se ho un piccolo campione di altezze maschili e so che le altezze seguono una distribuzione normale, potrei generare un set di dati di altezze maschili usando quanto segue:

mu = mean(male_heights)sd = sd(male_heights)N = 1000simulated_data = rnorm(N, mu,sd)

Questo articolo discuterà come la simulazione Monte-Carlo (MC) può essere utilizzata per generare copie replicate approssimative del set di dati di esempio. Ciascuno di questi blocchi di set di dati viene quindi addestrato. Quindi le prestazioni complessive del modello vengono quindi calcolate eseguendo una media di insieme sui blocchi di dati, inclusi i dati reali e simulati.

Introduzione: Prevedere lo stato di un prestito è un problema importante nella valutazione del rischio. Una banca o un’organizzazione finanziaria deve essere in grado di stimare il rischio prima di concedere un prestito a un cliente. La scienza dei dati e l’analisi predittiva svolgono un ruolo importante nella creazione di modelli che possono essere utilizzati per prevedere la probabilità di default del prestito. In questo progetto, ci viene fornito il loan_timing.set di dati csv contenente 50000 punti dati. Ogni punto dati rappresenta un prestito e due funzionalità sono fornite come segue:

  1. La colonna con l’intestazione “giorni dall’origine” indica il numero di giorni trascorsi tra l’origine e la data in cui i dati sono stati raccolti.
  2. Per i prestiti che sono stati addebitati prima della raccolta dei dati, la colonna con l’intestazione “giorni dall’origine all’addebito” indica il numero di giorni trascorsi tra l’origine e l’addebito. Per tutti gli altri prestiti, questa colonna è vuota.

Definizione dei termini tecnici

  1. Origination: si riferisce alla data in cui un mutuatario riceve un prestito da un prestatore.
  2. Stato di addebito (default prestito) : Il mutuatario effettua quindi rimborsi regolari, fino a quando il mutuatario smette di effettuare pagamenti, in genere a causa di difficoltà finanziarie, prima della fine della durata del prestito. Questo evento è chiamato charge-off, e il prestito è poi detto di aver addebitato off o in stato di default.
  3. Stato attuale o attivo: il mutuatario continua a effettuare rimborsi per l’intera durata del prestito. A questo punto, il debito è stato completamente rimborsato.
  4. Durata del prestito: periodo durante il quale è in vigore un contratto di prestito e prima o alla fine del quale il prestito deve essere rimborsato o rinegoziato per un altro periodo. In questo esempio, consideriamo un prestito con una durata o una durata di 3 anni.

Obiettivo del progetto: L’obiettivo di questo progetto è quello di utilizzare tecniche di data science per stimare quale frazione di questi prestiti (50.000 record di clienti nel loan_timing.csv dataset) verrà addebitato durante la durata del prestito di 3 anni.

Il set di dati e il codice R per questo articolo possono essere scaricati da questo repository: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Importare le Librerie Necessarie

library(readr)
library(tidyverse)
library(broom)
library(caret)

Importare i set di dati e la preparazione dei Dati per l’Analisi

df<-read_csv("loan_timing.csv",na="NA")names(df)=c("origination","chargeoff")# partition data set into two: default (charged off ) and currentindex<-which(!(df$chargeoff=="NA"))default<-df%>%slice(index)current<-df%>%slice(-index)

Analisi Esplorativa dei Dati

A) Dati Effettivi

# Plot of days to charge-off vs. days since origination for defaulted loans using actual datadefault%>%ggplot(aes(origination,chargeoff))+geom_point()+xlab('days since origination')+ ylab('days to charge-off')+ggtitle("days to charge-off vs. days since origination")+theme(plot.title = element_text(color="black", size=12, hjust=0.5, face="bold"),axis.title.x = element_text(color="black", size=12, face="bold"),axis.title.y = element_text(color="black", size=12, face="bold"),legend.title = element_blank())

B) Dati Simulati

# Monte Carlo Simulation of Defaulted Loansset.seed(2)N <- 3*365 # loan duration in daysdf_MC<-data.frame(u=round(runif(15500,0,N)),v=round(runif(15500,0,N)))df_MC<-df_MC%>%filter(v<=u)df_MC<-df_MC%>%filter(u<=730 & v<=730) #select loans within first 2 yearsdf_MC%>%ggplot(aes(u,v))+geom_point()+xlab('days since origination')+ylab('days to charge-off')+ggtitle("MC simulation of days to charge-off vs. days since origination")+theme(plot.title = element_text(color="black", size=12, hjust=0.5, face="bold"),axis.title.x = element_text(color="black", size=12, face="bold"),axis.title.y = element_text(color="black", size=12, face="bold"),legend.title = element_blank())

Effettivo e MC simulazione di giorni di charge-off vs. giorni dall’origine.

Poiché esiste una casualità associata all’addebito di un prestito, vediamo che la simulazione MC fornisce una buona approssimazione per la distribuzione dei prestiti in default.

Previsioni: Poiché abbiamo dimostrato che la relazione tra giorni di addebito e giorni dall’origine nei primi 2 anni (cioè da 0 a 730 giorni) può essere approssimata utilizzando una simulazione MC, possiamo prevedere la frazione dei prestiti che verranno addebitati al termine di tutti i loro termini di 3 anni utilizzando la simulazione MC.

Il numero totale di prestiti addebitati nel nostro set di dati è 3.305. Ciò significa che ci sono 46.695 prestiti che sono attualmente attivi. Di questi prestiti attivi, una certa percentuale sarà di default nel periodo di 3 anni. Per stimare la frazione totale dei prestiti in default, abbiamo simulato i prestiti in default con addebito e giorni dall’origine che coprono l’intera durata del prestito (cioè da 0 a 1095 giorni), quindi con un adeguato ridimensionamento, abbiamo calcolato la frazione di prestiti che avranno addebitato dopo il termine di 3 anni, cioè 1095 giorni.

# Predicting fraction of these loans will have charged off by the time all of their 3-year term is finished.set.seed(2)B<-1000fraction<-replicate(B, {df2<-data.frame(u=round(runif(50000,0,N)),v=round(runif(50000,0,N)))df2<-df2%>%filter(v<=u)b2<-(df2%>%filter(u<=730 & v<=730))total<-(nrow(df2)/nrow(b2))*nrow(default)100.0*(total/50000.0)})
mean(fraction)# Histogram of total fraction of charged off loansfdf<-data.frame(fraction=fraction)fdf%>%ggplot(aes(fraction))+geom_histogram(color="white",fill="skyblue")+xlab('fraction of charged off loans after 3-year term')+ylab('count')+ggtitle("Histogram of total fraction of charged off loans")+theme(
plot.title = element_text(color="black", size=12, hjust=0.5, face="bold"),
axis.title.x = element_text(color="black", size=12, face="bold"),
axis.title.y = element_text(color="black", size=12, face="bold"),
legend.title = element_blank()
)# Calculate Confidence Interval of Percentage of Defaulted Loans after 3-year termmean<-mean(fraction)sd<-sd(fraction)confidence_interval<-c(mean-2*sd, mean+2*sd)confidence_interval

Con la creazione di N = 1000 prove casuali, abbiamo ottenuto la seguente distribuzione per la frazione di default prestiti 3 anni termine:

Figura 6: Istogramma per la frazione dei prestiti addebitati dopo 3 anni utilizzando N = 1000 campioni.

In base ai nostri calcoli, l’intervallo di confidenza del 95% per la frazione di prestiti che verrà addebitato dopo la durata del prestito di 3 anni è di conseguenza 14.8% + / -0.2%. Quindi, se 50.000 prestiti sono stati dati con una durata del prestito di 3 anni, circa il 15% di questi prestiti sarà default.

Conclusioni: Abbiamo presentato un semplice modello basato sulla simulazione MC per predire la frazione di prestiti che andranno in default al termine del periodo di durata del prestito di 3 anni. La simulazione Monte Carlo è un metodo importante che può essere utilizzato nell’analisi prescrittiva per la linea di condotta di prescrizione da adottare nei casi in cui il set di dati è di natura molto stocastica.

Il set di dati e il codice R per questo articolo possono essere scaricati da questo repository: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

lg