Περιγραφή του Dataset

Γενική Περιγραφή

Το επιλεγμένο dataset είναι ένα συνθετικό σύνολο δεδομένων που περιλαμβάνει προσωπικά, οικονομικά και πιστωτικά χαρακτηριστικά αιτούντων δανείου. Σκοπός του είναι η ανάλυση και πρόβλεψη της έγκρισης ή απόρριψης δανείων, καθώς και η αξιολόγηση της πιστοληπτικής ικανότητας των αιτούντων, βοηθώντας στη λήψη τεκμηριωμένων αποφάσεων από χρηματοπιστωτικούς οργανισμούς.

Πηγή δεδομένων:https://www.kaggle.com/datasets/taweilo/loan-approval-classification-data

Η συγκεκριμένη βάση δεδομένων συγκεντρώνει μεταβλητές που σχετίζονται με:

✅ Δημογραφικά χαρακτηριστικά (π.χ. ηλικία, φύλο, επίπεδο εκπαίδευσης)

✅ Οικονομικά στοιχεία (π.χ. ετήσιο εισόδημα, εμπειρία εργασίας, κατοχή κατοικίας)

✅ Στοιχεία δανείου (π.χ. ποσό δανείου, σκοπός, επιτόκιο, ποσοστό δανείου ως προς το εισόδημα)

✅ Πιστωτικό ιστορικό (π.χ. διάρκεια πιστωτικού ιστορικού, πιστωτική βαθμολογία, προηγούμενες αθετήσεις πληρωμών)

✅ Κατάσταση αίτησης δανείου (εγκεκριμένο ή απορριφθέν)

Μεταβλητές του Dataset

Το dataset περιλαμβάνει 14 μεταβλητές.

Εξαρτημένη Μεταβλητή: loan_status

🔹Τύπος: Δυαδική (0 = απόρριψη, 1 = έγκριση)

🔹Είναι η μεταβλητή που θέλουμε να προβλέψουμε (αν το δάνειο θα εγκριθεί ή όχι).

Ανεξάρτητες Μεταβλητές: Οι υπόλοιπες 13 μεταβλητές είναι ανεξάρτητες, δηλαδή τα χαρακτηριστικά βάσει των οποίων προβλέπεται η loan_status.

Αναλυτικά παρουσιάζονται στον παρακάτω πίνακα.

Variable Description Variable_Type Variable_Range
person_age Ηλικία ατόμου Αριθμητική(Float) 18 – 100+
person_gender Φύλο Κατηγορική Male, Female
person_education Επίπεδο εκπαίδευσης Κατηγορική High School, College, Graduate
person_income Ετήσιο εισόδημα Αριθμητική(Float) 10,000 – 200,000+
person_emp_exp Έτη επαγγελματικής εμπειρίας Αριθμητική(Float) 0 – 50
person_home_ownership Κατοχή κατοικίας (ενοίκιο, ιδιόκτητο, υποθήκη) Κατηγορική Rent, Own, Mortgage
loan_amnt Ποσό αιτούμενου δανείου Αριθμητική(Float) 1,000 – 50,000+
loan_intent Σκοπός δανείου Κατηγορική Personal, Education, Home Improvement, Medical, etc.
loan_int_rate Επιτόκιο δανείου Αριθμητική(Float) 5.0 – 30.0%
loan_percent_income Ποσοστό δανείου σε σχέση με το εισόδημα Αριθμητική(Float) 0.01 – 1.0
cb_person_cred_hist_length Διάρκεια πιστωτικού ιστορικού (έτη) Αριθμητική(Float) 0 – 30+
credit_score Πιστωτική βαθμολογία Αριθμητική(Integer) 300 – 850
previous_loan_defaults_on_file Ένδειξη προηγούμενων αθετήσεων πληρωμών Κατηγορική Yes, No
loan_status Κατάσταση αίτησης Δυαδική (Integer) 1 = Εγκεκριμένο, 0 = Απορριφθέν



Επεξεργασία Dataset

Εισαγωγή του dataset

Εισάγω τα δεδομένα του dataset για επεξεργασία.

library(readr)
loan <- read.csv("loan_data.csv")

Διαχωρισμός του dataset σε training και testing sets

Το training set είναι το 65% της βάσης και το υπόλοιπο 35% είναι για το testing set.

Πριν διαχωρίσω το dataset ορίζω το ίδιο seed για να εξασφαλιστεί ότι όλα τα sets θα είναι ίδια.

library(caTools)
set.seed(906)

Και στην συνέχεια δημιουργώ τα δύο καινούργια datasets.

split <- sample.split(loan$loan_status,SplitRatio=0.65)

Ονομάζω τα sets ως train και test.

  loanTrain = subset(loan, split==TRUE)
  loanTest = subset(loan, split==FALSE)

Και καταγράφω το πόσες είναι οι καταχωρήσεις σε κάθε set.

  nrow(loanTrain)
## [1] 29250
  nrow(loanTest) 
## [1] 15750

Μοντέλο Λογιστικής Παλινδρόμησης

