met machine learning heeft u veel gegevens nodig, dus soms is het zinvol om actuele gegevens te combineren met gesimuleerde gegevens om de juiste patronen in de gegevens of voor modelbouw te vinden.

Centrale limiet zegt dat hoe groter de grootte van de dataset des te beter, omdat het populatiegemiddelde het steekproefgemiddelde benadert wanneer de steekproefgrootte echt groot wordt. Door gerepliceerde kopieën van de steekproefgegevensverzameling te genereren, kunnen we het steekproefgemiddelde over verschillende populaties schatten om ervoor te zorgen dat de gemiddelde waarde stabiel is. We kunnen ook de variantie (onzekerheid) in de voorspelling van de gemiddelde waarde schatten.

om gegevens van een gegeven steekproefgegevens te simuleren, moeten we in staat zijn patronen in de steekproefgegevens te identificeren en ook enige kennis hebben over de kenmerken en hoe ze worden verspreid. Bijvoorbeeld, als ik een kleine steekproef van mannelijke hoogtes heb, en ik weet dat hoogtes een normale verdeling volgen, zou ik een dataset van mannelijke hoogtes kunnen genereren met behulp van de volgende:

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

dit artikel bespreekt hoe Monte-Carlo (MC) – simulatie kan worden gebruikt voor het genereren van geschatte gerepliceerde kopieën van de voorbeelddataset. Elk van deze blokken van datasets wordt vervolgens getraind. Vervolgens wordt de algehele prestaties van het model berekend door een ensemblegemiddelde uit te voeren over de gegevensblokken, inclusief werkelijke en gesimuleerde gegevens.

Inleiding: Het voorspellen van de status van een lening is een belangrijk probleem bij de risicobeoordeling. Een bank of financiële organisatie moet het risico kunnen inschatten voordat een lening aan een klant wordt verstrekt. Data Science en predictive analytics spelen een belangrijke rol in het bouwen van modellen die kunnen worden gebruikt voor het voorspellen van de kans op wanbetaling van leningen. In dit project worden we voorzien van de leen_timing.csv-dataset met 50000 gegevenspunten. Elk gegevenspunt vertegenwoordigt een lening, en twee functies worden als volgt verstrekt:

  1. de kolom met kop “dagen sinds de aanmaak” geeft het aantal dagen aan dat is verstreken tussen de aanmaak en de datum waarop de gegevens zijn verzameld.
  2. voor leningen die werden afgeboekt voordat de gegevens werden verzameld, geeft de kolom met kop “dagen van initiatie tot afboeking” het aantal dagen aan dat is verstreken tussen initiatie en afboeking. Voor alle overige leningen is deze kolom leeg.

definitie van technische termen

  1. Oorsprong: dit heeft betrekking op de datum waarop een kredietnemer een lening van een kredietgever ontvangt.
  2. vordering (wanbetaling): De kredietnemer betaalt vervolgens regelmatig terug, totdat de kredietnemer stopt met het verrichten van betalingen, meestal als gevolg van financiële moeilijkheden, voor het einde van de looptijd van de lening. Dit evenement heet charge-off, en de lening wordt dan gezegd te hebben opgeladen uit of in default staat.
  3. huidige of actieve Status: de leningnemer blijft aflossingen doen gedurende de gehele looptijd van de lening. Op dit moment is de schuld volledig terugbetaald.
  4. looptijd van de lening: periode gedurende welke een leningsovereenkomst van kracht is en voor of aan het einde waarvan de lening moet worden terugbetaald of opnieuw moet worden onderhandeld voor een andere looptijd. In dit voorbeeld beschouwen we een lening met een looptijd van 3 jaar.

Projectdoelstelling: het doel van dit project is het gebruik van technieken van data science om te schatten welk deel van deze leningen (50.000 klantenrecords in de lening_timing.csv-dataset) zal in rekening zijn gebracht tijdens de looptijd van de lening van 3 jaar.

de dataset en R-code voor dit artikel kunnen worden gedownload van deze repository: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

noodzakelijke bibliotheken importeren

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

Dataset importeren en gegevens voorbereiden voor 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)

verkennende gegevensanalyse

a) feitelijke gegevens

# 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) gesimuleerde gegevens

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

werkelijke en MC simulatie van dagen om op te laden vs. dagen sinds de oorsprong.

omdat er willekeur is verbonden aan de aflossing van een lening, zien we dat Mc-simulatie een goede benadering biedt voor de verdeling van in gebreke gebleven leningen.

voorspellingen: Aangezien we hebben aangetoond dat de relatie tussen de dagen tot het opladen en de dagen sinds het opladen in de eerste 2 jaar (dat wil zeggen 0 tot 730 dagen) kan worden benaderd met behulp van een MC-simulatie, kunnen we voorspellen welk deel van de leningen zal worden opgeladen tegen de tijd dat al hun 3-jaar termijnen zijn voltooid met behulp van MC-simulatie.

het totale aantal afgeschreven leningen in onze dataset is 3.305. Dit betekent dat er momenteel 46.695 leningen actief zijn. Van deze actieve leningen zal een bepaald deel over de periode van drie jaar in gebreke blijven. Om de totale fractie van in gebreke gebleven leningen te schatten, simuleerden wij in gebreke gebleven leningen met last-off en dagen sinds de oorsprong die de volledige duur van de lening (d.w.z. 0 tot 1095 dagen) omvatten, dan door passende schaling, berekenden wij de fractie van leningen die na de termijn van 3 jaar, d.w.z., 1095 dagen zullen hebben afgeboekt.

# 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

door het creëren van n = 1000 random trials, verkregen we de volgende verdeling voor het deel van de in gebreke gebleven leningen 3-jarige looptijd:

Figuur 6: Histogram voor fractie van afgeschreven leningen na een looptijd van drie jaar met N = 1000 monsters.

op basis van onze berekeningen bedraagt het 95% betrouwbaarheidsinterval voor het gedeelte van de leningen dat na de looptijd van de driejarige lening zal zijn afgeboekt 14,8% + / -0,2%. Dus als 50.000 leningen werden verstrekt met een looptijd van 3 jaar, zal ongeveer 15% van deze leningen in gebreke blijven.

conclusies: We hebben een eenvoudig model gepresenteerd op basis van de MC-simulatie voor het voorspellen van het deel van leningen dat aan het einde van de looptijd van de lening van drie jaar in gebreke zal blijven. Monte Carlo simulatie is een belangrijke methode die kan worden gebruikt in prescriptieve analytics voor de voorschrijvende koers van de actie die moet worden genomen in gevallen waar de dataset is zeer stochastisch van aard.

de dataset en R-code voor dit artikel kunnen worden gedownload van deze repository: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

lg