Ausfallwahrscheinlichkeit vorhersagen

Kreditrisikomodellierung in Python

Michael Crabtree

Data Scientist, Ford Motor Company

Koeffizienten der logistischen Regression

# Modell-Intercept
array([-3.30582292e-10])
# Koeffizienten für ['loan_int_rate','person_emp_length','person_income']
array([[ 1.28517496e-09, -2.27622202e-09, -2.17211991e-05]])

Formel für die Ausfallwahrscheinlichkeit mit logistischer Regression

# Ausfallwahrscheinlichkeit berechnen
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)))
Kreditrisikomodellierung in Python

Koeffizienten interpretieren

# Intercept
intercept = -1.02
# Koeffizient für Beschäftigungsdauer
person_emp_length_coef = -0.056
  • Pro +1 Jahr bei person_emp_length sinkt die Ausfallwahrscheinlichkeit
Kreditrisikomodellierung in Python

Koeffizienten interpretieren

# Intercept
intercept = -1.02
# Koeffizient für Beschäftigungsdauer
person_emp_length_coef = -0.056
  • Pro +1 Jahr bei person_emp_length sinkt die Ausfallwahrscheinlichkeit
intercept person_emp_length value * coef probability of default
-1.02 10 (10 * -0.06) .17
-1.02 11 (11 * -0.06) .16
-1.02 12 (12 * -0.06) .15
Kreditrisikomodellierung in Python

Nicht numerische Spalten nutzen

  • Numerisch: loan_int_rate, person_emp_length, person_income

  • Nicht numerisch:

    cr_loan_clean['loan_intent']
    
EDUCATION            
MEDICAL              
VENTURE              
PERSONAL             
DEBTCONSOLIDATION   
HOMEIMPROVEMENT
  • Führt in Python zu Fehlern in ML-Modellen, wenn nicht verarbeitet
Kreditrisikomodellierung in Python

One-Hot-Encoding

  • Einen String als Zahl darstellen

Beispiel für loan intent in den Daten

Kreditrisikomodellierung in Python

One-Hot-Encoding

  • Einen String als Zahl darstellen
  • 0 oder 1 in neuer Spalte column_VALUE

Beispiel für One-Hot-Encoding der Spalte loan intent

Kreditrisikomodellierung in Python

get_dummies

  • Nutze get_dummies() in pandas
# Numerische Spalten trennen
cred_num = cr_loan.select_dtypes(exclude=['object'])
# Nicht numerische Spalten trennen
cred_cat = cr_loan.select_dtypes(include=['object'])
# Nur nicht numerische Spalten one-hot encoden
cred_cat_onehot = pd.get_dummies(cred_cat)
# Numerische mit encodeten Spalten vereinen
cr_loan = pd.concat([cred_num, cred_cat_onehot], axis=1)
Kreditrisikomodellierung in Python

Die (wahrscheinliche) Zukunft vorhersagen

  • Verwende die Methode .predict_proba() in scikit-learn
# Modell trainieren
clf_logistic.fit(X_train, np.ravel(y_train))
# Mit dem Modell vorhersagen
clf_logistic.predict_proba(X_test)
  • Erstellt ein Array mit Ausfallwahrscheinlichkeiten
# Wahrscheinlichkeiten: [[kein Ausfall, Ausfall]]
array([[0.55, 0.45]])
Kreditrisikomodellierung in Python

Lass uns üben!

Kreditrisikomodellierung in Python

Preparing Video For Download...