Porównanie funkcji łącza dla danego punktu odcięcia
W tym ostatnim ćwiczeniu dopasuj model z wykorzystaniem każdej z trzech funkcji łącza (logit, probit i cloglog), wykonaj predykcje dla zbioru testowego, sklasyfikuj wyniki do odpowiedniej grupy (niewywiązanie się ze zobowiązania lub jego brak) dla danego punktu odcięcia, zbuduj macierz pomyłek i oblicz dokładność oraz czułość każdego z modeli! To naprawdę dużo wiedzy w krótkim czasie. Na koniec spróbuj wskazać model, który osiąga najlepszą dokładność przy danym punkcie odcięcia!
Warto wiedzieć, że różnice między modelami będą zazwyczaj bardzo małe, a wyniki zależą od wybranego punktu odcięcia. Obserwowany wynik (niewywiązanie się ze zobowiązania lub jego brak) jest przechowywany w zmiennej true_val w konsoli.
To ćwiczenie jest częścią kursu
Modelowanie ryzyka kredytowego w R
Instrukcje do ćwiczenia
- Dopasuj trzy modele regresji logistycznej, używając odpowiednio funkcji łącza
logit,probiticloglog. Część kodu jest już gotowa. Użyj zmiennychage,emp_cat,ir_catiloan_amntjako predyktorów. - Wykonaj predykcje dla wszystkich modeli na zbiorze
test_set. - Użyj punktu odcięcia wynoszącego 14%, aby sklasyfikować predykcje każdego z modeli i umożliwić ocenę ich wydajności.
- Zbuduj macierz pomyłek dla wszystkich trzech modeli.
- Na koniec oblicz dokładność klasyfikacji dla każdego z trzech modeli.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Fit the logit, probit and cloglog-link logistic regression models
log_model_logit <- glm(loan_status ~ age + emp_cat + ir_cat + loan_amnt,
family = binomial(link = logit), data = training_set)
log_model_probit <-
log_model_cloglog <-
# Make predictions for all models using the test set
predictions_logit <- predict(log_model_logit, newdata = test_set, type = "response")
predictions_probit <-
predictions_cloglog <-
# Use a cut-off of 14% to make binary predictions-vectors
cutoff <- 0.14
class_pred_logit <- ifelse(predictions_logit > cutoff, 1, 0)
class_pred_probit <-
class_pred_cloglog <-
# Make a confusion matrix for the three models
tab_class_logit <- table(true_val,class_pred_logit)
tab_class_probit <-
tab_class_cloglog <-
# Compute the classification accuracy for all three models
acc_logit <- sum(diag(tab_class_logit)) / nrow(test_set)
acc_probit <-
acc_cloglog <-