El presente script tiene como objetivo abordar ligeramente el proceso de explicación del modelo ajustado (Explanatory model analysis)
” Explanatory Model Analysis for models is whats Exploratory Data Analysis is for Data ”
Model agnostic approach relationship between the input and the output level explanations vs global explanations
library(tidyverse)
library(DALEX)
library(glue)
modelo_1_1_explained = explain(
modelo_1_1,
data = Train,
y = Train$Loan.Status,
label = "Logistic Regression"
)
## Preparation of a new explainer is initiated
## -> model label : Logistic Regression
## -> data : 34209 rows 18 cols
## -> target variable : 34209 values
## -> predict function : yhat.glm will be used ( default )
## -> predicted values : No value for predict function target column. ( default )
## -> model_info : package stats , ver. 4.1.2 , task classification ( default )
## -> predicted values : numerical, min = 0.0001496554 , mean = 0.7941588 , max = 0.9999995
## -> residual function : difference between y and yhat ( default )
## -> residuals : numerical, min = -0.9780313 , mean = -0.001794265 , max = 0.6073983
## A new explainer has been created!
class(modelo_1_1_explained)
## [1] "explainer"
single_observation = Train[sample(1:nrow(Train), 1), ]
print(glue("Id observación {sample(1:nrow(Train), 1)}"))
## Id observación 4733
modelo_1_1_explained %>% predict(single_observation)
## 12601
## 0.8316516
Salida de consola y código no.1 (Prueba para solo una observación aleatoria)
#single_observation = Train[sample(1:nrow(Train), 1), ]
single_observation = Train[8972, ]
modelo_1_1_explained %>% predict(single_observation)
## 8972
## 0.8260226
modelo_1_1_explained %>% predict_parts(new_observation = single_observation) %>% plot(title="Break-Down for single obs with Fully Paid response")
Gráfica no. 1 (Break down para solo una observación con respuesta Fully Paid)
Identificando los perfiles “ceteris paribus” para la observación con respuesta Fully Paid
Gráfica no. 2 (Perfil para solo una observación con respuesta Fully
Paid)
Gráfica no. 3 (Perfil para solo una observación con respuesta Fully
Paid)
Gráfica no. 4 (Perfil para solo una observación con respuesta Fully
Paid)
Gráfica no. 5 (Perfil para solo una observación con respuesta Fully
Paid)
single_observation = Train[11434, ]
modelo_1_1_explained %>% predict(single_observation)
## 11434
## 0.0003637261
modelo_1_1_explained %>% predict(single_observation)
## 11434
## 0.0003637261
modelo_1_1_explained %>% predict_parts(new_observation = single_observation) %>% plot(title="Break-Down for single obs with Charged Off response")
Gráfica no. 6 (Break down para solo una observación con respuesta Fully
Paid)
plot_cf1 = modelo_1_1_explained %>% predict_profile(new_observation = select(single_observation, -c('ID'))) %>% plot(title="Break-Down Charged Off response", variables=c("Annual.Income"))
plot_cf_2 = modelo_1_1_explained %>% predict_profile(new_observation = select(single_observation, -c('ID'))) %>% plot(title="Break-Down Charged Off response", variables=c("Credit.Score"))
plot_cf_3= modelo_1_1_explained %>% predict_profile(new_observation = select(single_observation, -c('ID'))) %>% plot(title="Break-Down Charged Off response", variables=c("Current.Loan.Amount"))
plot_cf_4= modelo_1_1_explained %>% predict_profile(new_observation = select(single_observation, -c('ID'))) %>% plot(title="Break-Down Charged Off response", variables=c("Monthly.Debt"))
Gráfica no. 7 (Perfil para solo una observación con respuesta Charged
off)
Gráfica no. 8 (Perfil para solo una observación con respuesta Charged
off)
Gráfica no. 9 (Perfil para solo una observación con respuesta Charged
off)
Gráfica no. 10 (Perfil para solo una observación con respuesta Charged
off)