med maskinlæring, trenger du mye data, så noen ganger er det fornuftig å kombinere faktiske data med simulerte data for å finne de riktige mønstrene i dataene eller for modellbygging.

Sentral grense sier at jo større størrelsen på datasettet jo bedre, da populasjonsgjennomsnittet tilnærmer utvalgsgjennomsnittet når utvalgsstørrelsen blir veldig stor. Ved å generere replikerte kopier av utvalgsdatasettet, kan vi estimere utvalgsgjennomsnittet på tvers av ulike populasjoner for å sikre at middelverdien er stabil. Vi kan også estimere variansen (usikkerhet) i prediksjonen av middelverdien.

for å simulere data fra en gitt utvalgsdata, må vi kunne identifisere mønstre i utvalgsdataene og også ha litt kunnskap om funksjonene og hvordan de distribueres. For eksempel, hvis jeg har et lite utvalg av mannlige høyder, og jeg vet at høyder følger en normal fordeling, kan jeg generere et datasett av mannlige høyder ved å bruke følgende:

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

Denne artikkelen vil diskutere hvordan Monte-Carlo (MC) simulering kan brukes til å generere omtrentlige replikerte kopier av eksempeldatasettet. Hver av disse blokkene av datasett blir deretter trent. Deretter beregnes den generelle ytelsen til modellen ved å utføre et ensemble-gjennomsnitt over datablokkene, inkludert faktiske og simulerte data.

Innledning: Forutsi status for et lån er et viktig problem i risikovurdering. En bank eller finansiell organisasjon må kunne estimere risikoen involvert før du gir et lån til en kunde. Datavitenskap og prediktiv analyse spiller en viktig rolle i å bygge modeller som kan brukes til å forutsi sannsynligheten for lånefeil. I dette prosjektet er vi utstyrt med loan_timing.csv datasett som inneholder 50000 datapunkter. Hvert datapunkt representerer et lån, og to funksjoner er gitt som følger:

  1. kolonnen med overskriften «dager siden opprinnelse» angir antall dager som har gått mellom opprinnelse og datoen da dataene ble samlet inn.
  2. for lån som ble belastet før dataene ble samlet inn, angir kolonnen med overskriften «dager fra originering til charge-off» antall dager som gikk mellom originering og charge-off. For alle andre lån er denne kolonnen tom.

Definisjon Av Tekniske Termer

  1. Opprinnelse: dette refererer til datoen da en låner mottar et lån fra en utlåner.
  2. Charge-off (lån standard) Status: Låntakeren gjør deretter regelmessige tilbakebetalinger, til låntakeren slutter å betale, vanligvis på grunn av økonomisk motgang, før lånets løpetid utløper. Denne hendelsen kalles charge-off, og lånet er da sies å ha belastet av eller i standard tilstand.
  3. Nåværende Eller Aktiv Status: låntakeren fortsetter å gjøre nedbetaling over hele låneperioden. På dette tidspunktet har gjelden blitt fullt tilbakebetalt.
  4. Låneperiode: Periode over hvilken en låneavtale er i kraft, og før eller ved slutten av hvilken lånet enten skal tilbakebetales eller reforhandles for en annen periode. I dette eksemplet vurderer vi et lån med en løpetid eller varighet på 3 år.

Prosjektmål: målet med dette prosjektet er å bruke teknikker for datavitenskap for å estimere hvilken brøkdel av disse lånene (50.000 kunderegistre i loan_timing.csv datasett) vil bli belastet i løpet av 3-års låneperioden.

datasettet Og r-koden for denne artikkelen kan lastes ned fra dette depotet: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Importer Nødvendige Biblioteker

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

Importer Datasett og Klargjør Data For Analyse

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)

Utforskende Dataanalyse

A) Faktiske 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) Simulerte 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 OG MC simulering av dager å lade-off vs dager siden opprinnelsen.

Fordi det er tilfeldighet knyttet til utlading av et lån, ser VI AT MC-simulering gir en god tilnærming for fordelingen av misligholdte lån.

Spådommer: Siden vi har vist at forholdet mellom dager til charge-off og dager siden opprinnelsen i de første 2 årene (dvs. 0 til 730 dager) kan tilnærmes ved HJELP AV EN MC-simulering, kan vi forutsi brøkdel av lån som vil bli belastet av når alle deres 3-årige vilkår er ferdig med MC-simulering.

totalt antall avkrevde lån i vårt datasett er 3.305. Dette betyr at det er 46,695 lån som for tiden er aktive. Av disse aktive lånene vil en viss andel misligholde over 3-årsperioden. For å estimere den totale fraksjonen av misligholdte lån simulerte vi misligholdte lån med avregning og dager siden opprinnelsen dekker hele lånets varighet (dvs. 0 til 1095 dager), og ved passende skalering beregnet vi fraksjonen av lån som vil ha avregnet etter 3-årsperioden, dvs. 1095 dager.

# 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

ved å opprette n = 1000 tilfeldige forsøk, fikk vi følgende fordeling for andelen misligholdte lån 3-års løpetid:

Figur 6: Histogram for fraksjon av avkrevde lån etter 3 års løpetid ved Bruk Av N = 1000 prøver.

basert på våre beregninger er 95% konfidensintervall for andelen lån som vil bli belastet etter 3-års lånevarighet følgelig 14,8% + / – 0,2%. Så hvis 50.000 lån ble gitt ut med en låneperiode på 3 år, vil omtrent 15% av disse lånene misligholde.

Konklusjoner: Vi har presentert en enkel modell basert PÅ MC-simuleringen for å forutsi brøkdel av lån som vil misligholde ved utgangen av 3-års lånevarighetsperioden. Monte Carlo simulering er en viktig metode som kan brukes i prescriptive analytics for forskrivning løpet av handlingen som skal tas i tilfeller der datasettet er svært stokastisk i naturen.

datasettet Og r-koden for denne artikkelen kan lastes ned fra dette depotet: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.

lg