Prevendo a probabilidade de inadimplência

Modelagem de Risco de Crédito em Python

Michael Crabtree

Data Scientist, Ford Motor Company

Coeficientes da regressão logística

# Intercepto do modelo
array([-3.30582292e-10])
# Coeficientes para ['loan_int_rate','person_emp_length','person_income']
array([[ 1.28517496e-09, -2.27622202e-09, -2.17211991e-05]])

Fórmula da probabilidade de inadimplência com regressão logística

# Calculando a probabilidade de inadimplência
int_coef_sum = -3.3e-10 +
    (1.29e-09 * loan_int_rate) + (-2.28e-09 * person_emp_length) + (-2.17e-05 * person_income)
prob_default = 1 / (1 + np.exp(-int_coef_sum))
prob_nondefault = 1 - (1 / (1 + np.exp(-int_coef_sum)))
Modelagem de Risco de Crédito em Python

Interpretando coeficientes

# Intercepto
intercept = -1.02
# Coeficiente para tempo de emprego
person_emp_length_coef = -0.056
  • A cada +1 ano em person_emp_length, a chance de inadimplir diminui
Modelagem de Risco de Crédito em Python

Interpretando coeficientes

# Intercepto
intercept = -1.02
# Coeficiente para tempo de emprego
person_emp_length_coef = -0.056
  • A cada +1 ano em person_emp_length, a chance de inadimplir diminui
intercepto person_emp_length valor * coef probabilidade de inadimplência
-1.02 10 (10 * -0.06) .17
-1.02 11 (11 * -0.06) .16
-1.02 12 (12 * -0.06) .15
Modelagem de Risco de Crédito em Python

Usando colunas não numéricas

  • Numéricas: loan_int_rate, person_emp_length, person_income

  • Não numéricas:

    cr_loan_clean['loan_intent']
    
EDUCATION            
MEDICAL              
VENTURE              
PERSONAL             
DEBTCONSOLIDATION   
HOMEIMPROVEMENT
  • Vão causar erro em modelos de ML no Python se não forem processadas
Modelagem de Risco de Crédito em Python

One-hot encoding

  • Representa uma string com um número

Exemplo de loan intent nos dados

Modelagem de Risco de Crédito em Python

One-hot encoding

  • Representa uma string com um número
  • 0 ou 1 em uma nova coluna column_VALUE

Exemplo de one-hot encoding da coluna loan intent

Modelagem de Risco de Crédito em Python

Get dummies

  • Use get_dummies() do pandas
# Separe as colunas numéricas
cred_num = cr_loan.select_dtypes(exclude=['object'])
# Separe as colunas não numéricas
cred_cat = cr_loan.select_dtypes(include=['object'])
# One-hot encode só nas colunas não numéricas
cred_cat_onehot = pd.get_dummies(cred_cat)
# Una as numéricas com as one-hot
cr_loan = pd.concat([cred_num, cred_cat_onehot], axis=1)
Modelagem de Risco de Crédito em Python

Prevendo o futuro, provavelmente

  • Use o método .predict_proba() do scikit-learn
# Treine o modelo
clf_logistic.fit(X_train, np.ravel(y_train))
# Preveja com o modelo
clf_logistic.predict_proba(X_test)
  • Cria um array com as probabilidades de inadimplência
# Probabilidades: [[não inadimplente, inadimplente]]
array([[0.55, 0.45]])
Modelagem de Risco de Crédito em Python

Vamos praticar!

Modelagem de Risco de Crédito em Python

Preparing Video For Download...