Beim maschinellen Lernen benötigen Sie viele Daten. Daher ist es manchmal sinnvoll, tatsächliche Daten mit simulierten Daten zu kombinieren, um die richtigen Muster in den Daten zu finden oder Modelle zu erstellen.

Die zentrale Grenze besagt, dass je größer der Datensatz ist, desto besser, da der Mittelwert der Grundgesamtheit dem Mittelwert der Stichprobe entspricht, wenn die Stichprobengröße wirklich groß wird. Durch das Generieren replizierter Kopien des Probendatensatzes können wir den Mittelwert der Stichprobe über verschiedene Populationen hinweg schätzen, um sicherzustellen, dass der Mittelwert stabil ist. Wir können auch die Varianz (Unsicherheit) in der Vorhersage des Mittelwerts schätzen.

Um Daten aus bestimmten Beispieldaten zu simulieren, müssen wir in der Lage sein, Muster in den Beispieldaten zu identifizieren und auch einige Kenntnisse über die Funktionen und deren Verteilung zu haben. Wenn ich beispielsweise eine kleine Stichprobe männlicher Höhen habe und weiß, dass Höhen einer Normalverteilung folgen, könnte ich einen Datensatz männlicher Höhen wie folgt generieren:

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

In diesem Artikel wird erläutert, wie die Monte-Carlo-Simulation (MC) zum Generieren ungefährer replizierter Kopien des Beispieldatensatzes verwendet werden kann. Jeder dieser Blöcke von Datensätzen wird dann trainiert. Anschließend wird die Gesamtleistung des Modells berechnet, indem ein Ensemble-Durchschnitt über die Datenblöcke einschließlich tatsächlicher und simulierter Daten durchgeführt wird.

Einleitung: Die Vorhersage des Status eines Kredits ist ein wichtiges Problem bei der Risikobewertung. Eine Bank oder Finanzorganisation muss in der Lage sein, das damit verbundene Risiko einzuschätzen, bevor sie einem Kunden einen Kredit gewährt. Data Science und Predictive Analytics spielen eine wichtige Rolle bei der Erstellung von Modellen, die zur Vorhersage der Wahrscheinlichkeit eines Kreditausfalls verwendet werden können. In diesem Projekt erhalten wir das loan_timing.CSV-Datensatz mit 50000 Datenpunkten. Jeder Datenpunkt stellt ein Darlehen dar, und zwei Funktionen werden wie folgt bereitgestellt:

  1. Die Spalte mit der Überschrift „days since origination“ gibt die Anzahl der Tage an, die zwischen der Erstellung und dem Datum der Datenerfassung verstrichen sind.
  2. Für Kredite, die vor der Datenerfassung belastet wurden, gibt die Spalte mit der Überschrift „Tage von der Entstehung bis zur Belastung“ die Anzahl der Tage an, die zwischen der Entstehung und der Belastung verstrichen sind. Für alle anderen Kredite ist diese Spalte leer.

Definition der Fachbegriffe

  1. Entstehung: Dies bezieht sich auf das Datum, an dem ein Kreditnehmer ein Darlehen von einem Kreditgeber erhält.
  2. Status Abbuchung (Kreditausfall): Der Kreditnehmer leistet dann regelmäßige Rückzahlungen, bis der Kreditnehmer vor Ablauf der Kreditlaufzeit keine Zahlungen mehr leistet, in der Regel aufgrund finanzieller Schwierigkeiten. Dieses Ereignis wird als Charge-off bezeichnet, und das Darlehen soll dann abgebucht worden sein oder sich im Standardzustand befunden haben.
  3. Aktueller oder aktiver Status: Der Kreditnehmer leistet während der gesamten Kreditlaufzeit weiterhin Rückzahlungen. Zu diesem Zeitpunkt sind die Schulden vollständig zurückgezahlt.
  4. Darlehenslaufzeit: Zeitraum, in dem ein Darlehensvertrag in Kraft ist und vor oder nach dessen Ablauf das Darlehen entweder zurückgezahlt oder um eine andere Laufzeit neu verhandelt werden soll. In diesem Beispiel betrachten wir ein Darlehen mit einer Laufzeit oder Dauer von 3 Jahren.

Projektziel: Das Ziel dieses Projekts ist es, Techniken der Datenwissenschaft zu verwenden, um abzuschätzen, welcher Anteil dieser Kredite (50.000 Kundendatensätze im loan_timing.csv-Datensatz) wird während der 3-jährigen Darlehenslaufzeit abgerechnet.

Der Datensatz und der R-Code für diesen Artikel können von diesem Repository heruntergeladen werden: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Notwendige Bibliotheken importieren

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

Datensatz importieren und Daten für die Analyse vorbereiten

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)

Explorative Datenanalyse

A) Tatsächliche Daten

# 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) Simulierte Daten

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

Ist- und MC-Simulation der Tage bis zur Abbuchung im Vergleich zu den Tagen seit der Entstehung.

Da mit der Abbuchung eines Darlehens Zufälligkeit verbunden ist, sehen wir, dass die MC-Simulation eine gute Näherung für die Verteilung von ausgefallenen Darlehen bietet.

Vorhersagen: Da wir gezeigt haben, dass die Beziehung zwischen den Tagen bis zur Abbuchung und den Tagen seit der Entstehung in den ersten 2 Jahren (dh 0 bis 730 Tage) mithilfe einer MC-Simulation angenähert werden kann, können wir den Anteil der Kredite vorhersagen, die bis zum Ende aller 3 Jahre belastet werden Laufzeit ist mit der MC-Simulation abgeschlossen.

Die Gesamtzahl der aufgeladenen Kredite in unserem Datensatz beträgt 3.305. Dies bedeutet, dass derzeit 46.695 Kredite aktiv sind. Von diesen aktiven Krediten wird ein bestimmter Anteil über den Zeitraum von 3 Jahren ausfallen. Um den Gesamtanteil der ausgefallenen Kredite zu schätzen, simulierten wir ausgefallene Kredite mit Abbuchungen und Tagen seit der Entstehung, die die gesamte Laufzeit des Darlehens abdeckten (dh 0 bis 1095 Tage), und berechneten dann durch entsprechende Skalierung den Anteil der Kredite, die nach der Laufzeit von 3 Jahren, dh 1095 Tagen, abgebucht wurden.

# 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

Durch die Erstellung von N = 1000 Zufallsstudien erhielten wir die folgende Verteilung für den Anteil der ausgefallenen Kredite mit einer Laufzeit von 3 Jahren:

Abbildung 6: Histogramm für den Anteil der belasteten Kredite nach 3-jähriger Laufzeit unter Verwendung von N = 1000 Stichproben.

Basierend auf unseren Berechnungen beträgt das 95%-Konfidenzintervall für den Anteil der Kredite, die nach der 3-jährigen Kreditlaufzeit abgebucht werden, entsprechend 14,8% +/- 0,2%. Wenn also 50.000 Kredite mit einer Kreditlaufzeit von 3 Jahren vergeben wurden, werden etwa 15% dieser Kredite ausfallen.

Schlussfolgerungen: Wir haben ein einfaches Modell vorgestellt, das auf der MC-Simulation basiert, um den Anteil der Kredite vorherzusagen, die am Ende der 3-jährigen Kreditlaufzeit ausfallen werden. Die Monte-Carlo-Simulation ist eine wichtige Methode, die in der präskriptiven Analytik für die verschreibende Vorgehensweise in Fällen verwendet werden kann, in denen der Datensatz sehr stochastisch ist.

Der Datensatz und der R-Code für diesen Artikel können von diesem Repository heruntergeladen werden: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

lg