Παρακάτω δημιουργώ το Μοντέλο Λογιστικής Παλινδρόμησης στο train set στο οποίο περιλαμβάνονται όλες οι ανεξάρτητες μεταβλητές.

  LoanLog <- glm(loan_status ~ person_age + person_gender + person_education + person_income + person_emp_exp + person_home_ownership + loan_amnt + loan_intent + loan_int_rate + loan_percent_income + cb_person_cred_hist_length + credit_score + previous_loan_defaults_on_file, data=loan , family = binomial)
  summary(LoanLog)
## 
## Call:
## glm(formula = loan_status ~ person_age + person_gender + person_education + 
##     person_income + person_emp_exp + person_home_ownership + 
##     loan_amnt + loan_intent + loan_int_rate + loan_percent_income + 
##     cb_person_cred_hist_length + credit_score + previous_loan_defaults_on_file, 
##     family = binomial, data = loan)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                       -3.447e-01  3.594e-01  -0.959  0.33752    
## person_age                         2.476e-02  1.093e-02   2.267  0.02342 *  
## person_gendermale                  3.907e-02  3.540e-02   1.104  0.26979    
## person_educationBachelor          -3.915e-04  4.704e-02  -0.008  0.99336    
## person_educationDoctorate          1.460e-02  1.476e-01   0.099  0.92122    
## person_educationHigh School        1.332e-02  4.914e-02   0.271  0.78634    
## person_educationMaster             3.006e-02  5.624e-02   0.534  0.59303    
## person_income                      5.889e-07  1.969e-07   2.991  0.00278 ** 
## person_emp_exp                    -2.179e-02  9.710e-03  -2.244  0.02485 *  
## person_home_ownershipOTHER         3.383e-01  3.188e-01   1.061  0.28857    
## person_home_ownershipOWN          -1.457e+00  1.018e-01 -14.311  < 2e-16 ***
## person_home_ownershipRENT          7.217e-01  4.007e-02  18.009  < 2e-16 ***
## loan_amnt                         -1.010e-04  3.940e-06 -25.637  < 2e-16 ***
## loan_intentEDUCATION              -9.074e-01  5.851e-02 -15.508  < 2e-16 ***
## loan_intentHOMEIMPROVEMENT        -8.255e-03  6.581e-02  -0.125  0.90018    
## loan_intentMEDICAL                -2.910e-01  5.645e-02  -5.155 2.53e-07 ***
## loan_intentPERSONAL               -7.272e-01  5.994e-02 -12.133  < 2e-16 ***
## loan_intentVENTURE                -1.211e+00  6.359e-02 -19.044  < 2e-16 ***
## loan_int_rate                      3.340e-01  6.574e-03  50.803  < 2e-16 ***
## loan_percent_income                1.581e+01  3.072e-01  51.442  < 2e-16 ***
## cb_person_cred_hist_length        -5.179e-03  9.109e-03  -0.569  0.56967    
## credit_score                      -8.911e-03  4.100e-04 -21.732  < 2e-16 ***
## previous_loan_defaults_on_fileYes -2.037e+01  1.026e+02  -0.198  0.84268    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 47674  on 44999  degrees of freedom
## Residual deviance: 19879  on 44977  degrees of freedom
## AIC: 19925
## 
## Number of Fisher Scoring iterations: 19

Οι μεταβλητές που έχουν ισχυρή στατιστική συσχέτιση με την πιθανότητα έγκρισης δανείου (loan_status) είναι οι εξής:

  1. person_income

p-value: 0.0295

Όσο αυξάνεται το εισόδημα, αυξάνεται η πιθανότητα για loan_status = 1.

  1. person_home_ownershipOWN

p-value: < 2e-16

Αρνητική συσχέτιση: οι ιδιοκτήτες έχουν μικρότερη πιθανότητα για loan_status = 1.

  1. person_home_ownershipRENT

p-value: < 2e-16

Θετική συσχέτιση: οι ενοικιαστές έχουν μεγαλύτερη πιθανότητα για loan_status = 1.

  1. loan_amnt

p-value: < 2e-16

Αρνητική συσχέτιση: όσο μεγαλύτερο το ποσό, τόσο μικρότερη η πιθανότητα για loan_status = 1.

  1. loan_intentEDUCATION

p-value: < 2e-16

Αρνητική συσχέτιση: τα δάνεια για εκπαίδευση εγκρίνονται δυσκολότερα.

  1. loan_intentMEDICAL

p-value: 0.000183

Αρνητική συσχέτιση: τα ιατρικά δάνεια έχουν μικρότερη πιθανότητα έγκρισης.

  1. loan_intentPERSONAL

p-value: < 2e-16

Αρνητική συσχέτιση: τα προσωπικά δάνεια έχουν μειωμένη πιθανότητα έγκρισης.

  1. loan_intentVENTURE

p-value: < 2e-16

Ισχυρά αρνητική συσχέτιση: τα επιχειρηματικά δάνεια έχουν πολύ χαμηλή πιθανότητα έγκρισης.

  1. loan_int_rate

p-value: < 2e-16

