Con el aprendizaje automático, necesita una gran cantidad de datos, por lo que a veces tiene sentido combinar datos reales con datos simulados para encontrar los patrones correctos en los datos o para crear modelos.

El límite central dice que cuanto mayor sea el tamaño del conjunto de datos, mejor, ya que la media de la población se aproxima a la media de la muestra cuando el tamaño de la muestra se vuelve realmente grande. Al generar copias replicadas del conjunto de datos de la muestra, podemos estimar la media de la muestra en diferentes poblaciones para garantizar que el valor medio sea estable. También podemos estimar la varianza (incertidumbre) en la predicción del valor medio.

Para simular datos de una muestra dada, necesitamos ser capaces de identificar patrones en los datos de la muestra y también tener algún conocimiento sobre las características y cómo se distribuyen. Por ejemplo, si tengo una pequeña muestra de alturas masculinas, y sé que las alturas siguen una distribución normal, podría generar un conjunto de datos de alturas masculinas utilizando lo siguiente:

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

En este artículo se explicará cómo se puede utilizar la simulación de Monte Carlo (MC) para generar copias replicadas aproximadas del conjunto de datos de muestra. A continuación, se entrena cada uno de estos bloques de conjuntos de datos. Luego, el rendimiento general del modelo se calcula realizando un promedio de conjunto sobre los bloques de datos, incluidos los datos reales y simulados.

Introducción: Predecir el estado de un préstamo es un problema importante en la evaluación de riesgos. Un banco u organización financiera tiene que ser capaz de estimar el riesgo involucrado antes de conceder un préstamo a un cliente. La ciencia de datos y el análisis predictivo desempeñan un papel importante en la creación de modelos que se pueden utilizar para predecir la probabilidad de impago de préstamos. En este proyecto, se nos proporciona el tiempo de préstamo.conjunto de datos csv que contiene 50000 puntos de datos. Cada punto de datos representa un préstamo, y se proporcionan dos características de la siguiente manera:

  1. La columna con el encabezado «días desde el origen» indica el número de días transcurridos entre el origen y la fecha en que se recopilaron los datos.
  2. Para préstamos que se cobraron antes de que se recopilaran los datos, la columna con el encabezado «días desde el origen hasta el cobro» indica el número de días transcurridos entre el origen y el cobro. Para todos los demás préstamos, esta columna está en blanco.

Definición de Términos técnicos

  1. Originación: Se refiere a la fecha en que un prestatario recibe un préstamo de un prestamista.
  2. Estado de cancelación de cargo (impago del préstamo) : El prestatario luego hace reembolsos regulares, hasta que el prestatario deja de hacer pagos, generalmente debido a dificultades financieras, antes del final del plazo del préstamo. Este evento se llama charge-off, y luego se dice que el préstamo se ha cargado o en estado de incumplimiento.
  3. Estado actual o activo: El prestatario continúa haciendo reembolsos durante todo el plazo del préstamo. En este punto, la deuda ha sido totalmente pagada.
  4. Plazo del préstamo: Período durante el cual está en vigor un acuerdo de préstamo, y antes o al final del cual el préstamo debe reembolsarse o renegociarse para otro plazo. En este ejemplo, consideramos un préstamo con un plazo o duración de 3 años.

Objetivo del proyecto: El objetivo de este proyecto es utilizar técnicas de ciencia de datos para estimar qué fracción de estos préstamos (50,000 registros de clientes en el tiempo de préstamo.conjunto de datos csv) se cobrará durante el plazo del préstamo de 3 años.

El conjunto de datos y el código R de este artículo se pueden descargar de este repositorio: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Importar Bibliotecas necesarias

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

Importar Conjuntos de datos y Preparar Datos para su Análisis

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)

Análisis de Datos Exploratorios

A) Datos Reales

# 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) Datos Simulados

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

Simulación real y MC de los días hasta la recarga frente a los días desde el origen.

Debido a que hay aleatoriedad asociada con el cobro de un préstamo, vemos que la simulación MC proporciona una buena aproximación para la distribución de préstamos en mora.

Predicciones: Dado que hemos demostrado que la relación entre los días a la carga y los días desde la creación en los primeros 2 años (es decir, de 0 a 730 días) se puede aproximar utilizando una simulación de MC, podemos predecir la fracción de préstamos que se cobrarán cuando todos sus plazos de 3 años finalicen utilizando la simulación de MC.

El número total de préstamos con cargo en nuestro conjunto de datos es de 3305. Esto significa que actualmente hay 46.695 préstamos activos. De estos préstamos activos, una cierta proporción incumplirá durante el período de 3 años. Para estimar la fracción total de préstamos en mora, simulamos préstamos en mora con cargo y días desde la originación que cubren toda la duración del préstamo (es decir, de 0 a 1095 días), luego, mediante la escala adecuada, calculamos la fracción de préstamos que se habrán cobrado después del plazo de 3 años, es decir, 1095 días.

# 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

Al crear N = 1000 ensayos aleatorios, obtuvimos la siguiente distribución para la fracción de préstamos impagados a plazo de 3 años:

Gráfico 6: Histograma para fracción de préstamos con cargo después de un plazo de 3 años utilizando N = 1000 muestras.

Según nuestros cálculos, el intervalo de confianza del 95% para la fracción de préstamos que se habrán cobrado después de la duración del préstamo de 3 años es, en consecuencia, del 14,8% + / -0,2%. Por lo tanto, si se otorgaran 50,000 préstamos con un plazo de préstamo de 3 años, aproximadamente el 15% de estos préstamos fallarán.

Conclusiones: Hemos presentado un modelo sencillo basado en la simulación MC para predecir la fracción de préstamos que incumplirán al final del período de duración del préstamo de 3 años. La simulación de Monte Carlo es un método importante que se puede utilizar en el análisis prescriptivo para el curso de acción de prescripción que se debe tomar en casos en los que el conjunto de datos es de naturaleza muy estocástica.

El conjunto de datos y el código R de este artículo se pueden descargar de este repositorio: https://github.com/bot13956/Monte_Carlo_Simulation_Loan_Status.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

lg