med maskininlärning behöver du mycket data, så ibland är det vettigt att kombinera faktiska data med simulerade data för att hitta rätt mönster i data eller för modellbyggnad.

Central gräns säger att ju större storleken på datauppsättningen desto bättre, eftersom populationsmedel approximerar provmedelvärdet när provstorleken blir riktigt stor. Genom att generera replikerade kopior av provdatauppsättningen kan vi uppskatta provmedelvärdet över olika populationer för att säkerställa att medelvärdet är stabilt. Vi kan också uppskatta variansen (osäkerheten) i förutsägelsen av medelvärdet.

för att simulera data från en given provdata måste vi kunna identifiera mönster i provdata och också ha viss kunskap om funktionerna och hur de distribueras. Till exempel, om jag har ett litet urval av manliga höjder, och jag vet att höjder följer en normalfördelning, jag skulle kunna generera en dataset av manliga höjder med hjälp av följande:

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

denna artikel kommer att diskutera hur Monte-Carlo (MC) simulering kan användas för att generera ungefärliga replikerade kopior av provet dataset. Var och en av dessa block av datamängder tränas sedan. Sedan beräknas modellens övergripande prestanda genom att utföra ett ensemblegenomsnitt över datablocken inklusive faktiska och simulerade data.

Inledning: att förutsäga status för ett lån är ett viktigt problem i riskbedömningen. En bank eller finansiell organisation måste kunna uppskatta risken innan de beviljar ett lån till en kund. Datavetenskap och prediktiv analys spelar en viktig roll för att bygga modeller som kan användas för att förutsäga sannolikheten för lånefall. I det här projektet är vi försedda med loan_timing.csv-dataset som innehåller 50000 datapunkter. Varje datapunkt representerar ett lån, och två funktioner tillhandahålls enligt följande:

  1. kolumnen med rubriken” dagar sedan ursprung ” anger antalet dagar som förflutit mellan ursprung och det datum då data samlades in.
  2. för lån som debiteras innan uppgifterna samlades in anger kolumnen med rubriken ”dagar från ursprung till debitering” antalet dagar som förflutit mellan ursprung och debitering. För alla andra lån är denna kolumn tom.

Definition av tekniska termer

  1. Ursprung: detta hänvisar till det datum då en låntagare får ett lån från en långivare.
  2. Charge-off (lån standard) Status: Låntagaren gör sedan regelbundna återbetalningar tills låntagaren slutar göra betalningar, vanligtvis på grund av ekonomiska svårigheter, före slutet av låneperioden. Denna händelse kallas charge-off, och lånet sägs sedan ha debiterats eller i standardläge.
  3. aktuell eller aktiv Status: låntagaren fortsätter att göra återbetalningar under hela låneperioden. Vid denna tidpunkt har skulden återbetalats fullt ut.
  4. låneperiod: Period under vilken ett låneavtal är i kraft, och före eller i slutet av vilket lånet antingen ska återbetalas eller omförhandlas för en annan löptid. I det här exemplet betraktar vi ett lån med en löptid eller varaktighet på 3 år.

projektmål: målet med detta projekt är att använda tekniker för datavetenskap för att uppskatta vilken bråkdel av dessa lån (50 000 kundregister i loan_timing.csv dataset) kommer att ha debiterats under den 3-åriga låneperioden.

datauppsättningen och r-koden för den här artikeln kan laddas ner från detta arkiv: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

importera nödvändiga bibliotek

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

importera Dataset och förbereda data för analys

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)

Exploratory data Analysis

A) faktiska Data

# 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) simulerade Data

# 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())

faktisk och MC simulering av dagar att ladda-off vs. dagar sedan originering.

eftersom det finns slumpmässighet i samband med charge-off av ett lån, ser vi att MC simulering ger en god approximation för fördelningen av fallerade lån.

förutsägelser: Eftersom vi har visat att förhållandet mellan dagar att debitera och dagar sedan ursprunget under de första 2 åren (dvs 0 till 730 dagar) kan approximeras med hjälp av en MC-simulering, kan vi förutsäga den bråkdel av lån som kommer att debiteras av när alla deras 3-årsperioder är färdiga med MC-simulering.

det totala antalet debiterade lån i vårt dataset är 3 305. Det innebär att det finns 46 695 lån som för närvarande är aktiva. Av dessa aktiva lån kommer en viss andel att falla under 3-årsperioden. För att uppskatta den totala fraktionen av fallerade lån simulerade vi fallerade lån med debitering och dagar sedan ursprung som täcker hela lånets varaktighet (dvs. 0 till 1095 dagar), sedan med lämplig skalning beräknade vi fraktionen av lån som kommer att ha debiterats efter 3-årsperioden, dvs 1095 dagar.

# 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

genom att skapa n = 1000 slumpmässiga försök fick vi följande fördelning för fraktionen av fallerade lån 3-årsperiod:

Figur 6: Histogram för bråkdel av debiterade lån efter 3 års löptid med N = 1000 prover.

baserat på våra beräkningar är 95% konfidensintervallet för den bråkdel av lån som kommer att ha debiterats efter den 3-åriga lånetiden 14.8% +/- 0.2%. Så om 50 000 lån gavs ut med en låneperiod på 3 år kommer cirka 15% av dessa lån att gå i konkurs.

slutsatser: vi har presenterat en enkel modell baserad på MC-simuleringen för att förutsäga den bråkdel av lån som kommer att falla i slutet av den 3-åriga låneperioden. Monte Carlo-simulering är en viktig metod som kan användas i föreskrivande analys för förskrivningsåtgärder som ska vidtas i fall där datasetet är mycket stokastiskt.

datauppsättningen och r-koden för den här artikeln kan laddas ner från detta arkiv: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Lämna ett svar

Din e-postadress kommer inte publiceras.

lg