dzięki uczeniu maszynowemu potrzeba dużo danych, Więc czasami warto łączyć dane rzeczywiste z danymi symulowanymi, aby znaleźć odpowiednie wzorce w danych lub zbudować model.

Centralna granica mówi, że im większy rozmiar zestawu danych, tym lepiej, jako średnia populacji przybliża średnią próby, gdy wielkość próby staje się naprawdę duża. Generując replikowane kopie przykładowego zestawu danych, możemy oszacować średnią próbkę w różnych populacjach, aby zapewnić, że średnia wartość jest stabilna. Możemy również oszacować wariancję (niepewność) w przewidywaniu wartości średniej.

aby symulować dane z danych próbki, musimy być w stanie zidentyfikować wzorce w danych próbki, a także mieć pewną wiedzę na temat funkcji i sposobu ich dystrybucji. Na przykład, jeśli mam małą próbkę męskich wysokości i Wiem, że wysokości podążają za rozkładem normalnym, mogę wygenerować zestaw danych męskich wysokości za pomocą następujących:

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

w tym artykule omówimy, w jaki sposób można wykorzystać symulację Monte-Carlo (MC) do generowania przybliżonych replikowanych kopii przykładowego zestawu danych. Każdy z tych bloków danych jest następnie szkolony. Następnie oblicza się ogólną wydajność modelu, wykonując średnią całościową dla bloków danych, w tym danych rzeczywistych i symulowanych.

wprowadzenie: Przewidywanie statusu pożyczki jest ważnym problemem w ocenie ryzyka. Bank lub organizacja finansowa musi być w stanie oszacować związane z tym ryzyko przed udzieleniem kredytu klientowi. Analityka danych i analityka predykcyjna odgrywają ważną rolę w budowaniu modeli, które mogą być wykorzystywane do przewidywania prawdopodobieństwa niewypłacalności kredytu. W tym projekcie otrzymujemy loan_timing.zbiór danych csv zawierający 50000 punktów danych. Każdy punkt danych reprezentuje pożyczkę, a dwie funkcje są następujące:

  1. kolumna z nagłówkiem „dni od powstania” wskazuje liczbę dni, które upłynęły między powstaniem a datą zebrania danych.
  2. w przypadku pożyczek, które zostały obciążone przed zebraniem danych, kolumna z nagłówkiem „dni od powstania do obciążenia” wskazuje liczbę dni, które upłynęły między powstaniem a obciążeniem. W przypadku wszystkich pozostałych pożyczek ta kolumna jest pusta.

Definicja terminów technicznych

  1. pochodzenie: odnosi się do daty otrzymania pożyczki od pożyczkodawcy.
  2. : Kredytobiorca dokonuje następnie regularnych spłat, dopóki kredytobiorca nie przestanie dokonywać płatności, zazwyczaj z powodu trudności finansowych, przed końcem okresu kredytowania. To zdarzenie nazywa się charge-off, a następnie mówi się, że pożyczka została pobrana lub w stanie domyślnym.
  3. obecny lub aktywny Status: kredytobiorca kontynuuje spłatę przez cały okres kredytowania. W tym momencie dług został w pełni spłacony.
  4. okres kredytowania: okres, w którym obowiązuje umowa kredytowa, przed lub na końcu którego pożyczka powinna zostać spłacona lub renegocjowana na inny okres. W tym przykładzie rozważamy pożyczkę na okres lub okres 3 lat.

cel projektu: Celem tego projektu jest wykorzystanie technik nauki danych do oszacowania, jaki ułamek tych pożyczek (50,000 rekordy klientów w loan_timing.zestaw danych csv) zostanie pobrany w ciągu 3-letniego okresu kredytowania.

zbiór danych i Kod R dla tego artykułu można pobrać z tego repozytorium: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Importuj niezbędne biblioteki

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

Importuj zbiór danych i przygotuj dane do analizy

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)

Analiza danych eksploracyjnych

A) dane rzeczywiste

# 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) dane Symulowane

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

rzeczywista i MC symulacja dni do ładowania-off vs. dni od powstania.

ponieważ istnieje losowość związana z obciążeniem pożyczki, widzimy, że symulacja MC zapewnia dobre przybliżenie dla podziału niespłaconych pożyczek.

: Ponieważ wykazaliśmy, że zależność między dniami do obciążenia a dniami od momentu powstania w ciągu pierwszych 2 lat (tj. od 0 do 730 dni) może być przybliżona za pomocą symulacji MC, możemy przewidzieć ułamek kredytów, które zostaną obciążone, zanim wszystkie 3-letnie warunki zostaną zakończone za pomocą symulacji MC.

łączna liczba pobranych kredytów w naszym zbiorze danych wynosi 3305. Oznacza to, że obecnie aktywnych jest 46 695 pożyczek. Z tych aktywnych pożyczek pewna część nie będzie się wywiązywać w okresie 3 lat. Aby oszacować całkowity ułamek niespłaconych pożyczek, symulowaliśmy niespłacone pożyczki z obciążeniem i dni od powstania obejmujące cały okres pożyczki (tj. od 0 do 1095 dni), a następnie poprzez odpowiednie skalowanie obliczyliśmy ułamek pożyczek, które zostaną obciążone po 3-letnim okresie, tj. 1095 dni.

# 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

tworząc N = 1000 badań losowych uzyskaliśmy następujący rozkład dla ułamka niespłaconych pożyczek na okres 3 lat:

Rysunek 6: Histogram części pobranych pożyczek po okresie 3 lat z wykorzystaniem N = 1000 próbek.

z naszych obliczeń wynika, że 95% przedział ufności dla części kredytów, które zostaną pobrane po trzyletnim okresie kredytowania, wynosi odpowiednio 14,8% + / – 0,2%. Jeśli więc udzielono 50 000 kredytów z 3-letnim okresem kredytowania, około 15% z tych pożyczek nie zostanie zrealizowanych.

wnioski: przedstawiliśmy prosty model oparty na symulacji MC do przewidywania części kredytów, które nie będą spłacane na koniec 3-letniego okresu kredytowania. Symulacja Monte Carlo jest ważną metodą, która może być stosowana w analizie nakazowej do przepisywania przebiegu działań, które należy podjąć w przypadkach, gdy zbiór danych ma charakter bardzo stochastyczny.

zbiór danych i Kod R dla tego artykułu można pobrać z tego repozytorium: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

lg