Το επιλεγμένο dataset είναι ένα συνθετικό σύνολο δεδομένων που περιλαμβάνει προσωπικά, οικονομικά και πιστωτικά χαρακτηριστικά αιτούντων δανείου. Σκοπός του είναι η ανάλυση και πρόβλεψη της έγκρισης ή απόρριψης δανείων, καθώς και η αξιολόγηση της πιστοληπτικής ικανότητας των αιτούντων, βοηθώντας στη λήψη τεκμηριωμένων αποφάσεων από χρηματοπιστωτικούς οργανισμούς.
Πηγή δεδομένων:https://www.kaggle.com/datasets/taweilo/loan-approval-classification-data
Η συγκεκριμένη βάση δεδομένων συγκεντρώνει μεταβλητές που σχετίζονται με:
✅ Δημογραφικά χαρακτηριστικά (π.χ. ηλικία, φύλο, επίπεδο εκπαίδευσης)
✅ Οικονομικά στοιχεία (π.χ. ετήσιο εισόδημα, εμπειρία εργασίας, κατοχή κατοικίας)
✅ Στοιχεία δανείου (π.χ. ποσό δανείου, σκοπός, επιτόκιο, ποσοστό δανείου ως προς το εισόδημα)
✅ Πιστωτικό ιστορικό (π.χ. διάρκεια πιστωτικού ιστορικού, πιστωτική βαθμολογία, προηγούμενες αθετήσεις πληρωμών)
✅ Κατάσταση αίτησης δανείου (εγκεκριμένο ή απορριφθέν)
Το 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 για επεξεργασία.
library(readr)
loan <- read.csv("loan_data.csv")
Το 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) είναι οι εξής:
p-value: 0.0295
Όσο αυξάνεται το εισόδημα, αυξάνεται η πιθανότητα για loan_status = 1.
p-value: < 2e-16
Αρνητική συσχέτιση: οι ιδιοκτήτες έχουν μικρότερη πιθανότητα για loan_status = 1.
p-value: < 2e-16
Θετική συσχέτιση: οι ενοικιαστές έχουν μεγαλύτερη πιθανότητα για loan_status = 1.
p-value: < 2e-16
Αρνητική συσχέτιση: όσο μεγαλύτερο το ποσό, τόσο μικρότερη η πιθανότητα για loan_status = 1.
p-value: < 2e-16
Αρνητική συσχέτιση: τα δάνεια για εκπαίδευση εγκρίνονται δυσκολότερα.
p-value: 0.000183
Αρνητική συσχέτιση: τα ιατρικά δάνεια έχουν μικρότερη πιθανότητα έγκρισης.
p-value: < 2e-16
Αρνητική συσχέτιση: τα προσωπικά δάνεια έχουν μειωμένη πιθανότητα έγκρισης.
p-value: < 2e-16
Ισχυρά αρνητική συσχέτιση: τα επιχειρηματικά δάνεια έχουν πολύ χαμηλή πιθανότητα έγκρισης.
p-value: < 2e-16
Θετική συσχέτιση: όσο μεγαλύτερο το επιτόκιο, τόσο μεγαλύτερη η πιθανότητα loan_status = 1.
p-value: < 2e-16
Πολύ ισχυρή θετική συσχέτιση: όσο μεγαλύτερο το ποσοστό του δανείου σε σχέση με το εισόδημα, τόσο αυξάνεται η πιθανότητα loan_status = 1.
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 με την εντολή 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.