Θετική συσχέτιση: όσο μεγαλύτερο το επιτόκιο, τόσο μεγαλύτερη η πιθανότητα loan_status = 1.

  1. loan_percent_income

p-value: < 2e-16

Πολύ ισχυρή θετική συσχέτιση: όσο μεγαλύτερο το ποσοστό του δανείου σε σχέση με το εισόδημα, τόσο αυξάνεται η πιθανότητα loan_status = 1.

  1. credit_score

p-value: < 2e-16

Αρνητική συσχέτιση: όσο μεγαλύτερο το credit score, τόσο μειώνεται η πιθανότητα loan_status = 1.

🔸 Μεταβλητές με πολύ ισχυρή στατιστική σημαντικότητα (p < 0.001 → ***)

person_home_ownershipOWN — p < 2e-16

person_home_ownershipRENT — p < 2e-16

loan_amnt — p < 2e-16

loan_intentEDUCATION — p < 2e-16

loan_intentPERSONAL — p < 2e-16

loan_intentVENTURE — p < 2e-16

loan_int_rate — p < 2e-16

loan_percent_income — p < 2e-16

credit_score — p < 2e-16

🔸 Μεταβλητές με ισχυρή σημαντικότητα (0.001 < p < 0.01 → **)

loan_intentMEDICAL — p = 0.000183

🔸 Μεταβλητές με μέτρια σημαντικότητα (0.01 < p < 0.05 → *)

person_income — p = 0.0295

Σχόλιο

Οι κατηγορικές μεταβλητές μετατράπηκαν σε δυαδικές μορφές, ώστε να χρησιμοποιηθούν στο μοντέλο. Κάθε τιμή συγκρίνεται με μία βασική κατηγορία που δεν εμφανίζεται.

Ο συντελεστής κάθε κατηγορίας δείχνει πώς επηρεάζει την πιθανότητα σε σχέση με τη βασική κατηγορία.

Για παράδειγμα, για την τη μεταβλητή person_home_ownership, η οποία έχει τις εξής τιμές στο dataset:

RENT

OWN

MORTGAGE

OTHER

Στο μοντέλο εμφανίζονται:

person_home_ownershipOWN

person_home_ownershipRENT

person_home_ownershipOTHER

και δεν εμφανίζεται η MORTGAGE, άρα αυτή είναι η βασική κατηγορία.

🔹 Ερμηνεία με βάση το μοντέλο:

person_home_ownershipOWN = -1.385, p < 2e-16

➤ Άτομα που είναι ιδιοκτήτες έχουν σημαντικά μικρότερη πιθανότητα να ανήκουν στην κατηγορία loan_status = 1, σε σύγκριση με όσους έχουν υποθήκη (MORTGAGE).

person_home_ownershipRENT = +0.731, p < 2e-16

➤ Άτομα που νοικιάζουν έχουν μεγαλύτερη πιθανότητα να είναι στην κατηγορία loan_status = 1, σε σύγκριση με άτομα με υποθήκη (MORTGAGE).

person_home_ownershipOTHER = +0.192, p = 0.635 (όχι στατιστικά σημαντικό)

➤ Άτομα με “OTHER” κατηγορία στέγασης δεν διαφέρουν σημαντικά από όσους έχουν υποθήκη.

Πρόβλεψη στο test set

Πραγματοποιούνται προβλέψεις στο test set με την εντολή predict.

  predictTrain <- predict(LoanLog, type='response')
  predictTest <- predict(LoanLog, type='response', newdata = loanTest)
  head(predictTrain)
##            1            2            3            4            5            6 
## 9.919345e-01 2.393359e-10 9.930484e-01 9.601666e-01 9.941268e-01 1.103370e-01
  head(predictTest)
##            1            3            7           16           17           19 
## 9.919345e-01 9.930484e-01 5.853879e-01 2.208053e-11 5.370836e-02 8.015858e-01

Παρατητούμε ότι όλες οι πιθανότητες είναι από [0…1] όπως αναμέναμε.

Μερικά σχόλια για κάποια από τα αποτελέσματα:

PredictTrain

Αυτές οι τιμές είναι πιθανότητες για κάθε παρατήρηση στο σετ εκπαίδευσης.

Οι τιμές όπως 9.93e-01 και 9.94e-01 δείχνουν πολύ υψηλή πιθανότητα (99%) για loan_status=1.

Αντίθετα, τιμές όπως 2.39e-10 ή 1.10e-01 δείχνουν πολύ χαμηλή πιθανότητα για loan_status=1.

Αυτό δείχνει ότι το μοντέλο διαχωρίζει καλά τις περιπτώσεις στο σετ εκπαίδευσης.

PredictTest

Οι τιμές 1 και 3 δείχνουν πάλι υψηλή πιθανότητα για loan_status=1.

Η 7 (0.585) είναι μεσαία – αυτό δείχνει μία αβεβαιότητα.

Η 16 είναι πρακτικά 0 → σχεδόν βέβαιο ότι loan_status=0.

Η 17 είναι επίσης χαμηλή → πιθανό ότι loan_status=0.

Η 19 είναι υψηλή (0.80) → πιθανό ότι loan_status=1.